aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEduardo Otubo <otubo@redhat.com>2017-09-29 14:03:39 +0200
committerMichael Tokarev <mjt@tls.msk.ru>2017-10-16 23:16:06 +0300
commitaa1530dec499f7525d2ccaa0e3a876dc8089ed1e (patch)
tree180587d64b62f4f918cc7f43616498949e05323d
parent534fd8142fae81b621ff61524f319163d2bb1f7b (diff)
filter-mirror: segfault when specifying non existent device
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 check if the device actually exists and still keep on processing calling qemu_chr_find(). This patch fixes this issue. Signed-off-by: Eduardo Otubo <otubo@redhat.com> Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
-rw-r--r--net/filter-mirror.c6
1 files changed, 6 insertions, 0 deletions
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,