diff --git a/winsup/cygwin/release/3.1.0 b/winsup/cygwin/release/3.1.0 index 3f2f3c86b..fb0e37215 100644 --- a/winsup/cygwin/release/3.1.0 +++ b/winsup/cygwin/release/3.1.0 @@ -91,3 +91,6 @@ Bug Fixes - If the argument to mkdir(2) or rmdir(2) is 'x:\', don't strip the trailing backslash. Addresses: https://cygwin.com/ml/cygwin/2019-08/msg00334.html + +- Make spawnvp, spawnvpe fail if the executable is not in $PATH. + Addresses: https://cygwin.com/ml/cygwin/2019-10/msg00032.html diff --git a/winsup/cygwin/spawn.cc b/winsup/cygwin/spawn.cc index f8090a6a4..f82860e72 100644 --- a/winsup/cygwin/spawn.cc +++ b/winsup/cygwin/spawn.cc @@ -1081,8 +1081,9 @@ extern "C" int spawnvp (int mode, const char *file, const char * const *argv) { path_conv buf; - return spawnve (mode | _P_PATH_TYPE_EXEC, find_exec (file, buf), argv, - cur_environ ()); + return spawnve (mode | _P_PATH_TYPE_EXEC, + find_exec (file, buf, "PATH", FE_NNF) ?: "", + argv, cur_environ ()); } extern "C" int @@ -1090,7 +1091,9 @@ spawnvpe (int mode, const char *file, const char * const *argv, const char * const *envp) { path_conv buf; - return spawnve (mode | _P_PATH_TYPE_EXEC, find_exec (file, buf), argv, envp); + return spawnve (mode | _P_PATH_TYPE_EXEC, + find_exec (file, buf, "PATH", FE_NNF) ?: "", + argv, envp); } int