From: Elizaveta Tereshkina Date: Fri, 6 Mar 2026 10:46:20 +0000 (+0300) Subject: util: json: fix memory leak in virJSONValueFromJsonC() X-Git-Tag: v12.2.0-rc1~119 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=fa016baf0a76b5a8d3c3aa672ca5ddccb69fbb86;p=thirdparty%2Flibvirt.git util: json: fix memory leak in virJSONValueFromJsonC() In the 'json_type_object' and/ro 'json_type_array' cases, the error path uses 'g_free()', which doesn't release other nested memory allocations. Replace it with 'virJSONValueFree()' to properly free the entire 'virJSONValue' structure. Fixes: 9e6555fd90988948a05e83466b1903bb95b36f39 Fixes: da66bf53b09ee8f5facacae700638a9a6f3a2477 Signed-off-by: Elizaveta Tereshkina Signed-off-by: Michal Privoznik Reviewed-by: Michal Privoznik --- diff --git a/src/util/virjson.c b/src/util/virjson.c index 454bd657be..b751326154 100644 --- a/src/util/virjson.c +++ b/src/util/virjson.c @@ -1416,7 +1416,7 @@ virJSONValueFromJsonC(json_object *jobj) virJSONValue *cur = virJSONValueFromJsonC(iter.val); if (virJSONValueObjectAppend(ret, iter.key, &cur) < 0) { - g_free(ret); + virJSONValueFree(ret); return NULL; } } @@ -1438,7 +1438,7 @@ virJSONValueFromJsonC(json_object *jobj) cur = virJSONValueFromJsonC(val); if (!cur) { - g_free(ret); + virJSONValueFree(ret); return NULL; }