diff --git a/core/org.eclipse.cdt.core.linux.aarch64/os/linux/aarch64/libspawner.so b/core/org.eclipse.cdt.core.linux.aarch64/os/linux/aarch64/libspawner.so index 6806704ee04..386a513709a 100755 Binary files a/core/org.eclipse.cdt.core.linux.aarch64/os/linux/aarch64/libspawner.so and b/core/org.eclipse.cdt.core.linux.aarch64/os/linux/aarch64/libspawner.so differ diff --git a/core/org.eclipse.cdt.core.linux.x86_64/os/linux/x86_64/libspawner.so b/core/org.eclipse.cdt.core.linux.x86_64/os/linux/x86_64/libspawner.so index 4154d0fa6ac..656a9c8bb86 100755 Binary files a/core/org.eclipse.cdt.core.linux.x86_64/os/linux/x86_64/libspawner.so and b/core/org.eclipse.cdt.core.linux.x86_64/os/linux/x86_64/libspawner.so differ diff --git a/core/org.eclipse.cdt.core.macosx/os/macosx/x86/libspawner.jnilib b/core/org.eclipse.cdt.core.macosx/os/macosx/x86/libspawner.jnilib index df51c06cf3c..b61cab931e0 100755 Binary files a/core/org.eclipse.cdt.core.macosx/os/macosx/x86/libspawner.jnilib and b/core/org.eclipse.cdt.core.macosx/os/macosx/x86/libspawner.jnilib differ diff --git a/core/org.eclipse.cdt.core.macosx/os/macosx/x86_64/libspawner.jnilib b/core/org.eclipse.cdt.core.macosx/os/macosx/x86_64/libspawner.jnilib index 620bd6bf01d..5761b5e5010 100755 Binary files a/core/org.eclipse.cdt.core.macosx/os/macosx/x86_64/libspawner.jnilib and b/core/org.eclipse.cdt.core.macosx/os/macosx/x86_64/libspawner.jnilib differ diff --git a/core/org.eclipse.cdt.core.native/native_src/unix/pfind.c b/core/org.eclipse.cdt.core.native/native_src/unix/pfind.c index dd7abddf2f6..ce7a752715c 100644 --- a/core/org.eclipse.cdt.core.native/native_src/unix/pfind.c +++ b/core/org.eclipse.cdt.core.native/native_src/unix/pfind.c @@ -23,6 +23,7 @@ #include #include #include +#include #ifndef PATH_MAX #define PATH_MAX 1024 @@ -53,6 +54,7 @@ char * pfind(const char *name, char * const envp[]) char *sp; char *path; char fullpath[PATH_MAX+1]; + struct stat sb; /* Sanity check. */ if (name == NULL) { @@ -83,9 +85,11 @@ char * pfind(const char *name, char * const envp[]) while (tok != NULL) { snprintf(fullpath, sizeof(fullpath) - 1, "%s/%s", tok, name); - if (access(fullpath, X_OK) == 0) { - free(path); - return strdup(fullpath); + if (stat(fullpath, &sb) == 0 && S_ISREG(sb.st_mode)) { /* fullpath is a file */ + if (access(fullpath, X_OK) == 0) { /* fullpath is executable */ + free(path); + return strdup(fullpath); + } } tok = strtok_r( NULL, ":", &sp ); diff --git a/core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/spawner.dll b/core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/spawner.dll index 4ab31fbd3c1..710097dfc91 100755 Binary files a/core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/spawner.dll and b/core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/spawner.dll differ diff --git a/core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/starter.exe b/core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/starter.exe index 7d72b18ed93..69598bb22fb 100755 Binary files a/core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/starter.exe and b/core/org.eclipse.cdt.core.win32.x86_64/os/win32/x86_64/starter.exe differ