diff options
author | Ken Brown <kbrown@cornell.edu> | 2019-10-09 20:06:02 +0000 |
---|---|---|
committer | Ken Brown <kbrown@cornell.edu> | 2019-10-18 10:38:52 -0400 |
commit | b61dc22adaf82114eee3edce91cc3433bcd27fe5 (patch) | |
tree | 24f84e223308da610531d996d8de5faaa9714397 /winsup | |
parent | 43d7f33e2cab414a9f42a03b3347bc41e029dbbc (diff) | |
download | newlib-b61dc22adaf82114eee3edce91cc3433bcd27fe5.zip newlib-b61dc22adaf82114eee3edce91cc3433bcd27fe5.tar.gz newlib-b61dc22adaf82114eee3edce91cc3433bcd27fe5.tar.bz2 |
Cygwin: spawnvp, spawnvpe: fail if executable is not in $PATH
Call find_exec with the FE_NNF flag to enforce a NULL return when the
executable isn't found in $PATH. Convert NULL to "". This aligns
spawnvp and spawnvpe with execvp and execvpe.
Diffstat (limited to 'winsup')
-rw-r--r-- | winsup/cygwin/release/3.1.0 | 3 | ||||
-rw-r--r-- | winsup/cygwin/spawn.cc | 9 |
2 files changed, 9 insertions, 3 deletions
diff --git a/winsup/cygwin/release/3.1.0 b/winsup/cygwin/release/3.1.0 index 3f2f3c8..fb0e372 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 f8090a6..f82860e 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 |