/*
- * Copyright (c) 1996, 1998-2005, 2010-2011
+ * Copyright (c) 1996, 1998-2005, 2010-2013
* Todd C. Miller <Todd.Miller@courtesan.com>
*
* Permission to use, copy, modify, and distribute this software for any
#include <config.h>
#include <sys/types.h>
-#include <sys/param.h>
#include <sys/stat.h>
#include <stdio.h>
#ifdef STDC_HEADERS
int len; /* length parameter */
debug_decl(find_path, SUDO_DEBUG_UTIL)
- if (strlen(infile) >= PATH_MAX)
- errorx(1, _("%s: %s"), infile, strerror(ENAMETOOLONG));
+ if (strlen(infile) >= PATH_MAX) {
+ errno = ENAMETOOLONG;
+ fatal("%s", infile);
+ }
/*
* If we were given a fully qualified or relative path
* Resolve the path and exit the loop if found.
*/
len = snprintf(command, sizeof(command), "%s/%s", path, infile);
- if (len <= 0 || len >= sizeof(command))
- errorx(1, _("%s: %s"), infile, strerror(ENAMETOOLONG));
+ if (len <= 0 || len >= sizeof(command)) {
+ errno = ENAMETOOLONG;
+ fatal("%s", infile);
+ }
if ((found = sudo_goodpath(command, sbp)))
break;
*/
if (!found && checkdot) {
len = snprintf(command, sizeof(command), "./%s", infile);
- if (len <= 0 || len >= sizeof(command))
- errorx(1, _("%s: %s"), infile, strerror(ENAMETOOLONG));
+ if (len <= 0 || len >= sizeof(command)) {
+ errno = ENAMETOOLONG;
+ fatal("%s", infile);
+ }
found = sudo_goodpath(command, sbp);
if (found && ignore_dot)
debug_return_int(NOT_FOUND_DOT);