From 708a840ec001d4c804522aa79dd701967e9f92d6 Mon Sep 17 00:00:00 2001 From: Jordan Bancino Date: Wed, 14 Dec 2022 14:54:06 +0000 Subject: [PATCH] Fix memory leak when attempting to parse something that isn't JSON. --- src/Json.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/Json.c b/src/Json.c index 8269d29..84a7e60 100644 --- a/src/Json.c +++ b/src/Json.c @@ -798,6 +798,8 @@ JsonTokenSeek(JsonParserState * state) if (!fgets(state->token + 1, 4, state->stream)) { state->tokenType = TOKEN_EOF; + Free(state->token); + state->token = NULL; return; } @@ -809,12 +811,16 @@ JsonTokenSeek(JsonParserState * state) else { state->tokenType = TOKEN_UNKNOWN; + Free(state->token); + state->token = NULL; } break; case 'f': if (!fgets(state->token + 1, 5, state->stream)) { state->tokenType = TOKEN_EOF; + Free(state->token); + state->token = NULL; return; } @@ -826,12 +832,16 @@ JsonTokenSeek(JsonParserState * state) else { state->tokenType = TOKEN_UNKNOWN; + Free(state->token); + state->token = NULL; } break; case 'n': if (!fgets(state->token + 1, 4, state->stream)) { state->tokenType = TOKEN_EOF; + Free(state->token); + state->token = NULL; return; } @@ -842,10 +852,14 @@ JsonTokenSeek(JsonParserState * state) else { state->tokenType = TOKEN_UNKNOWN; + Free(state->token); + state->token = NULL; } break; default: state->tokenType = TOKEN_UNKNOWN; + Free(state->token); + state->token = NULL; break; } }