Skip to content

Commit bfecc21

Browse files
committed
Fix bug in jerry_string_to_char_buffer.
str_len can smaller than buffer_size. JerryScript-DCO-1.0-Signed-off-by: Zidong Jiang [email protected]
1 parent f0fd939 commit bfecc21

File tree

2 files changed

+8
-6
lines changed

2 files changed

+8
-6
lines changed

jerry-core/jerry.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -999,7 +999,7 @@ jerry_string_to_char_buffer (const jerry_value_t value, /**< input string value
999999

10001000
ecma_string_t *str_p = ecma_get_string_from_value (value);
10011001

1002-
if (ecma_string_get_size (str_p) < buffer_size)
1002+
if (ecma_string_get_size (str_p) > buffer_size)
10031003
{
10041004
return 0;
10051005
}

tests/unit/test-api.c

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -187,30 +187,31 @@ foreach (const jerry_value_t name, /**< field name */
187187
jerry_size_t sz = jerry_string_to_char_buffer (name, (jerry_char_t *) str_buf_p, 128);
188188
str_buf_p[sz] = '\0';
189189

190-
if (sz == 0)
191-
{
192-
JERRY_ASSERT (!strncmp ((const char *) user_data, "user_data", 9));
193-
return true;
194-
}
190+
JERRY_ASSERT (!strncmp ((const char *) user_data, "user_data", 9));
191+
JERRY_ASSERT (sz > 0);
195192

196193
if (!strncmp (str_buf_p, "alpha", (size_t) sz))
197194
{
198195
JERRY_ASSERT (jerry_value_is_number (value));
199196
JERRY_ASSERT (jerry_get_number_value (value) == 32.0);
197+
return true;
200198
}
201199
else if (!strncmp (str_buf_p, "bravo", (size_t) sz))
202200
{
203201
JERRY_ASSERT (jerry_value_is_boolean (value));
204202
JERRY_ASSERT (jerry_get_boolean_value (value) == false);
203+
return true;
205204
}
206205
else if (!strncmp (str_buf_p, "charlie", (size_t) sz))
207206
{
208207
JERRY_ASSERT (jerry_value_is_object (value));
208+
return true;
209209
}
210210
else if (!strncmp (str_buf_p, "delta", (size_t) sz))
211211
{
212212
JERRY_ASSERT (jerry_value_is_number (value));
213213
JERRY_ASSERT (jerry_get_number_value (value) == 123.45);
214+
return true;
214215
}
215216
else if (!strncmp (str_buf_p, "echo", (size_t) sz))
216217
{
@@ -220,6 +221,7 @@ foreach (const jerry_value_t name, /**< field name */
220221
128);
221222
str_buf_p[echo_sz] = '\0';
222223
JERRY_ASSERT (!strncmp (str_buf_p, "foobar", (size_t) echo_sz));
224+
return true;
223225
}
224226

225227
JERRY_ASSERT (false);

0 commit comments

Comments
 (0)