On Fri, Sep 24, 2021 at 11:04:25AM +0200, Kevin Wolf wrote: > Directly call qdev_device_add_from_qdict() for QMP device_add instead of > first going through QemuOpts and converting back to QDict. > > Note that this changes the behaviour of device_add, though in ways that > should be considered bug fixes: > > QemuOpts ignores differences between data types, so you could > successfully pass a string "123" for an integer property, or a string > "on" for a boolean property (and vice versa). After this change, the > correct data type for the property must be used in the JSON input. > > qemu_opts_from_qdict() also silently ignores any options whose value is > a QDict, QList or QNull. > > To illustrate, the following QMP command was accepted before and is now > rejected for both reasons: > > { "execute": "device_add", > "arguments": { "driver": "scsi-cd", > "drive": { "completely": "invalid" }, > "physical_block_size": "4096" } } > > Signed-off-by: Kevin Wolf <kwolf@xxxxxxxxxx> > --- > softmmu/qdev-monitor.c | 18 +++++++++++------- > 1 file changed, 11 insertions(+), 7 deletions(-) > Reviewed-by: Eric Blake <eblake@xxxxxxxxxx> -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org