]> git.ipfire.org Git - thirdparty/json-c.git/commitdiff
Add an parse test for content starting with a UTF8 BOM, which is _not_ a valid start...
authorEric Haszlakiewicz <erh+git@nimenees.com>
Sun, 25 Mar 2018 22:23:42 +0000 (18:23 -0400)
committerEric Haszlakiewicz <erh+git@nimenees.com>
Sun, 25 Mar 2018 22:23:42 +0000 (18:23 -0400)
tests/test_parse.c
tests/test_parse.expected

index ee1f8387b31a4ff1cb81ada76390ed617bd71db9..f46651b0a1b70f0587670f0c763da6d4c6d7a0bd 100644 (file)
@@ -9,6 +9,7 @@
 #include "json_visit.h"
 
 static void test_basic_parse(void);
+static void test_utf8_parse(void);
 static void test_verbose_parse(void);
 static void test_incremental_parse(void);
 
@@ -19,6 +20,8 @@ int main(void)
        static const char separator[] = "==================================";
        test_basic_parse();
        puts(separator);
+       test_utf8_parse();
+       puts(separator);
        test_verbose_parse();
        puts(separator);
        test_incremental_parse();
@@ -107,6 +110,17 @@ static void test_basic_parse()
        single_basic_parse("[18446744073709551616]", 1);
 }
 
+static void test_utf8_parse()
+{
+       // json_tokener_parse doesn't support checking for byte order marks.
+       // It's the responsibility of the caller to detect and skip a BOM.
+       // Both of these checks return null.
+       char utf8_bom[] = { 0xEF, 0xBB, 0xBF, 0x00 };
+       char utf8_bom_and_chars[] = { 0xEF, 0xBB, 0xBF, '{', '}', 0x00 };
+       single_basic_parse(utf8_bom, 0);
+       single_basic_parse(utf8_bom_and_chars, 0);
+}
+
 // Clear the re-serialization information that the tokener
 // saves to ensure that the output reflects the actual
 // values we parsed, rather than just the original input.
@@ -145,7 +159,7 @@ static void test_verbose_parse()
        /* b/c the string starts with 'f' parsing return a boolean error */
        assert (error == json_tokener_error_parse_boolean);
 
-       puts("json_tokener_parse_versbose() OK");
+       puts("json_tokener_parse_verbose() OK");
 }
 
 struct incremental_step {
index ada61411fea125901beea32e431ac08d7c0bb4bd..5d3976a7459bb628eb28e7a02ff9871fc1f9ec64 100644 (file)
@@ -51,7 +51,10 @@ new_obj.to_string([0e+])=[ 0.0 ]
 new_obj.to_string([0e+-1])=null
 new_obj.to_string([18446744073709551616])=[ 9223372036854775807 ]
 ==================================
-json_tokener_parse_versbose() OK
+new_obj.to_string()=null
+new_obj.to_string({})=null
+==================================
+json_tokener_parse_verbose() OK
 ==================================
 Starting incremental tests.
 Note: quotes and backslashes seen in the output here are literal values passed