qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2] net: Fix a potential segfault


From: Thomas Huth
Subject: Re: [Qemu-devel] [PATCH v2] net: Fix a potential segfault
Date: Mon, 11 Jun 2018 09:46:12 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0

On 11.06.2018 09:06, Lin Ma wrote:
> If user forgets to provide any backend types for '-netdev' in qemu CLI,
> It triggers seg fault.
> 
> e.g.
> 
> Expected:
> $ qemu -netdev id=net0
> qemu-system-x86_64: Parameter 'type' is missing
> 
> Actual:
> $ qemu -netdev id=net0
> Segmentation fault (core dumped)

Ok, thanks for adding the description!

> Signed-off-by: Lin Ma <address@hidden>
> ---
>  net/net.c | 9 ++++++---
>  1 file changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/net/net.c b/net/net.c
> index efb9eaf779..f89790be4a 100644
> --- a/net/net.c
> +++ b/net/net.c
> @@ -1093,9 +1093,12 @@ static int net_client_init(QemuOpts *opts, bool 
> is_netdev, Error **errp)
>      int ret = -1;
>      Visitor *v = opts_visitor_new(opts);
>  
> -    if (is_netdev && is_help_option(qemu_opt_get(opts, "type"))) {
> -        show_netdevs();
> -        exit(0);
> +    if (is_netdev) {
> +        const char *type = qemu_opt_get(opts, "type");
> +        if (type && is_help_option(type)) {
> +            show_netdevs();
> +            exit(0);
> +        }
>      } else {
>          /* Parse convenience option format ip6-net=fec0::0[/64] */
>          const char *ip6_net = qemu_opt_get(opts, "ipv6-net");
> 

I think you've got to do it in a slightly different way:

    const char *type = qemu_opt_get(opts, "type");

    if (is_netdev && type && is_help_option(type)) {
        show_netdevs();
        exit(0);
    } else ...

otherwise the "else" branch is not entered anymore in case it is a
non-help netdev option.

 Thomas



reply via email to

[Prev in Thread] Current Thread [Next in Thread]