On 29/04/19 15:47, Marc-André Lureau wrote:
> $ ./x86_64-softmmu/qemu-system-x86_64 -sandbox off
> qemu-system-x86_64: -sandbox off: There is no option group 'sandbox'
> Segmentation fault
> 
> Commit 5780760f5e ("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: 5780760f5ea6163939a5dabe7427318b4f07d1a2
> Cc: da...@gibson.dropbear.id.au
> Cc: ot...@redhat.com
> Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com>
> ---
>  vl.c | 18 ++++++++++--------
>  1 file changed, 10 insertions(+), 8 deletions(-)
> 
> diff --git a/vl.c b/vl.c
> index 4019a4387d..5fc4994d3c 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -3866,17 +3866,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
> 

Queued, thanks.

Paolo

Reply via email to