mirror of
https://github.com/DaveGamble/cJSON.git
synced 2023-08-10 21:13:26 +03:00
Fix reading buffer overflow in parse_string
This commit is contained in:
parent
b537ca70a3
commit
a167d9e381
4
cJSON.c
4
cJSON.c
@ -657,7 +657,7 @@ static cJSON_bool parse_string(cJSON * const item, parse_buffer * const input_bu
|
|||||||
/* calculate approximate size of the output (overestimate) */
|
/* calculate approximate size of the output (overestimate) */
|
||||||
size_t allocation_length = 0;
|
size_t allocation_length = 0;
|
||||||
size_t skipped_bytes = 0;
|
size_t skipped_bytes = 0;
|
||||||
while ((*input_end != '\"') && ((size_t)(input_end - input_buffer->content) < input_buffer->length))
|
while (((size_t)(input_end - input_buffer->content) < input_buffer->length) && (*input_end != '\"'))
|
||||||
{
|
{
|
||||||
/* is escape sequence */
|
/* is escape sequence */
|
||||||
if (input_end[0] == '\\')
|
if (input_end[0] == '\\')
|
||||||
@ -672,7 +672,7 @@ static cJSON_bool parse_string(cJSON * const item, parse_buffer * const input_bu
|
|||||||
}
|
}
|
||||||
input_end++;
|
input_end++;
|
||||||
}
|
}
|
||||||
if (*input_end != '\"')
|
if (((size_t)(input_end - input_buffer->content) >= input_buffer->length) || (*input_end != '\"'))
|
||||||
{
|
{
|
||||||
goto fail; /* string ended unexpectedly */
|
goto fail; /* string ended unexpectedly */
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user