]> sourceware.org Git - glibc.git/commitdiff
Fix segfault in maybe_script_execute.
authorStefan Liebler <stli@linux.ibm.com>
Thu, 6 Sep 2018 12:27:03 +0000 (14:27 +0200)
committerStefan Liebler <stli@linux.ibm.com>
Thu, 6 Sep 2018 12:27:03 +0000 (14:27 +0200)
If glibc is built with gcc 8 and -march=z900,
the testcase posix/tst-spawn4-compat crashes with a segfault.

In function maybe_script_execute, the new_argv array is dynamically
initialized on stack with (argc + 1) elements.
The function wants to add _PATH_BSHELL as the first argument
and writes out of bounds of new_argv.
There is an off-by-one because maybe_script_execute fails to count
the terminating NULL when sizing new_argv.

ChangeLog:

* sysdeps/unix/sysv/linux/spawni.c (maybe_script_execute):
Increment size of new_argv by one.

ChangeLog
sysdeps/unix/sysv/linux/spawni.c

index 379b9bd22337e31c4f1de6a00f369f2a1ed91f1d..0442ed9942503156c248190d04fca6db46d36036 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2018-09-06  Stefan Liebler  <stli@linux.ibm.com>
+
+       * sysdeps/unix/sysv/linux/spawni.c (maybe_script_execute):
+       Increment size of new_argv by one.
+
 2018-09-05  Rafal Luzynski  <digitalfreak@lingonborough.com>
 
        [BZ #17426]
index cf0213ece55c675d44b72f23f8c317566849c5aa..85239cedbf2a5ab51cb4b38ebd94bf182603fb8a 100644 (file)
@@ -101,7 +101,7 @@ maybe_script_execute (struct posix_spawn_args *args)
       ptrdiff_t argc = args->argc;
 
       /* Construct an argument list for the shell.  */
-      char *new_argv[argc + 1];
+      char *new_argv[argc + 2];
       new_argv[0] = (char *) _PATH_BSHELL;
       new_argv[1] = (char *) args->file;
       if (argc > 1)
This page took 0.125056 seconds and 5 git commands to generate.