Add stack-overflow check to 'lexer_construct_function_object' (#4965)

This patch fixes #4887.

JerryScript-DCO-1.0-Signed-off-by: Martin Negyokru negyokru@inf.u-szeged.hu
This commit is contained in:
mnegyokru
2022-01-14 11:02:50 +01:00
committed by GitHub
parent 57547d1261
commit c68f6e79e1
3 changed files with 17 additions and 1 deletions
+6
View File
@@ -2799,6 +2799,12 @@ uint16_t
lexer_construct_function_object (parser_context_t *context_p, /**< context */
uint32_t extra_status_flags) /**< extra status flags */
{
#if (JERRY_STACK_LIMIT != 0)
if (JERRY_UNLIKELY (ecma_get_current_stack_usage () > CONFIG_MEM_STACK_LIMIT))
{
parser_raise_error (context_p, PARSER_ERR_STACK_OVERFLOW);
}
#endif /* JERRY_STACK_LIMIT != 0 */
ecma_compiled_code_t *compiled_code_p;
lexer_literal_t *literal_p;
uint16_t result_index;
+7
View File
@@ -2506,6 +2506,13 @@ parser_parse_source (void *source_p, /**< source code */
jcontext_raise_exception (ECMA_VALUE_NULL);
return NULL;
}
#if (JERRY_STACK_LIMIT != 0)
if (context.error == PARSER_ERR_STACK_OVERFLOW)
{
ecma_raise_standard_error (JERRY_ERROR_RANGE, ECMA_ERR_MAXIMUM_CALL_STACK_SIZE_EXCEEDED);
return NULL;
}
#endif /* JERRY_STACK_LIMIT != 0 */
#if JERRY_ERROR_MESSAGES
ecma_string_t *err_str_p;
+4 -1
View File
@@ -32,7 +32,10 @@ typedef enum
/** @endcond */
PARSER_ERR_OUT_OF_MEMORY,
PARSER_ERR_INVALID_REGEXP,
PARSER_ERR_NO_ERROR
#if (JERRY_STACK_LIMIT != 0)
PARSER_ERR_STACK_OVERFLOW,
#endif /* JERRY_STACK_LIMIT != 0 */
PARSER_ERR_NO_ERROR,
} parser_error_msg_t;
const lit_utf8_byte_t* parser_get_error_utf8 (uint32_t id);