[libvirt PATCH 0/3] coverity fixes

Ján Tomko (3): qemu: chardev: avoid impossible overflow util: json: check return value of virJSONValueFromJsonC ch: check return value of virJSONValueArrayAppend src/ch/ch_monitor.c | 3 ++- src/qemu/qemu_chardev.c | 2 +- src/util/virjson.c | 5 +++++ 3 files changed, 8 insertions(+), 2 deletions(-) -- 2.47.0

In the rare case where int and long long are not the same size, the multiplication of an int variable and an int constant might overflow. Cast the constant to long long to avoid this. Signed-off-by: Ján Tomko <jtomko@redhat.com> Fixes: baa4edfb79d5ee861a08b5ec11416c5c156d8cd2 --- src/qemu/qemu_chardev.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qemu/qemu_chardev.c b/src/qemu/qemu_chardev.c index b6828b6752..6b29744975 100644 --- a/src/qemu/qemu_chardev.c +++ b/src/qemu/qemu_chardev.c @@ -247,7 +247,7 @@ qemuChardevGetBackendProps(const virDomainChrSourceDef *chr, if (reconnect != -1 && virQEMUCapsGet(qemuCaps, QEMU_CAPS_CHARDEV_RECONNECT_MILISECONDS)) { - reconnect_ms = reconnect * 1000; + reconnect_ms = reconnect * (long long) 1000; reconnect = -1; } -- 2.47.0

In virJSONValueFromJsonC, the return value of virJSONValueFromJsonC was not checked in one case. Signed-off-by: Ján Tomko <jtomko@redhat.com> --- src/util/virjson.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/util/virjson.c b/src/util/virjson.c index 18a4585e7b..a799707c16 100644 --- a/src/util/virjson.c +++ b/src/util/virjson.c @@ -1437,6 +1437,11 @@ virJSONValueFromJsonC(json_object *jobj) cur = virJSONValueFromJsonC(val); + if (!cur) { + g_free(ret); + return NULL; + } + virJSONValueArrayAppend(ret, &cur); } break; -- 2.47.0

It only errors out when presented with a non-array, but we do check it everywhere else. Signed-off-by: Ján Tomko <jtomko@redhat.com> --- src/ch/ch_monitor.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ch/ch_monitor.c b/src/ch/ch_monitor.c index 3e49902791..ccd04cfbd1 100644 --- a/src/ch/ch_monitor.c +++ b/src/ch/ch_monitor.c @@ -1002,7 +1002,8 @@ virCHMonitorBuildRestoreJson(virDomainDef *vmdef, return -1; if (virJSONValueObjectAppendNumberInt(net_json, "num_fds", vmdef->nets[i]->driver.virtio.queues)) return -1; - virJSONValueArrayAppend(nets, &net_json); + if (virJSONValueArrayAppend(nets, &net_json) < 0) + return -1; } if (virJSONValueObjectAppend(restore_json, "net_fds", &nets)) return -1; -- 2.47.0
participants (2)
-
Ján Tomko
-
Peter Krempa