]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: Avoid memory leak in qemuMonitorJSONExtractQueryStatsSchema
authorJiri Denemark <jdenemar@redhat.com>
Wed, 2 Nov 2022 14:52:31 +0000 (15:52 +0100)
committerJiri Denemark <jdenemar@redhat.com>
Wed, 2 Nov 2022 15:10:38 +0000 (16:10 +0100)
In a rare case when virHashAddEntry fails we would just leak the
structure we wanted to add to the hash table.

Fixes: e89acdbc3bbada2f3c1a591278bc975ddee2d5a9
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_monitor_json.c

index 2bd159bc986a4335224d2689eece2e09976cf2bb..8a3421a6fc40c60fb90474cb70feb516dadae9b7 100644 (file)
@@ -8596,7 +8596,7 @@ qemuMonitorJSONExtractQueryStatsSchema(virJSONValue *json)
             virJSONValue *stat = virJSONValueArrayGet(stats, j);
             const char *name = NULL;
             const char *tmp = NULL;
-            qemuMonitorQueryStatsSchemaData *data = NULL;
+            g_autofree qemuMonitorQueryStatsSchemaData *data = NULL;
             int type = -1;
             int unit = -1;
 
@@ -8632,7 +8632,9 @@ qemuMonitorJSONExtractQueryStatsSchema(virJSONValue *json)
                 virJSONValueObjectGetNumberUint(stat, "bucket-size", &data->bucket_size) < 0)
                 data->bucket_size = 0;
 
-            virHashAddEntry(schema, name, data);
+            if (virHashAddEntry(schema, name, data) < 0)
+                return NULL;
+            data = NULL;
         }
     }