]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
test: add tests for UNESCAPE_ACCEPT_NUL
authorYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 27 Jan 2020 09:09:25 +0000 (18:09 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 27 Jan 2020 10:58:06 +0000 (19:58 +0900)
src/test/test-escape.c

index add17f9547dc6b803143d4cef265f1a8f54167a2..f6aae1eb1828d8432648cd043a1f036bc73127c6 100644 (file)
@@ -96,6 +96,22 @@ static void test_cunescape(void) {
 
         assert_se(cunescape("A=A\\\\x0aB", UNESCAPE_RELAX, &unescaped) >= 0);
         assert_se(streq_ptr(unescaped, "A=A\\x0aB"));
+        unescaped = mfree(unescaped);
+
+        assert_se(cunescape("\\x00\\x00\\x00", UNESCAPE_ACCEPT_NUL, &unescaped) == 3);
+        assert_se(memcmp(unescaped, "\0\0\0", 3) == 0);
+        unescaped = mfree(unescaped);
+
+        assert_se(cunescape("\\u0000\\u0000\\u0000", UNESCAPE_ACCEPT_NUL, &unescaped) == 3);
+        assert_se(memcmp(unescaped, "\0\0\0", 3) == 0);
+        unescaped = mfree(unescaped);
+
+        assert_se(cunescape("\\U00000000\\U00000000\\U00000000", UNESCAPE_ACCEPT_NUL, &unescaped) == 3);
+        assert_se(memcmp(unescaped, "\0\0\0", 3) == 0);
+        unescaped = mfree(unescaped);
+
+        assert_se(cunescape("\\000\\000\\000", UNESCAPE_ACCEPT_NUL, &unescaped) == 3);
+        assert_se(memcmp(unescaped, "\0\0\0", 3) == 0);
 }
 
 static void test_shell_escape_one(const char *s, const char *bad, const char *expected) {