Fix bug in jerry_string_to_char_buffer.
str_len can smaller than buffer_size. JerryScript-DCO-1.0-Signed-off-by: Zidong Jiang zidong.jiang@intel.com
This commit is contained in:
+1
-1
@@ -999,7 +999,7 @@ jerry_string_to_char_buffer (const jerry_value_t value, /**< input string value
|
|||||||
|
|
||||||
ecma_string_t *str_p = ecma_get_string_from_value (value);
|
ecma_string_t *str_p = ecma_get_string_from_value (value);
|
||||||
|
|
||||||
if (ecma_string_get_size (str_p) < buffer_size)
|
if (ecma_string_get_size (str_p) > buffer_size)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -187,30 +187,31 @@ foreach (const jerry_value_t name, /**< field name */
|
|||||||
jerry_size_t sz = jerry_string_to_char_buffer (name, (jerry_char_t *) str_buf_p, 128);
|
jerry_size_t sz = jerry_string_to_char_buffer (name, (jerry_char_t *) str_buf_p, 128);
|
||||||
str_buf_p[sz] = '\0';
|
str_buf_p[sz] = '\0';
|
||||||
|
|
||||||
if (sz == 0)
|
JERRY_ASSERT (!strncmp ((const char *) user_data, "user_data", 9));
|
||||||
{
|
JERRY_ASSERT (sz > 0);
|
||||||
JERRY_ASSERT (!strncmp ((const char *) user_data, "user_data", 9));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!strncmp (str_buf_p, "alpha", (size_t) sz))
|
if (!strncmp (str_buf_p, "alpha", (size_t) sz))
|
||||||
{
|
{
|
||||||
JERRY_ASSERT (jerry_value_is_number (value));
|
JERRY_ASSERT (jerry_value_is_number (value));
|
||||||
JERRY_ASSERT (jerry_get_number_value (value) == 32.0);
|
JERRY_ASSERT (jerry_get_number_value (value) == 32.0);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
else if (!strncmp (str_buf_p, "bravo", (size_t) sz))
|
else if (!strncmp (str_buf_p, "bravo", (size_t) sz))
|
||||||
{
|
{
|
||||||
JERRY_ASSERT (jerry_value_is_boolean (value));
|
JERRY_ASSERT (jerry_value_is_boolean (value));
|
||||||
JERRY_ASSERT (jerry_get_boolean_value (value) == false);
|
JERRY_ASSERT (jerry_get_boolean_value (value) == false);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
else if (!strncmp (str_buf_p, "charlie", (size_t) sz))
|
else if (!strncmp (str_buf_p, "charlie", (size_t) sz))
|
||||||
{
|
{
|
||||||
JERRY_ASSERT (jerry_value_is_object (value));
|
JERRY_ASSERT (jerry_value_is_object (value));
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
else if (!strncmp (str_buf_p, "delta", (size_t) sz))
|
else if (!strncmp (str_buf_p, "delta", (size_t) sz))
|
||||||
{
|
{
|
||||||
JERRY_ASSERT (jerry_value_is_number (value));
|
JERRY_ASSERT (jerry_value_is_number (value));
|
||||||
JERRY_ASSERT (jerry_get_number_value (value) == 123.45);
|
JERRY_ASSERT (jerry_get_number_value (value) == 123.45);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
else if (!strncmp (str_buf_p, "echo", (size_t) sz))
|
else if (!strncmp (str_buf_p, "echo", (size_t) sz))
|
||||||
{
|
{
|
||||||
@@ -220,6 +221,7 @@ foreach (const jerry_value_t name, /**< field name */
|
|||||||
128);
|
128);
|
||||||
str_buf_p[echo_sz] = '\0';
|
str_buf_p[echo_sz] = '\0';
|
||||||
JERRY_ASSERT (!strncmp (str_buf_p, "foobar", (size_t) echo_sz));
|
JERRY_ASSERT (!strncmp (str_buf_p, "foobar", (size_t) echo_sz));
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
JERRY_ASSERT (false);
|
JERRY_ASSERT (false);
|
||||||
|
|||||||
Reference in New Issue
Block a user