aboutsummaryrefslogtreecommitdiff
path: root/test/json101.test
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2016-11-07 13:37:28 +0000
committerdrh <drh@noemail.net>2016-11-07 13:37:28 +0000
commitad875e741601ea1fa749c18047ce8c1f34e8c510 (patch)
tree8d927f54d5b6be8770bad81fbd8301a6b7cc7d3d /test/json101.test
parenta2bfa046ea93dab08e025809f4fea2629c71fbea (diff)
downloadsqlite-ad875e741601ea1fa749c18047ce8c1f34e8c510.tar.gz
sqlite-ad875e741601ea1fa749c18047ce8c1f34e8c510.zip
Fix the JSON1 extension so that the JSON validator correctly rejects malformed
backslash escapes within string literals. FossilOrigin-Name: 7a63539169a384960e30a63e0c8e9b0f07fa431e
Diffstat (limited to 'test/json101.test')
-rw-r--r--test/json101.test307
1 files changed, 305 insertions, 2 deletions
diff --git a/test/json101.test b/test/json101.test
index 3ee007c1c..37123eef1 100644
--- a/test/json101.test
+++ b/test/json101.test
@@ -382,8 +382,311 @@ do_catchsql_test json-9.7 {
SELECT json_quote()
} {1 {wrong number of arguments to function json_quote()}}
-
-
+# Make sure only valid backslash-escapes are accepted.
+#
+do_execsql_test json-10.1 {
+ SELECT json_valid('" \ "');
+} {0}
+do_execsql_test json-10.2 {
+ SELECT json_valid('" \! "');
+} {0}
+do_execsql_test json-10.3 {
+ SELECT json_valid('" \" "');
+} {1}
+do_execsql_test json-10.4 {
+ SELECT json_valid('" \# "');
+} {0}
+do_execsql_test json-10.5 {
+ SELECT json_valid('" \$ "');
+} {0}
+do_execsql_test json-10.6 {
+ SELECT json_valid('" \% "');
+} {0}
+do_execsql_test json-10.7 {
+ SELECT json_valid('" \& "');
+} {0}
+do_execsql_test json-10.8 {
+ SELECT json_valid('" \'' "');
+} {0}
+do_execsql_test json-10.9 {
+ SELECT json_valid('" \( "');
+} {0}
+do_execsql_test json-10.10 {
+ SELECT json_valid('" \) "');
+} {0}
+do_execsql_test json-10.11 {
+ SELECT json_valid('" \* "');
+} {0}
+do_execsql_test json-10.12 {
+ SELECT json_valid('" \+ "');
+} {0}
+do_execsql_test json-10.13 {
+ SELECT json_valid('" \, "');
+} {0}
+do_execsql_test json-10.14 {
+ SELECT json_valid('" \- "');
+} {0}
+do_execsql_test json-10.15 {
+ SELECT json_valid('" \. "');
+} {0}
+do_execsql_test json-10.16 {
+ SELECT json_valid('" \/ "');
+} {1}
+do_execsql_test json-10.17 {
+ SELECT json_valid('" \0 "');
+} {0}
+do_execsql_test json-10.18 {
+ SELECT json_valid('" \1 "');
+} {0}
+do_execsql_test json-10.19 {
+ SELECT json_valid('" \2 "');
+} {0}
+do_execsql_test json-10.20 {
+ SELECT json_valid('" \3 "');
+} {0}
+do_execsql_test json-10.21 {
+ SELECT json_valid('" \4 "');
+} {0}
+do_execsql_test json-10.22 {
+ SELECT json_valid('" \5 "');
+} {0}
+do_execsql_test json-10.23 {
+ SELECT json_valid('" \6 "');
+} {0}
+do_execsql_test json-10.24 {
+ SELECT json_valid('" \7 "');
+} {0}
+do_execsql_test json-10.25 {
+ SELECT json_valid('" \8 "');
+} {0}
+do_execsql_test json-10.26 {
+ SELECT json_valid('" \9 "');
+} {0}
+do_execsql_test json-10.27 {
+ SELECT json_valid('" \: "');
+} {0}
+do_execsql_test json-10.28 {
+ SELECT json_valid('" \; "');
+} {0}
+do_execsql_test json-10.29 {
+ SELECT json_valid('" \< "');
+} {0}
+do_execsql_test json-10.30 {
+ SELECT json_valid('" \= "');
+} {0}
+do_execsql_test json-10.31 {
+ SELECT json_valid('" \> "');
+} {0}
+do_execsql_test json-10.32 {
+ SELECT json_valid('" \? "');
+} {0}
+do_execsql_test json-10.33 {
+ SELECT json_valid('" \@ "');
+} {0}
+do_execsql_test json-10.34 {
+ SELECT json_valid('" \A "');
+} {0}
+do_execsql_test json-10.35 {
+ SELECT json_valid('" \B "');
+} {0}
+do_execsql_test json-10.36 {
+ SELECT json_valid('" \C "');
+} {0}
+do_execsql_test json-10.37 {
+ SELECT json_valid('" \D "');
+} {0}
+do_execsql_test json-10.38 {
+ SELECT json_valid('" \E "');
+} {0}
+do_execsql_test json-10.39 {
+ SELECT json_valid('" \F "');
+} {0}
+do_execsql_test json-10.40 {
+ SELECT json_valid('" \G "');
+} {0}
+do_execsql_test json-10.41 {
+ SELECT json_valid('" \H "');
+} {0}
+do_execsql_test json-10.42 {
+ SELECT json_valid('" \I "');
+} {0}
+do_execsql_test json-10.43 {
+ SELECT json_valid('" \J "');
+} {0}
+do_execsql_test json-10.44 {
+ SELECT json_valid('" \K "');
+} {0}
+do_execsql_test json-10.45 {
+ SELECT json_valid('" \L "');
+} {0}
+do_execsql_test json-10.46 {
+ SELECT json_valid('" \M "');
+} {0}
+do_execsql_test json-10.47 {
+ SELECT json_valid('" \N "');
+} {0}
+do_execsql_test json-10.48 {
+ SELECT json_valid('" \O "');
+} {0}
+do_execsql_test json-10.49 {
+ SELECT json_valid('" \P "');
+} {0}
+do_execsql_test json-10.50 {
+ SELECT json_valid('" \Q "');
+} {0}
+do_execsql_test json-10.51 {
+ SELECT json_valid('" \R "');
+} {0}
+do_execsql_test json-10.52 {
+ SELECT json_valid('" \S "');
+} {0}
+do_execsql_test json-10.53 {
+ SELECT json_valid('" \T "');
+} {0}
+do_execsql_test json-10.54 {
+ SELECT json_valid('" \U "');
+} {0}
+do_execsql_test json-10.55 {
+ SELECT json_valid('" \V "');
+} {0}
+do_execsql_test json-10.56 {
+ SELECT json_valid('" \W "');
+} {0}
+do_execsql_test json-10.57 {
+ SELECT json_valid('" \X "');
+} {0}
+do_execsql_test json-10.58 {
+ SELECT json_valid('" \Y "');
+} {0}
+do_execsql_test json-10.59 {
+ SELECT json_valid('" \Z "');
+} {0}
+do_execsql_test json-10.60 {
+ SELECT json_valid('" \[ "');
+} {0}
+do_execsql_test json-10.61 {
+ SELECT json_valid('" \\ "');
+} {1}
+do_execsql_test json-10.62 {
+ SELECT json_valid('" \] "');
+} {0}
+do_execsql_test json-10.63 {
+ SELECT json_valid('" \^ "');
+} {0}
+do_execsql_test json-10.64 {
+ SELECT json_valid('" \_ "');
+} {0}
+do_execsql_test json-10.65 {
+ SELECT json_valid('" \` "');
+} {0}
+do_execsql_test json-10.66 {
+ SELECT json_valid('" \a "');
+} {0}
+do_execsql_test json-10.67 {
+ SELECT json_valid('" \b "');
+} {1}
+do_execsql_test json-10.68 {
+ SELECT json_valid('" \c "');
+} {0}
+do_execsql_test json-10.69 {
+ SELECT json_valid('" \d "');
+} {0}
+do_execsql_test json-10.70 {
+ SELECT json_valid('" \e "');
+} {0}
+do_execsql_test json-10.71 {
+ SELECT json_valid('" \f "');
+} {1}
+do_execsql_test json-10.72 {
+ SELECT json_valid('" \g "');
+} {0}
+do_execsql_test json-10.73 {
+ SELECT json_valid('" \h "');
+} {0}
+do_execsql_test json-10.74 {
+ SELECT json_valid('" \i "');
+} {0}
+do_execsql_test json-10.75 {
+ SELECT json_valid('" \j "');
+} {0}
+do_execsql_test json-10.76 {
+ SELECT json_valid('" \k "');
+} {0}
+do_execsql_test json-10.77 {
+ SELECT json_valid('" \l "');
+} {0}
+do_execsql_test json-10.78 {
+ SELECT json_valid('" \m "');
+} {0}
+do_execsql_test json-10.79 {
+ SELECT json_valid('" \n "');
+} {1}
+do_execsql_test json-10.80 {
+ SELECT json_valid('" \o "');
+} {0}
+do_execsql_test json-10.81 {
+ SELECT json_valid('" \p "');
+} {0}
+do_execsql_test json-10.82 {
+ SELECT json_valid('" \q "');
+} {0}
+do_execsql_test json-10.83 {
+ SELECT json_valid('" \r "');
+} {1}
+do_execsql_test json-10.84 {
+ SELECT json_valid('" \s "');
+} {0}
+do_execsql_test json-10.85 {
+ SELECT json_valid('" \t "');
+} {1}
+do_execsql_test json-10.86.0 {
+ SELECT json_valid('" \u "');
+} {0}
+do_execsql_test json-10.86.1 {
+ SELECT json_valid('" \ua "');
+} {0}
+do_execsql_test json-10.86.2 {
+ SELECT json_valid('" \uab "');
+} {0}
+do_execsql_test json-10.86.3 {
+ SELECT json_valid('" \uabc "');
+} {0}
+do_execsql_test json-10.86.4 {
+ SELECT json_valid('" \uabcd "');
+} {1}
+do_execsql_test json-10.86.5 {
+ SELECT json_valid('" \uFEDC "');
+} {1}
+do_execsql_test json-10.86.6 {
+ SELECT json_valid('" \u1234 "');
+} {1}
+do_execsql_test json-10.87 {
+ SELECT json_valid('" \v "');
+} {0}
+do_execsql_test json-10.88 {
+ SELECT json_valid('" \w "');
+} {0}
+do_execsql_test json-10.89 {
+ SELECT json_valid('" \x "');
+} {0}
+do_execsql_test json-10.90 {
+ SELECT json_valid('" \y "');
+} {0}
+do_execsql_test json-10.91 {
+ SELECT json_valid('" \z "');
+} {0}
+do_execsql_test json-10.92 {
+ SELECT json_valid('" \{ "');
+} {0}
+do_execsql_test json-10.93 {
+ SELECT json_valid('" \| "');
+} {0}
+do_execsql_test json-10.94 {
+ SELECT json_valid('" \} "');
+} {0}
+do_execsql_test json-10.95 {
+ SELECT json_valid('" \~ "');
+} {0}
finish_test