diff options
author | Serge A. Zaitsev <zaitsev.serge@gmail.com> | 2014-11-17 16:21:36 +0200 |
---|---|---|
committer | Serge A. Zaitsev <zaitsev.serge@gmail.com> | 2014-11-17 16:21:36 +0200 |
commit | cf38b7d17157ba674199238da776d822b184c154 (patch) | |
tree | 653e5451665f48070a31988f532a2603b7691d00 /jsmn.c | |
parent | 91d7389ec80c742a589bfed25e62aa5f95d2f0f9 (diff) |
added js string boundaries checks for string parser, fixes issue #31; added tests to cover it; fixed makefile to use custom cflags/ldflags
Diffstat (limited to 'jsmn.c')
-rw-r--r-- | jsmn.c | 6 |
1 files changed, 3 insertions, 3 deletions
@@ -113,8 +113,8 @@ static jsmnerr_t jsmn_parse_string(jsmn_parser *parser, const char *js, } /* Backslash: Quoted symbol expected */ - if (c == '\\') { - int i = 0; + if (c == '\\' && parser->pos + 1 < len) { + int i; parser->pos++; switch (js[parser->pos]) { /* Allowed escaped symbols */ @@ -124,7 +124,7 @@ static jsmnerr_t jsmn_parse_string(jsmn_parser *parser, const char *js, /* Allows escaped symbol \uXXXX */ case 'u': parser->pos++; - for(; i < 4 && js[parser->pos] != '\0'; i++) { + for(i = 0; i < 4 && parser->pos < len && js[parser->pos] != '\0'; i++) { /* If it isn't a hex character we have an error */ if(!((js[parser->pos] >= 48 && js[parser->pos] <= 57) || /* 0-9 */ (js[parser->pos] >= 65 && js[parser->pos] <= 70) || /* A-F */ |