Skip to content

Commit 7099135

Browse files
authored
Merge pull request bitcoin#36 from ryanofsky/pr/end-str
Reject unterminated strings
2 parents a31231b + 4fd5444 commit 7099135

File tree

4 files changed

+5
-2
lines changed

4 files changed

+5
-2
lines changed

Makefile.am

+1
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ TEST_FILES = \
8888
$(TEST_DATA_DIR)/fail40.json \
8989
$(TEST_DATA_DIR)/fail41.json \
9090
$(TEST_DATA_DIR)/fail42.json \
91+
$(TEST_DATA_DIR)/fail44.json \
9192
$(TEST_DATA_DIR)/fail3.json \
9293
$(TEST_DATA_DIR)/fail4.json \
9394
$(TEST_DATA_DIR)/fail5.json \

lib/univalue_read.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -177,8 +177,8 @@ enum jtokentype getJsonToken(string& tokenVal, unsigned int& consumed,
177177
string valStr;
178178
JSONUTF8StringFilter writer(valStr);
179179

180-
while (raw < end) {
181-
if ((unsigned char)*raw < 0x20)
180+
while (true) {
181+
if (raw >= end || (unsigned char)*raw < 0x20)
182182
return JTOK_ERR;
183183

184184
else if (*raw == '\\') {

test/fail44.json

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
"This file ends without a newline or close-quote.

test/unitester.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ static const char *filenames[] = {
114114
"fail40.json", // invalid unicode: broken UTF-8
115115
"fail41.json", // invalid unicode: unfinished UTF-8
116116
"fail42.json", // valid json with garbage following a nul byte
117+
"fail44.json", // unterminated string
117118
"fail3.json",
118119
"fail4.json", // extra comma
119120
"fail5.json",

0 commit comments

Comments
 (0)