summaryrefslogtreecommitdiffstats
path: root/libtests
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2022-05-20 15:57:30 +0200
committerJay Berkenbilt <ejb@ql.org>2022-05-20 16:13:15 +0200
commit3eb77a700434ed6d9b51e326fa4d49c530fcd473 (patch)
tree3f2c1a19093f25b8f849100dfb512038f2fa0db5 /libtests
parent6d4e3ba8a43d8a084a94f9cea4669cb35812fb67 (diff)
downloadqpdf-3eb77a700434ed6d9b51e326fa4d49c530fcd473.tar.zst
JSON: detect duplicate dictionary keys while parsing
Diffstat (limited to 'libtests')
-rw-r--r--libtests/libtests.testcov1
-rw-r--r--libtests/qtest/json_parse.test1
-rw-r--r--libtests/qtest/json_parse/bad-40.json6
-rw-r--r--libtests/qtest/json_parse/bad-40.out1
4 files changed, 9 insertions, 0 deletions
diff --git a/libtests/libtests.testcov b/libtests/libtests.testcov
index 1f006e81..21def9f3 100644
--- a/libtests/libtests.testcov
+++ b/libtests/libtests.testcov
@@ -92,3 +92,4 @@ JSON optional key 0
JSON 16 high high 0
JSON 16 low not after high 0
JSON 16 dangling high 0
+JSON parse duplicate key 0
diff --git a/libtests/qtest/json_parse.test b/libtests/qtest/json_parse.test
index 6d57e92c..112da0a9 100644
--- a/libtests/qtest/json_parse.test
+++ b/libtests/qtest/json_parse.test
@@ -120,6 +120,7 @@ my @bad = (
"stray low surrogate", # 37
"high high surrogate", # 38
"dangling high surrogate", # 39
+ "duplicate dictionary key", # 40
);
my $i = 0;
diff --git a/libtests/qtest/json_parse/bad-40.json b/libtests/qtest/json_parse/bad-40.json
new file mode 100644
index 00000000..f60bcc11
--- /dev/null
+++ b/libtests/qtest/json_parse/bad-40.json
@@ -0,0 +1,6 @@
+{
+ "one": 1,
+ "two": 2,
+ "one": 3,
+ "four": 4
+}
diff --git a/libtests/qtest/json_parse/bad-40.out b/libtests/qtest/json_parse/bad-40.out
new file mode 100644
index 00000000..28a78bfb
--- /dev/null
+++ b/libtests/qtest/json_parse/bad-40.out
@@ -0,0 +1 @@
+exception: bad-40.json: JSON: offset 28: duplicated dictionary key