Merge pull request #198 from unmole/master

Fix possible memory leak and remove superfluous NULL checks before free()
This commit is contained in:
Eric Haszlakiewicz
2015-11-28 13:58:07 -05:00

View File

@@ -131,7 +131,7 @@ void json_tokener_free(struct json_tokener *tok)
{ {
json_tokener_reset(tok); json_tokener_reset(tok);
if (tok->pb) printbuf_free(tok->pb); if (tok->pb) printbuf_free(tok->pb);
if (tok->stack) free(tok->stack); free(tok->stack);
free(tok); free(tok);
} }
@@ -253,6 +253,9 @@ struct json_object* json_tokener_parse_ex(struct json_tokener *tok,
the string length is less than INT32_MAX (2GB) */ the string length is less than INT32_MAX (2GB) */
if ((len < -1) || (len == -1 && strlen(str) > INT32_MAX)) { if ((len < -1) || (len == -1 && strlen(str) > INT32_MAX)) {
tok->err = json_tokener_error_size; tok->err = json_tokener_error_size;
#ifdef HAVE_SETLOCALE
free(oldlocale);
#endif
return NULL; return NULL;
} }
@@ -898,7 +901,7 @@ struct json_object* json_tokener_parse_ex(struct json_tokener *tok,
#ifdef HAVE_SETLOCALE #ifdef HAVE_SETLOCALE
setlocale(LC_NUMERIC, oldlocale); setlocale(LC_NUMERIC, oldlocale);
if (oldlocale) free(oldlocale); free(oldlocale);
#endif #endif
if (tok->err == json_tokener_success) if (tok->err == json_tokener_success)