]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
test: add a couple of tests with invalid UTF-8 characters 27283/head
authorFrantisek Sumsal <frantisek@sumsal.cz>
Sat, 15 Apr 2023 20:22:56 +0000 (22:22 +0200)
committerFrantisek Sumsal <frantisek@sumsal.cz>
Sun, 16 Apr 2023 07:21:13 +0000 (09:21 +0200)
src/test/test-env-file.c

index 461a0f0810177dcf237850eef9ae874e5bfba26d..c8ec0e2278aa449d86c756d197e272cd5e623ba5 100644 (file)
@@ -58,7 +58,6 @@
         "d= \" \\n\\t\\$\\`\\\\\n"              \
         "\"   \n"
 
-
 TEST(load_env_file_1) {
         _cleanup_(unlink_tempfilep) char name[] = "/tmp/test-load-env-file.XXXXXX";
         assert_se(write_tmpfile(name, env_file_1) == 0);
@@ -129,6 +128,25 @@ TEST(load_env_file_6) {
         assert_se(data[4] == NULL);
 }
 
+TEST(load_env_file_invalid_utf8) {
+        /* Test out a couple of assignments where the key/value has an invalid
+         * UTF-8 character ("noncharacter")
+         *
+         * See: https://en.wikipedia.org/wiki/Universal_Character_Set_characters#Non-characters
+         */
+        FOREACH_STRING(s,
+                       "fo\ufffeo=bar",
+                       "foo=b\uffffar",
+                       "baz=hello world\ufffe") {
+                _cleanup_(unlink_tempfilep) char name[] = "/tmp/test-load-env-file.XXXXXX";
+                assert_se(write_tmpfile(name, s) == 0);
+
+                _cleanup_strv_free_ char **data = NULL;
+                assert_se(load_env_file(NULL, name, &data) == -EINVAL);
+                assert_se(!data);
+        }
+}
+
 TEST(write_and_load_env_file) {
         /* Make sure that our writer, parser and the shell agree on what our env var files mean */