Skip to content

Commit e6c81a6

Browse files
committed
Fix missing null terminator in lept_parse_object()
1 parent c90370b commit e6c81a6

File tree

2 files changed

+3
-2
lines changed

2 files changed

+3
-2
lines changed

tutorial06_answer/leptjson.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,8 @@ static int lept_parse_object(lept_context* c, lept_value* v) {
260260
}
261261
if ((ret = lept_parse_string_raw(c, &str, &m.klen)) != LEPT_PARSE_OK)
262262
break;
263-
memcpy(m.k = (char*)malloc(m.klen + 1), str, m.klen + 1);
263+
memcpy(m.k = (char*)malloc(m.klen + 1), str, m.klen);
264+
m.k[m.klen] = '\0';
264265
/* parse ws colon ws */
265266
lept_parse_whitespace(c);
266267
if (*c->json != ':') {

tutorial06_answer/test.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ static int test_pass = 0;
2525
#define EXPECT_EQ_INT(expect, actual) EXPECT_EQ_BASE((expect) == (actual), expect, actual, "%d")
2626
#define EXPECT_EQ_DOUBLE(expect, actual) EXPECT_EQ_BASE((expect) == (actual), expect, actual, "%.17g")
2727
#define EXPECT_EQ_STRING(expect, actual, alength) \
28-
EXPECT_EQ_BASE(sizeof(expect) - 1 == alength && memcmp(expect, actual, alength) == 0, expect, actual, "%s")
28+
EXPECT_EQ_BASE(sizeof(expect) - 1 == alength && memcmp(expect, actual, alength + 1) == 0, expect, actual, "%s")
2929
#define EXPECT_TRUE(actual) EXPECT_EQ_BASE((actual) != 0, "true", "false", "%s")
3030
#define EXPECT_FALSE(actual) EXPECT_EQ_BASE((actual) == 0, "false", "true", "%s")
3131

0 commit comments

Comments
 (0)