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:
Zidong Jiang 2016-07-15 19:24:04 +08:00 committed by Zidong
parent 3354da3021
commit 6084f0845c
2 changed files with 8 additions and 6 deletions

View File

@ -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);
if (ecma_string_get_size (str_p) < buffer_size)
if (ecma_string_get_size (str_p) > buffer_size)
{
return 0;
}

View File

@ -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);
str_buf_p[sz] = '\0';
if (sz == 0)
{
JERRY_ASSERT (!strncmp ((const char *) user_data, "user_data", 9));
return true;
}
JERRY_ASSERT (!strncmp ((const char *) user_data, "user_data", 9));
JERRY_ASSERT (sz > 0);
if (!strncmp (str_buf_p, "alpha", (size_t) sz))
{
JERRY_ASSERT (jerry_value_is_number (value));
JERRY_ASSERT (jerry_get_number_value (value) == 32.0);
return true;
}
else if (!strncmp (str_buf_p, "bravo", (size_t) sz))
{
JERRY_ASSERT (jerry_value_is_boolean (value));
JERRY_ASSERT (jerry_get_boolean_value (value) == false);
return true;
}
else if (!strncmp (str_buf_p, "charlie", (size_t) sz))
{
JERRY_ASSERT (jerry_value_is_object (value));
return true;
}
else if (!strncmp (str_buf_p, "delta", (size_t) sz))
{
JERRY_ASSERT (jerry_value_is_number (value));
JERRY_ASSERT (jerry_get_number_value (value) == 123.45);
return true;
}
else if (!strncmp (str_buf_p, "echo", (size_t) sz))
{
@ -220,6 +221,7 @@ foreach (const jerry_value_t name, /**< field name */
128);
str_buf_p[echo_sz] = '\0';
JERRY_ASSERT (!strncmp (str_buf_p, "foobar", (size_t) echo_sz));
return true;
}
JERRY_ASSERT (false);