]> git.proxmox.com Git - mirror_qemu.git/commitdiff
qdev: Fix crash by validating the object type
authorAmos Kong <akong@redhat.com>
Wed, 16 Apr 2014 01:57:14 +0000 (09:57 +0800)
committerAndreas Färber <afaerber@suse.de>
Mon, 5 May 2014 17:08:49 +0000 (19:08 +0200)
QEMU crashed when I try to list device parameters and the driver name is
actually an available bus name.

 # qemu -device virtio-pci-bus,?
 # qemu -device virtio-bus,?
 # qemu -device virtio-serial-bus,?
 qdev-monitor.c:212:qdev_device_help: Object 0x7fd932f50620 is not an
 instance of type device
 Aborted (core dumped)

We can also reproduce this bug by adding device from monitor, so it's
worth to fix the crash.

 (qemu) device_add virtio-serial-bus
 qdev-monitor.c:491:qdev_device_add: Object 0x7f5e89530920 is not an
 instance of type device
 Aborted (core dumped)

Cc: qemu-stable@nongnu.org
Signed-off-by: Amos Kong <akong@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
qdev-monitor.c

index 6189780fd7f143a65712d9bcd819d5367540fe04..02cbe43bce3d953b4eb8d1cb7fad2da7c48da130 100644 (file)
@@ -206,7 +206,7 @@ int qdev_device_help(QemuOpts *opts)
         }
     }
 
-    if (!klass) {
+    if (!object_class_dynamic_cast(klass, TYPE_DEVICE)) {
         return 0;
     }
     do {