]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
shared/json: fix another memleak in normalization
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Tue, 10 May 2022 07:05:43 +0000 (09:05 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Tue, 10 May 2022 15:08:37 +0000 (17:08 +0200)
src/shared/json.c
test/fuzz/fuzz-json/leak-normalize-object [new file with mode: 0644]

index b7978c35561036d39e6048a1995f1c7e4165eceb..d9eda88b12f8df28451ad7bf884dae9330c05fec 100644 (file)
@@ -4621,7 +4621,7 @@ int json_variant_sort(JsonVariant **v) {
 
 int json_variant_normalize(JsonVariant **v) {
         _cleanup_free_ JsonVariant **a = NULL;
-        JsonVariant *n = NULL;
+        _cleanup_(json_variant_unrefp) JsonVariant *n = NULL;
         size_t i, m;
         int r;
 
@@ -4669,7 +4669,7 @@ int json_variant_normalize(JsonVariant **v) {
                 goto finish;
         }
 
-        JSON_VARIANT_REPLACE(*v, n);
+        JSON_VARIANT_REPLACE(*v, TAKE_PTR(n));
 
         r = 1;
 
diff --git a/test/fuzz/fuzz-json/leak-normalize-object b/test/fuzz/fuzz-json/leak-normalize-object
new file mode 100644 (file)
index 0000000..0a8caa4
--- /dev/null
@@ -0,0 +1 @@
+[7,7,7,7,{"":7,"":7,"^t":7,"-":7},2777,7,7,7,3]
\ No newline at end of file