From 9bdfc48f09e0bfd5e59e0e27790282aa9be4f46d Mon Sep 17 00:00:00 2001 From: Ander Conselvan de Oliveira Date: Wed, 22 May 2013 22:55:33 +0300 Subject: [PATCH] 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 --- src/weston-launch.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/weston-launch.c b/src/weston-launch.c index 42b2506c..ad774762 100644 --- a/src/weston-launch.c +++ b/src/weston-launch.c @@ -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();