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

Ander Conselvan de Oliveira conselvan2 at gmail.com
Wed May 22 12:55:33 PDT 2013


From: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira at intel.com>

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 42b2506..ad77476 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();
-- 
1.7.9.5



More information about the wayland-devel mailing list