[OpenWrt-Devel] [PATCH v2 libubox 08/10] jshn: jshn_parse: fix leaks of memory pointed to by 'obj'

Petr Štetiar ynezz at true.cz
Wed Nov 20 16:43:51 EST 2019


Fixes following leaks of memory:

 352 (72 direct, 280 indirect) bytes in 1 blocks are definitely lost in loss record 3 of 3
   at 0x4C31B25: calloc
   by 0x5042E1F: json_object_new_array
   by 0x5044B02: json_tokener_parse_ex
   by 0x5045316: json_tokener_parse_verbose
   by 0x504537D: json_tokener_parse
   by 0x401AA9: jshn_parse (jshn.c:179)
   by 0x401977: main (jshn.c:378)

 752 (72 direct, 680 indirect) bytes in 1 blocks are definitely lost in loss record 6 of 6
   at 0x4C31B25: calloc
   by 0x50424CF: json_object_new_object
   by 0x5044B38: json_tokener_parse_ex
   by 0x5045316: json_tokener_parse_verbose
   by 0x504537D: json_tokener_parse
   by 0x401AA9: jshn_parse (jshn.c:179)
   by 0x401977: main (jshn.c:380)

Signed-off-by: Petr Štetiar <ynezz at true.cz>
---
 jshn.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/jshn.c b/jshn.c
index 02b35286ea8b..5298d52e729a 100644
--- a/jshn.c
+++ b/jshn.c
@@ -178,12 +178,15 @@ static int jshn_parse(const char *str)
 
 	obj = json_tokener_parse(str);
 	if (!obj || json_object_get_type(obj) != json_type_object) {
+		if (obj)
+			json_object_put(obj);
 		fprintf(stderr, "Failed to parse message data\n");
 		return 1;
 	}
 	fprintf(stdout, "json_init;\n");
 	add_json_object(obj);
 	fflush(stdout);
+	json_object_put(obj);
 
 	return 0;
 }

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


More information about the openwrt-devel mailing list