diff --git a/lib/findprog-in.c b/lib/findprog-in.c index c254f2f..d89ec00 100644 --- a/lib/findprog-in.c +++ b/lib/findprog-in.c @@ -26,6 +26,7 @@ #include #include #include +#include #include "filename.h" #include "concat-filename.h" @@ -190,6 +191,7 @@ find_in_given_path (const char *progname, const char *path, dir = "."; /* Try all platform-dependent suffixes. */ + struct stat st; for (i = 0; i < sizeof (suffixes) / sizeof (suffixes[0]); i++) { const char *suffix = suffixes[i]; @@ -208,7 +210,8 @@ find_in_given_path (const char *progname, const char *path, use it. On other systems, let's hope that this program is not installed setuid or setgid, so that it is ok to call access() despite its design flaw. */ - if (eaccess (progpathname, X_OK) == 0) + if (eaccess (progpathname, X_OK) == 0 && + stat(progpathname, &st) == 0 && S_ISREG(st.st_mode)) { /* Found! */ if (strcmp (progpathname, progname) == 0)