diff options
author | Igor Mammedov <imammedo@redhat.com> | 2013-09-17 15:32:32 +0200 |
---|---|---|
committer | Andreas Färber <afaerber@suse.de> | 2013-11-05 17:47:30 +0100 |
commit | 2fa4e56d88aa0039062bbc7f9a88e9f90c77ed94 (patch) | |
tree | 113e70dbe0987e1b6229f1f6e9bb50ed088b3c22 | |
parent | f4d85795605c7dc594c013221a4b6d62967bd8ab (diff) |
qdev-monitor: Fix crash when device_add is called with abstract driver
User is able to crash running QEMU when following monitor
command is called:
device_add intel-hda-generic
Crash is caused by assertion in object_initialize_with_type()
when type is abstract.
Checking if type is abstract before instance is created in
qdev_device_add() allows to prevent crash on incorrect user input.
Cc: qemu-stable@nongnu.org
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
-rw-r--r-- | qdev-monitor.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/qdev-monitor.c b/qdev-monitor.c index 8f9f6cb45f..753bab7545 100644 --- a/qdev-monitor.c +++ b/qdev-monitor.c @@ -481,6 +481,12 @@ DeviceState *qdev_device_add(QemuOpts *opts) return NULL; } + if (object_class_is_abstract(oc)) { + qerror_report(QERR_INVALID_PARAMETER_VALUE, "driver", + "non-abstract device type"); + return NULL; + } + dc = DEVICE_CLASS(oc); /* find bus */ |