weston-launch: Fix failure to exec weston due to initalized argv values

The array of arguments supplied to execv must be NULL terminated. If
unitialized values are used as pointers the exec call may fail with a
EFAULT error ("Bad address").

https://bugs.freedesktop.org/show_bug.cgi?id=64874
This commit is contained in:
Ander Conselvan de Oliveira 2013-05-22 22:55:33 +03:00 committed by Kristian Høgsberg
parent d9a7bb75d0
commit 9bdfc48f09

View File

@ -570,7 +570,7 @@ main(int argc, char *argv[])
}
}
if ((argc - optind) > (MAX_ARGV_SIZE - 5))
if ((argc - optind) > (MAX_ARGV_SIZE - 6))
error(1, E2BIG, "Too many arguments to pass to weston");
if (new_user)
@ -586,7 +586,8 @@ main(int argc, char *argv[])
child_argv[3] = BINDIR "/weston \"$@\"";
child_argv[4] = "weston";
for (i = 0; i < (argc - optind); ++i)
child_argv[5+i] = argv[optind+i];
child_argv[5 + i] = argv[optind + i];
child_argv[5 + i] = NULL;
term = getenv("TERM");
clearenv();