From 5df12d2e04e3d006980a6b48e796e38184a302a5 Mon Sep 17 00:00:00 2001 From: Ruben Ayrapetyan Date: Wed, 17 Sep 2014 15:24:48 +0400 Subject: [PATCH] Fixing NULL pointer dereference in PutValue routine. --- src/libecmaoperations/ecma-get-put-value.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/libecmaoperations/ecma-get-put-value.c b/src/libecmaoperations/ecma-get-put-value.c index d2c6cf0fe..33f009f15 100644 --- a/src/libecmaoperations/ecma-get-put-value.c +++ b/src/libecmaoperations/ecma-get-put-value.c @@ -232,20 +232,22 @@ ecma_op_put_value (ecma_reference_t ref, /**< ECMA-reference */ { ret_value = ecma_reject_put (ref.is_strict); } + else + { + // sub_6. + JERRY_ASSERT (prop_p != NULL && prop_p->type == ECMA_PROPERTY_NAMEDACCESSOR); - // sub_6. - JERRY_ASSERT (prop_p != NULL && prop_p->type == ECMA_PROPERTY_NAMEDACCESSOR); + ecma_object_t *setter_p = ECMA_GET_POINTER(prop_p->u.named_accessor_property.set_p); + JERRY_ASSERT (setter_p != NULL); - ecma_object_t *setter_p = ECMA_GET_POINTER(prop_p->u.named_accessor_property.set_p); - JERRY_ASSERT (setter_p != NULL); + ECMA_FUNCTION_CALL (call_completion, + ecma_op_function_call (setter_p, base, &value, 1), + ret_value); - ECMA_FUNCTION_CALL (call_completion, - ecma_op_function_call (setter_p, base, &value, 1), - ret_value); + ret_value = ecma_make_empty_completion_value (); - ret_value = ecma_make_empty_completion_value (); - - ECMA_FINALIZE (call_completion); + ECMA_FINALIZE (call_completion); + } } ECMA_FINALIZE (obj_base);