mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-09 23:00:07 +00:00
posix: Fix posix_spawn invalid memory access
Current Linux posix_spawn spawn do not test if the pid argument is valid before trying to update it for success case. This patch fixes it. Tested on x86_64 and i686. * 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.
This commit is contained in:
parent
0e8e593d73
commit
2a69f853c0
@ -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>:
|
2016-03-20 Samuel Thibault <samuel.thibault@ens-lyon.org>:
|
||||||
|
|
||||||
* sysdeps/mach/hurd/i386/c++-types.data: New file.
|
* sysdeps/mach/hurd/i386/c++-types.data: New file.
|
||||||
|
@ -257,6 +257,10 @@ do_test (int argc, char *argv[])
|
|||||||
if (posix_spawn (&pid, argv[1], &actions, NULL, spargv, environ) != 0)
|
if (posix_spawn (&pid, argv[1], &actions, NULL, spargv, environ) != 0)
|
||||||
error (EXIT_FAILURE, errno, "posix_spawn");
|
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. */
|
/* Cleanup. */
|
||||||
if (posix_spawn_file_actions_destroy (&actions) != 0)
|
if (posix_spawn_file_actions_destroy (&actions) != 0)
|
||||||
error (EXIT_FAILURE, errno, "posix_spawn_file_actions_destroy");
|
error (EXIT_FAILURE, errno, "posix_spawn_file_actions_destroy");
|
||||||
|
@ -381,7 +381,7 @@ __spawnix (pid_t * pid, const char *file,
|
|||||||
|
|
||||||
close_not_cancel (args.pipe[0]);
|
close_not_cancel (args.pipe[0]);
|
||||||
|
|
||||||
if (!ec && new_pid)
|
if (!ec && pid)
|
||||||
*pid = new_pid;
|
*pid = new_pid;
|
||||||
|
|
||||||
__sigprocmask (SIG_SETMASK, &args.oldmask, 0);
|
__sigprocmask (SIG_SETMASK, &args.oldmask, 0);
|
||||||
|
Loading…
Reference in New Issue
Block a user