Skip to content

Commit 1e01bd0

Browse files
committed
Improve validation of object keys
1 parent f75e1f3 commit 1e01bd0

File tree

3 files changed

+8
-2
lines changed

3 files changed

+8
-2
lines changed

jawk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,7 @@ function __parse_object(path, sep, i, raw_value, key, colon, value, raw_key) {
315315
raw_value = raw_value key
316316
break
317317
}
318-
if (length(key) < 2) __error(key)
318+
if (length(key) < 2 || substr(key, 1, 1) != "\"") __error(key)
319319
raw_key = key
320320
key = substr(key, 2, length(key) - 2)
321321
colon = __get_token()

src/jawk.awk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ function __parse_object(path, sep, i, raw_value, key, colon, value, raw_key) {
283283
raw_value = raw_value key
284284
break
285285
}
286-
if (length(key) < 2) __error(key)
286+
if (length(key) < 2 || substr(key, 1, 1) != "\"") __error(key)
287287
raw_key = key
288288
key = substr(key, 2, length(key) - 2)
289289
colon = __get_token()

test/run.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,12 @@ err=$(cat test/err; rm test/err)
217217
[ "$out" = 1 ]
218218
[ "$err" = 'jawk: unexpected token "' ]
219219
220+
test "unexpected token in object key (number)"
221+
out=$(echo '{12:34}' | jawk '{print}' 2>test/err; echo $?)
222+
err=$(cat test/err; rm test/err)
223+
[ "$out" = 1 ]
224+
[ "$err" = 'jawk: unexpected token 12' ]
225+
220226
test "unexpected token in object colon"
221227
out=$(echo '{"x"c' | jawk '{print}' 2>test/err; echo $?)
222228
err=$(cat test/err; rm test/err)

0 commit comments

Comments
 (0)