From 198f38fa5540c7545607b9d1beb0bfb689d56c3d Mon Sep 17 00:00:00 2001 Message-Id: <198f38fa5540c7545607b9d1beb0bfb689d56c3d@dist-git> From: Peter Krempa Date: Thu, 1 Dec 2022 17:02:42 +0100 Subject: [PATCH] qemuAgentGetDisks: Don't use virJSONValueObjectGetStringArray for optional data The 'dependencies' field in the return data may be missing in some cases. Historically 'virJSONValueObjectGetStringArray' didn't report error in such case, but later refactor (commit 043b50b948ef3c2 ) added an error in order to use it in other places too. Unfortunately this results in the error log being spammed with an irrelevant error in case when qemuAgentGetDisks is invoked on a VM running windows. Replace the use of virJSONValueObjectGetStringArray by fetching the array first and calling virJSONValueArrayToStringList only when we have an array. Fixes: 043b50b948ef3c2a4adf5fa32a93ec2589851ac6 Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2149752 Signed-off-by: Peter Krempa Reviewed-by: Michal Privoznik (cherry picked from commit 3b576601dfb924bb518870a01de5d1a421cbb467) https://bugzilla.redhat.com/show_bug.cgi?id=2154410 --- src/qemu/qemu_agent.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/qemu/qemu_agent.c b/src/qemu/qemu_agent.c index d81f01ba77..7afef06694 100644 --- a/src/qemu/qemu_agent.c +++ b/src/qemu/qemu_agent.c @@ -2544,6 +2544,7 @@ int qemuAgentGetDisks(qemuAgent *agent, for (i = 0; i < ndata; i++) { virJSONValue *addr; virJSONValue *entry = virJSONValueArrayGet(data, i); + virJSONValue *dependencies; qemuAgentDiskInfo *disk; if (!entry) { @@ -2569,7 +2570,11 @@ int qemuAgentGetDisks(qemuAgent *agent, goto error; } - disk->dependencies = virJSONValueObjectGetStringArray(entry, "dependencies"); + if ((dependencies = virJSONValueObjectGetArray(entry, "dependencies"))) { + if (!(disk->dependencies = virJSONValueArrayToStringList(dependencies))) + goto error; + } + disk->alias = g_strdup(virJSONValueObjectGetString(entry, "alias")); addr = virJSONValueObjectGetObject(entry, "address"); if (addr) { -- 2.39.0