[...]
--- a/src/qemu/qemu_monitor_json.c
+++ b/src/qemu/qemu_monitor_json.c
@@ -4818,7 +4818,8 @@ int qemuMonitorJSONOpenGraphics(qemuMonitorPtr mon,
}
static int
qemuMonitorJSONBlockIoThrottleInfo(virJSONValuePtr io_throttle,
- const char *device,
+ const char *drivealias,
+ const char *qdevid,
virDomainBlockIoTuneInfoPtr reply)
{
int ret = -1;
@@ -4828,7 +4829,8 @@ qemuMonitorJSONBlockIoThrottleInfo(virJSONValuePtr io_throttle,
for (i = 0; i < virJSONValueArraySize(io_throttle); i++) {
virJSONValuePtr temp_dev = virJSONValueArrayGet(io_throttle, i);
virJSONValuePtr inserted;
- const char *current_dev;
+ const char *current_drive;
+ const char *current_qdev;
if (!temp_dev || virJSONValueGetType(temp_dev) != VIR_JSON_TYPE_OBJECT) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
@@ -4837,14 +4839,18 @@ qemuMonitorJSONBlockIoThrottleInfo(virJSONValuePtr io_throttle,
goto cleanup;
}
- if (!(current_dev = virJSONValueObjectGetString(temp_dev, "device")))
{
+ current_qdev = virJSONValueObjectGetString(temp_dev, "qdev");
+ current_drive = virJSONValueObjectGetString(temp_dev, "device");
+
+ if (!current_drive && !current_qdev) {
Is this supposed to be || ?
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("block_io_throttle device entry "
"was not in expected format"));
goto cleanup;
}
- if (STRNEQ(current_dev, device))
+ if ((drivealias && STRNEQ(current_drive, drivealias)) ||
+ (qdevid && STRNEQ(current_qdev, qdevid)))
Because Coverity complains here that if one or the other is == NULL
while the other != NULL, then strcmp is not going to be happy.
John
continue;
found = true;
@@ -4885,7 +4891,7 @@ qemuMonitorJSONBlockIoThrottleInfo(virJSONValuePtr io_throttle,
if (!found) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("cannot find throttling info for device
'%s'"),
- device);
+ drivealias ? drivealias : qdevid);
goto cleanup;
}
ret = 0;
@@ -4996,7 +5002,8 @@ int qemuMonitorJSONSetBlockIoThrottle(qemuMonitorPtr mon,
}
[...]