diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | posix/tst-spawn.c | 4 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/spawni.c | 2 |
3 files changed, 12 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog index ceee215e3e..6bd5a11769 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2016-03-20 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + * sysdeps/unix/sysv/linux/spawni.c (__spawnix): Fix invalid memory + access where posix_spawn success and pid argument is null. + * posix/tst-spawn.c (do_test): Add posix_spawn null pid argument for + success case. + 2016-03-20 Samuel Thibault <samuel.thibault@ens-lyon.org>: * sysdeps/mach/hurd/i386/c++-types.data: New file. diff --git a/posix/tst-spawn.c b/posix/tst-spawn.c index 68f435789f..c04609864e 100644 --- a/posix/tst-spawn.c +++ b/posix/tst-spawn.c @@ -257,6 +257,10 @@ do_test (int argc, char *argv[]) if (posix_spawn (&pid, argv[1], &actions, NULL, spargv, environ) != 0) error (EXIT_FAILURE, errno, "posix_spawn"); + /* Same test but with a NULL pid argument. */ + if (posix_spawn (NULL, argv[1], &actions, NULL, spargv, environ) != 0) + error (EXIT_FAILURE, errno, "posix_spawn"); + /* Cleanup. */ if (posix_spawn_file_actions_destroy (&actions) != 0) error (EXIT_FAILURE, errno, "posix_spawn_file_actions_destroy"); diff --git a/sysdeps/unix/sysv/linux/spawni.c b/sysdeps/unix/sysv/linux/spawni.c index 454462be47..cb80cea00f 100644 --- a/sysdeps/unix/sysv/linux/spawni.c +++ b/sysdeps/unix/sysv/linux/spawni.c @@ -381,7 +381,7 @@ __spawnix (pid_t * pid, const char *file, close_not_cancel (args.pipe[0]); - if (!ec && new_pid) + if (!ec && pid) *pid = new_pid; __sigprocmask (SIG_SETMASK, &args.oldmask, 0); |