From 4e29ee705f1db5cf2cfed613439a5e8b377f06d9 Mon Sep 17 00:00:00 2001 From: Serge Zaitsev Date: Sun, 26 Dec 2010 13:48:13 +0200 Subject: Fix: check if no tokens lefs, return error in that case --- jsmn.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/jsmn.c b/jsmn.c index 8b87b97d6..d983be1cf 100644 --- a/jsmn.c +++ b/jsmn.c @@ -49,6 +49,8 @@ static int jsmn_parse_primitive(jsmn_parser *parser) { case '\t' : case '\r' : case '\n' : case ' ' : case ',' : case ']' : case '}' : token = jsmn_get_token(parser); + if (token == NULL) + return JSMN_ERROR_NOMEM; jsmn_fill_token(token, JSON_PRIMITIVE, start, parser->pos); parser->pos--; return JSMN_SUCCESS; @@ -79,6 +81,8 @@ static int jsmn_parse_string(jsmn_parser *parser) { /* Quote: end of string */ if (c == '\"') { token = jsmn_get_token(parser); + if (token == NULL) + return JSMN_ERROR_NOMEM; jsmn_fill_token(token, JSON_PRIMITIVE, start+1, parser->pos); return JSMN_SUCCESS; } @@ -121,6 +125,8 @@ jsmnerr_t jsmn_parse(jsmn_parser *parser) { switch (c) { case '{': case '[': token = jsmn_get_token(parser); + if (token == NULL) + return JSMN_ERROR_NOMEM; token->type = (c == '{' ? JSON_OBJECT : JSON_ARRAY); token->start = parser->pos; break; -- cgit v1.2.3