]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
func_json: Fix memory leak.
authorNaveen Albert <asterisk@phreaknet.org>
Thu, 10 Nov 2022 12:11:53 +0000 (12:11 +0000)
committerFriendly Automation <jenkins2@gerrit.asterisk.org>
Mon, 21 Nov 2022 14:29:40 +0000 (08:29 -0600)
A memory leak was present in func_json due to
using ast_json_free, which just calls ast_free,
as opposed to recursively freeing the JSON
object as needed. This is now fixed to use the
right free functions.

ASTERISK-30293 #close

Change-Id: I982324dde841dc9147c8d8ad35c8719daf418b49

funcs/func_json.c

index 1f6482428797c21389d74d432900d82e7fc2692d..55a034348f59ed96c6f3c75e5da80bec65aa2bb8 100644 (file)
@@ -115,7 +115,7 @@ static int json_decode_read(struct ast_channel *chan, const char *cmd, char *dat
        jsonval = ast_json_object_get(json, args.key);
        if (!jsonval) { /* no error or warning should be thrown */
                ast_debug(1, "Could not find key '%s' in parsed JSON\n", args.key);
-               ast_json_free(json);
+               ast_json_unref(json);
                return -1;
        }
        switch(ast_json_typeof(jsonval)) {
@@ -134,7 +134,7 @@ static int json_decode_read(struct ast_channel *chan, const char *cmd, char *dat
                        ast_json_free(result2);
                        break;
        }
-       ast_json_free(json);
+       ast_json_unref(json);
 
        return 0;
 }