提交 a167d9e3 编写于 作者: M Max Bruckner

Fix reading buffer overflow in parse_string

上级 b537ca70
...@@ -657,7 +657,7 @@ static cJSON_bool parse_string(cJSON * const item, parse_buffer * const input_bu ...@@ -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 ...@@ -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 */
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册