mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-24 06:35:24 +00:00
qemu: avoid null deref on block pull error
Coverity detected that 5 of 6 callers of virJSONValueArrayGet checked for a NULL return; and that by not checking we risk a null deref during an error. The error is unlikely since the prior call to virJSONValueArraySize would probably have already caught any botched JSON array parse, but better safe than sorry. * src/qemu/qemu_monitor_json.c (qemuMonitorJSONGetBlockJobInfo): Check for NULL. (qemuMonitorJSONExtractPtyPaths): Fix typo.
This commit is contained in:
parent
94b5dae479
commit
9160573d32
@ -1018,7 +1018,7 @@ qemuMonitorJSONExtractCPUInfo(virJSONValuePtr reply,
|
||||
int thread;
|
||||
if (!entry) {
|
||||
qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("character device information was missing aray element"));
|
||||
_("character device information was missing array element"));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
@ -2266,7 +2266,7 @@ static int qemuMonitorJSONExtractPtyPaths(virJSONValuePtr reply,
|
||||
const char *id;
|
||||
if (!entry) {
|
||||
qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("character device information was missing aray element"));
|
||||
_("character device information was missing array element"));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
@ -2855,6 +2855,11 @@ static int qemuMonitorJSONGetBlockJobInfo(virJSONValuePtr reply,
|
||||
|
||||
for (i = 0; i < nr_results; i++) {
|
||||
virJSONValuePtr entry = virJSONValueArrayGet(data, i);
|
||||
if (!entry) {
|
||||
qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("missing array element"));
|
||||
return -1;
|
||||
}
|
||||
if (qemuMonitorJSONGetBlockJobInfoOne(entry, device, info) == 0)
|
||||
return 1;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user