[libvirt] [PATCH] qemu_monitor_json: Properly check GetArray return value

Commit 2a8d40f4ec refactored qemuMonitorJSONGetCPUx86Data and replaced virJSONValueObjectGet(reply, "return") with virJSONValueObjectGetArray. While the former is guaranteed to always return non-NULL pointer the latter may return NULL if the returned JSON object is not an array. Signed-off-by: Jiri Denemark <jdenemar@redhat.com> --- src/qemu/qemu_monitor_json.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index e30b72cd4..1d281af48 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -6554,7 +6554,7 @@ qemuMonitorJSONParseCPUx86Features(virJSONValuePtr data, ssize_t n; int ret = -1; - if ((n = virJSONValueArraySize(data)) < 0) { + if (!data || (n = virJSONValueArraySize(data)) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("invalid array of CPUID features")); return -1; @@ -6644,9 +6644,8 @@ qemuMonitorJSONCheckCPUx86(qemuMonitorPtr mon) if (qemuMonitorJSONCheckError(cmd, reply)) goto cleanup; - data = virJSONValueObjectGetArray(reply, "return"); - - if ((n = virJSONValueArraySize(data)) < 0) { + if (!(data = virJSONValueObjectGetArray(reply, "return")) || + (n = virJSONValueArraySize(data)) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("qom-list reply data was not an array")); goto cleanup; -- 2.11.1

On 02/14/2017 12:38 PM, Jiri Denemark wrote:
Commit 2a8d40f4ec refactored qemuMonitorJSONGetCPUx86Data and replaced virJSONValueObjectGet(reply, "return") with virJSONValueObjectGetArray. While the former is guaranteed to always return non-NULL pointer the latter may return NULL if the returned JSON object is not an array.
Signed-off-by: Jiri Denemark <jdenemar@redhat.com> --- src/qemu/qemu_monitor_json.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-)
ACK Michal
participants (2)
-
Jiri Denemark
-
Michal Privoznik