]> xenbits.xensource.com Git - libvirt.git/commitdiff
virDomainFeaturesTCGDefParse: Don't leak 'tcg_features' when '<tcg>' feature is repeated
authorPeter Krempa <pkrempa@redhat.com>
Mon, 9 Sep 2024 14:46:05 +0000 (16:46 +0200)
committerPavel Hrdina <phrdina@redhat.com>
Tue, 10 Sep 2024 12:26:20 +0000 (14:26 +0200)
Similarly to other cases users may specify the feature flag multiple
times.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
src/conf/domain_conf.c

index e31b674bc2e10d70d8a3287c1028c5a5845204ab..0f0488f3a271d225c24ff1f199c3f3a01371036d 100644 (file)
@@ -16807,21 +16807,25 @@ virDomainFeaturesTCGDefParse(virDomainDef *def,
                              xmlXPathContextPtr ctxt,
                              xmlNodePtr node)
 {
-    g_autofree virDomainFeatureTCG *tcg = NULL;
+    unsigned long long tb_cache;
     VIR_XPATH_NODE_AUTORESTORE(ctxt);
 
-    tcg = g_new0(virDomainFeatureTCG, 1);
     ctxt->node = node;
 
     if (virDomainParseMemory("./tb-cache", "./tb-cache/@unit",
-                             ctxt, &tcg->tb_cache, false, false) < 0)
+                             ctxt, &tb_cache, false, false) < 0)
         return -1;
 
-    if (tcg->tb_cache == 0)
+    if (tb_cache == 0)
         return 0;
 
+    if (!def->tcg_features)
+        def->tcg_features = g_new0(virDomainFeatureTCG, 1);
+
+    def->tcg_features->tb_cache = tb_cache;
+
+
     def->features[VIR_DOMAIN_FEATURE_TCG] = VIR_TRISTATE_SWITCH_ON;
-    def->tcg_features = g_steal_pointer(&tcg);
     return 0;
 }