Skip to content

Commit

Permalink
vl: fix -sandbox parsing crash when seccomp support is disabled
Browse files Browse the repository at this point in the history
$ ./x86_64-softmmu/qemu-system-x86_64 -sandbox off
qemu-system-x86_64: -sandbox off: There is no option group 'sandbox'
Segmentation fault

Commit 5780760 ("seccomp: check TSYNC host capability") wrapped one
use of the sandbox option group to produce a sensible error, it didn't
do the same for another call to qemu_opts_parse_noisily():

(gdb) bt
    at util/qemu-option.c:829
 #0  0x00000000105b36d8 in opts_parse (list=0x0, params=0x3ffffffffab5 "off", permit_abbrev=true, defaults=false, errp=0x3ffffffff080)
     at util/qemu-option.c:829
 #1  0x00000000105b3b74 in qemu_opts_parse_noisily (list=<optimized out>, params=<optimized out>, permit_abbrev=<optimized out>) at util/qemu-option.c:890
 #2  0x0000000010024964 in main (argc=<optimized out>, argv=<optimized out>, envp=<optimized out>) at vl.c:3589

Fixes: 5780760
Cc: [email protected]
Cc: [email protected]
Signed-off-by: Marc-André Lureau <[email protected]>
Message-Id: <[email protected]>
Tested-by: Philippe Mathieu-Daudé <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Reviewed-by: Laurent Vivier <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
  • Loading branch information
elmarco authored and bonzini committed May 17, 2019
1 parent 3b9c59d commit 2bb814a
Showing 1 changed file with 10 additions and 8 deletions.
18 changes: 10 additions & 8 deletions vl.c
Original file line number Diff line number Diff line change
Expand Up @@ -3896,17 +3896,19 @@ int main(int argc, char **argv, char **envp)
qtest_log = optarg;
break;
case QEMU_OPTION_sandbox:
#ifdef CONFIG_SECCOMP
opts = qemu_opts_parse_noisily(qemu_find_opts("sandbox"),
optarg, true);
olist = qemu_find_opts("sandbox");
if (!olist) {
#ifndef CONFIG_SECCOMP
error_report("-sandbox support is not enabled "
"in this QEMU binary");
#endif
exit(1);
}

opts = qemu_opts_parse_noisily(olist, optarg, true);
if (!opts) {
exit(1);
}
#else
error_report("-sandbox support is not enabled "
"in this QEMU binary");
exit(1);
#endif
break;
case QEMU_OPTION_add_fd:
#ifndef _WIN32
Expand Down

0 comments on commit 2bb814a

Please sign in to comment.