From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1LWbOd-0004cw-FS for qemu-devel@nongnu.org; Mon, 09 Feb 2009 14:02:19 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1LWbOc-0004cX-UB for qemu-devel@nongnu.org; Mon, 09 Feb 2009 14:02:19 -0500 Received: from [199.232.76.173] (port=52017 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LWbOc-0004cS-Pz for qemu-devel@nongnu.org; Mon, 09 Feb 2009 14:02:18 -0500 Received: from hall.aurel32.net ([88.191.82.174]:35838) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1LWbOc-0003RW-A2 for qemu-devel@nongnu.org; Mon, 09 Feb 2009 14:02:18 -0500 Date: Mon, 9 Feb 2009 20:02:15 +0100 From: Aurelien Jarno Subject: Re: [Qemu-devel] [Qemu] [PATCH] Fix crash caused by missing command line arguments Message-ID: <20090209190215.GD15149@volta.aurel32.net> References: <4989E3B0.7060309@mail.berlios.de> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15 Content-Disposition: inline In-Reply-To: <4989E3B0.7060309@mail.berlios.de> Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Stefan Weil Cc: qemu-devel@nongnu.org On Wed, Feb 04, 2009 at 07:51:28PM +0100, Stefan Weil wrote: > Hi, > > some command line parameters for Qemu user mode take arguments. > When Qemu is called with a parameter and the argument is missing, > it gets a SIGSEGV crash. > > This patch tries to fix it for Linux user mode. Other user modes > are expected to need similar fixes, but I cannot test them. > > Regards > Stefan Weil > > Thanks, applied. > Missing command line arguments caused a crash. > > Signed-off-by: Stefan Weil > > Index: trunk/linux-user/main.c > =================================================================== > --- trunk.orig/linux-user/main.c 2009-02-04 19:22:22.000000000 +0100 > +++ trunk/linux-user/main.c 2009-02-04 19:44:03.000000000 +0100 > @@ -2301,6 +2301,8 @@ > if (envlist_unsetenv(envlist, r) != 0) > usage(); > } else if (!strcmp(r, "s")) { > + if (optind >= argc) > + break; > r = argv[optind++]; > x86_stack_size = strtol(r, (char **)&r, 0); > if (x86_stack_size <= 0) > @@ -2312,6 +2314,8 @@ > } else if (!strcmp(r, "L")) { > interp_prefix = argv[optind++]; > } else if (!strcmp(r, "p")) { > + if (optind >= argc) > + break; > qemu_host_page_size = atoi(argv[optind++]); > if (qemu_host_page_size == 0 || > (qemu_host_page_size & (qemu_host_page_size - 1)) != 0) { > @@ -2319,12 +2323,14 @@ > exit(1); > } > } else if (!strcmp(r, "g")) { > + if (optind >= argc) > + break; > gdbstub_port = atoi(argv[optind++]); > } else if (!strcmp(r, "r")) { > qemu_uname_release = argv[optind++]; > } else if (!strcmp(r, "cpu")) { > cpu_model = argv[optind++]; > - if (strcmp(cpu_model, "?") == 0) { > + if (cpu_model == NULL || strcmp(cpu_model, "?") == 0) { > /* XXX: implement xxx_cpu_list for targets that still miss it */ > #if defined(cpu_list) > cpu_list(stdout, &fprintf); -- Aurelien Jarno GPG: 1024D/F1BCDB73 aurelien@aurel32.net http://www.aurel32.net