From f37b0a10a5eb74c2389a3595ac60c3f0dc7406f0 Mon Sep 17 00:00:00 2001 From: Anmol Sarma Date: Thu, 1 Oct 2015 14:09:09 +0530 Subject: [PATCH 1/2] Fix possible memory leak --- json_tokener.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/json_tokener.c b/json_tokener.c index 8b1e3e6..98611d6 100644 --- a/json_tokener.c +++ b/json_tokener.c @@ -253,6 +253,9 @@ struct json_object* json_tokener_parse_ex(struct json_tokener *tok, the string length is less than INT32_MAX (2GB) */ if ((len < -1) || (len == -1 && strlen(str) > INT32_MAX)) { tok->err = json_tokener_error_size; +#ifdef HAVE_SETLOCALE + free(oldlocale); +#endif return NULL; } From 467102fa78023062ed3175d40befa03de494e0d5 Mon Sep 17 00:00:00 2001 From: Anmol Sarma Date: Thu, 1 Oct 2015 14:14:03 +0530 Subject: [PATCH 2/2] Remove superfluous NULL checks --- json_tokener.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/json_tokener.c b/json_tokener.c index 98611d6..752a7b3 100644 --- a/json_tokener.c +++ b/json_tokener.c @@ -131,7 +131,7 @@ void json_tokener_free(struct json_tokener *tok) { json_tokener_reset(tok); if (tok->pb) printbuf_free(tok->pb); - if (tok->stack) free(tok->stack); + free(tok->stack); free(tok); } @@ -901,7 +901,7 @@ struct json_object* json_tokener_parse_ex(struct json_tokener *tok, #ifdef HAVE_SETLOCALE setlocale(LC_NUMERIC, oldlocale); - if (oldlocale) free(oldlocale); + free(oldlocale); #endif if (tok->err == json_tokener_success)