[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCHv2] filter-mirror: segfault when specifying non e
From: |
Zhang Chen |
Subject: |
Re: [Qemu-devel] [PATCHv2] filter-mirror: segfault when specifying non existent device |
Date: |
Fri, 29 Sep 2017 12:56:58 +0000 |
2017-09-29 12:03 GMT+00:00 Eduardo Otubo <address@hidden>:
> v2:
> Removed "err:" label from the end of the function and replaced by
> two separate error messages. One when outdev is not specified and
> one when outdev does not exist.
>
> Fixed the error message that was referencing nf->netdev_id and not
> s->outdev.
>
> When using filter-mirror like the example below where the interface
> 'ndev0' does not exist on the host, QEMU crashes into segmentation
> fault.
>
> $ qemu-system-x86_64 -S -machine pc -netdev user,id=ndev0 -object
> filter-mirror,id=test-object,netdev=ndev0
>
> This happens because the function filter_mirror_setup() does not checks
> if the device actually exists and still keep on processing calling
> qemu_chr_find(). This patch fixes this issue.
>
> Signed-off-by: Eduardo Otubo <address@hidden>
>
Reviewed-by: Zhang Chen <address@hidden>
Thanks
Zhang Chen
> ---
> net/filter-mirror.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/net/filter-mirror.c b/net/filter-mirror.c
> index 90e2c92337..ce0dc23c2a 100644
> --- a/net/filter-mirror.c
> +++ b/net/filter-mirror.c
> @@ -213,6 +213,12 @@ static void filter_mirror_setup(NetFilterState *nf,
> Error **errp)
> MirrorState *s = FILTER_MIRROR(nf);
> Chardev *chr;
>
> + if (s->outdev == NULL) {
> + error_set(errp, ERROR_CLASS_DEVICE_NOT_FOUND, "filter-mirror
> parameter"\
> + " 'outdev' cannot be empty");
> + return;
> + }
> +
> chr = qemu_chr_find(s->outdev);
> if (chr == NULL) {
> error_set(errp, ERROR_CLASS_DEVICE_NOT_FOUND,
> --
> 2.13.5
>
>
>