]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
test-execute: Introduce tests for environment values containing newlines 8471/head
authorFilipe Brandenburger <filbranden@google.com>
Fri, 16 Mar 2018 23:30:42 +0000 (16:30 -0700)
committerFilipe Brandenburger <filbranden@google.com>
Fri, 16 Mar 2018 23:31:17 +0000 (16:31 -0700)
Also fix one case where the presence of a newline was used to generate
an invalid environment assignment.

Tested: with mkosi, which builds the local tree and run ninja tests.

src/test/test-execute.c
test/test-execute/exec-environmentfile.service
test/test-execute/exec-passenvironment-absent.service
test/test-execute/exec-passenvironment-empty.service
test/test-execute/exec-passenvironment-repeated.service
test/test-execute/exec-passenvironment.service

index 954080df361b306ce10c7aaffbbb9f0a82b206cc..db8a9c75a91c0f64979706974d3da778d93dc229 100644 (file)
@@ -466,7 +466,8 @@ static void test_exec_environmentfile(Manager *m) {
                 "; comment2\n"
                 " ; # comment3\n"
                 "line without an equal\n"
-                "VAR3='$word 5 6'\n";
+                "VAR3='$word 5 6'\n"
+                "VAR4='new\nline'\n";
         int r;
 
         r = write_string_file("/tmp/test-exec_environmentfile.conf", e, WRITE_STRING_FILE_CREATE);
@@ -492,12 +493,14 @@ static void test_exec_passenvironment(Manager *m) {
         assert_se(setenv("VAR1", "word1 word2", 1) == 0);
         assert_se(setenv("VAR2", "word3", 1) == 0);
         assert_se(setenv("VAR3", "$word 5 6", 1) == 0);
+        assert_se(setenv("VAR4", "new\nline", 1) == 0);
         test(m, "exec-passenvironment.service", 0, CLD_EXITED);
         test(m, "exec-passenvironment-repeated.service", 0, CLD_EXITED);
         test(m, "exec-passenvironment-empty.service", 0, CLD_EXITED);
         assert_se(unsetenv("VAR1") == 0);
         assert_se(unsetenv("VAR2") == 0);
         assert_se(unsetenv("VAR3") == 0);
+        assert_se(unsetenv("VAR4") == 0);
         test(m, "exec-passenvironment-absent.service", 0, CLD_EXITED);
 }
 
index f6b8462719db069590078bc8cec08e112cd809fe..cd4747aa204b7395058639ca065ce0e23f119f22 100644 (file)
@@ -2,6 +2,6 @@
 Description=Test for EnvironmentFile
 
 [Service]
-ExecStart=/bin/sh -x -c 'test "$$VAR1" = "word1 word2" && test "$$VAR2" = word3 && test "$$VAR3" = "\\$$word 5 6"'
+ExecStart=/bin/sh -x -c 'test "$$VAR1" = "word1 word2" && test "$$VAR2" = word3 && test "$$VAR3" = "\\$$word 5 6" && test "$$VAR4" = "new\nline"'
 Type=oneshot
 EnvironmentFile=/tmp/test-exec_environmentfile.conf
index 7d5e32a4eb35e407ae2fd701d0dabf13896a8897..4a82206a2c6f0d4c29a2007e6de9597662f8a597 100644 (file)
@@ -2,6 +2,6 @@
 Description=Test for PassEnvironment with variables absent from the execution environment
 
 [Service]
-ExecStart=/bin/sh -x -c 'test "$${VAR1-unset}" = "unset" && test "$${VAR2-unset}" = "unset" && test "$${VAR3-unset}" = "unset"'
+ExecStart=/bin/sh -x -c 'test "$${VAR1-unset}" = "unset" && test "$${VAR2-unset}" = "unset" && test "$${VAR3-unset}" = "unset" && test "$${VAR4-unset}" = "unset"'
 Type=oneshot
-PassEnvironment=VAR1 VAR2 VAR3
+PassEnvironment=VAR1 VAR2 VAR3 VAR4
index c93c197c10407ad59b156b6429fce7af03ee787d..8716cdf6bbfcbf6fb035a16916db0674dda409ff 100644 (file)
@@ -2,7 +2,7 @@
 Description=Test for PassEnvironment and erasing the variable list
 
 [Service]
-ExecStart=/bin/sh -x -c 'test "$${VAR1-unset}" = "unset" && test "$${VAR2-unset}" = "unset" && test "$${VAR3-unset}" = "unset"'
+ExecStart=/bin/sh -x -c 'test "$${VAR1-unset}" = "unset" && test "$${VAR2-unset}" = "unset" && test "$${VAR3-unset}" = "unset" && test "$${VAR4-unset}" = "unset"'
 Type=oneshot
-PassEnvironment=VAR1 VAR2 VAR3
+PassEnvironment=VAR1 VAR2 VAR3 VAR4
 PassEnvironment=
index 5e8c56f26afa0fd5cbb1566c1ccb50b177741448..d518d7d8a58a0d6f83244d8108f74cbba91a2c62 100644 (file)
@@ -2,7 +2,8 @@
 Description=Test for PassEnvironment with a variable name repeated
 
 [Service]
-ExecStart=/bin/sh -x -c 'test "$$VAR1" = "word1 word2" && test "$$VAR2" = word3 && test "$$VAR3" = "\\$$word 5 6"'
+ExecStart=/bin/sh -x -c 'test "$$VAR1" = "word1 word2" && test "$$VAR2" = word3 && test "$$VAR3" = "\\$$word 5 6" && test "$$VAR4" = "new\nline"'
 Type=oneshot
 PassEnvironment=VAR1 VAR2
 PassEnvironment=VAR1 VAR3
+PassEnvironment=VAR1 VAR4
index b4a9909682889a8ee2dbd1abed49b1cbdb0775d0..cca44ebf4ae1f5faa66082477ea3b5e53917b8d5 100644 (file)
@@ -2,6 +2,6 @@
 Description=Test for PassEnvironment
 
 [Service]
-ExecStart=/bin/sh -x -c 'test "$$VAR1" = "word1 word2" && test "$$VAR2" = word3 && test "$$VAR3" = "\\$$word 5 6"'
+ExecStart=/bin/sh -x -c 'test "$$VAR1" = "word1 word2" && test "$$VAR2" = word3 && test "$$VAR3" = "\\$$word 5 6" && test "$$VAR4" = "new\nline"'
 Type=oneshot
-PassEnvironment=VAR1 VAR2 VAR3
+PassEnvironment=VAR1 VAR2 VAR3 VAR4