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:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user