[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 17/31] filter-mirror: segfault when specifying non ex
From: |
Michael Tokarev |
Subject: |
[Qemu-devel] [PULL 17/31] filter-mirror: segfault when specifying non existent device |
Date: |
Mon, 25 Sep 2017 00:22:35 +0300 |
From: Eduardo Otubo <address@hidden>
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>
Signed-off-by: Michael Tokarev <address@hidden>
---
net/filter-mirror.c | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/net/filter-mirror.c b/net/filter-mirror.c
index 90e2c92337..e18a4b16a0 100644
--- a/net/filter-mirror.c
+++ b/net/filter-mirror.c
@@ -213,14 +213,22 @@ static void filter_mirror_setup(NetFilterState *nf, Error
**errp)
MirrorState *s = FILTER_MIRROR(nf);
Chardev *chr;
+ if (s->outdev == NULL) {
+ goto err;
+ }
+
chr = qemu_chr_find(s->outdev);
+
if (chr == NULL) {
- error_set(errp, ERROR_CLASS_DEVICE_NOT_FOUND,
- "Device '%s' not found", s->outdev);
- return;
+ goto err;
}
qemu_chr_fe_init(&s->chr_out, chr, errp);
+
+err:
+ error_set(errp, ERROR_CLASS_DEVICE_NOT_FOUND, "Device '%s' not found",
+ nf->netdev_id);
+ return;
}
static void redirector_rs_finalize(SocketReadState *rs)
--
2.11.0
- [Qemu-devel] [PULL 00/31] Trivial patches for 2017-09-25, Michael Tokarev, 2017/09/24
- [Qemu-devel] [PULL 01/31] configure: Remove unused code (found by shellcheck), Michael Tokarev, 2017/09/24
- [Qemu-devel] [PULL 02/31] Replace round_page() with TARGET_PAGE_ALIGN(), Michael Tokarev, 2017/09/24
- [Qemu-devel] [PULL 07/31] MAINTAINERS: add missing Guest Agent entries, Michael Tokarev, 2017/09/24
- [Qemu-devel] [PULL 06/31] MAINTAINERS: add missing VMWare entry, Michael Tokarev, 2017/09/24
- [Qemu-devel] [PULL 04/31] MAINTAINERS: add missing STM32 entry, Michael Tokarev, 2017/09/24
- [Qemu-devel] [PULL 26/31] hw/display/virtio-gpu: Put the virtio-gpu-device into the display category, Michael Tokarev, 2017/09/24
- [Qemu-devel] [PULL 17/31] filter-mirror: segfault when specifying non existent device,
Michael Tokarev <=
- [Qemu-devel] [PULL 16/31] MAINTAINERS: update docs/interop/ entries, Michael Tokarev, 2017/09/24
- [Qemu-devel] [PULL 12/31] MAINTAINERS: add missing AIO entry, Michael Tokarev, 2017/09/24
- [Qemu-devel] [PULL 21/31] remove trailing whitespace from qemu-options.hx, Michael Tokarev, 2017/09/24
- [Qemu-devel] [PULL 10/31] MAINTAINERS: add missing SSI entries, Michael Tokarev, 2017/09/24
- [Qemu-devel] [PULL 25/31] osdep: Fix ROUND_UP(64-bit, 32-bit), Michael Tokarev, 2017/09/24
- [Qemu-devel] [PULL 11/31] MAINTAINERS: add missing entries for throttling infra, Michael Tokarev, 2017/09/24
- [Qemu-devel] [PULL 24/31] target/xtensa: Use the pre-defined MEMTXATTRS_UNSPECIFIED macro, Michael Tokarev, 2017/09/24
- [Qemu-devel] [PULL 28/31] dma/i82374: avoid double creation of i82374 device, Michael Tokarev, 2017/09/24
- [Qemu-devel] [PULL 03/31] MAINTAINERS: add missing ARM entries, Michael Tokarev, 2017/09/24
- [Qemu-devel] [PULL 14/31] MAINTAINERS: add missing Cryptography entry, Michael Tokarev, 2017/09/24