1313 "a=a\n" \
1414 "b=b\\\n" \
1515 "c\n" \
16- "d=d\\\n" \
17- "e\\\n" \
18- "f\n" \
16+ "d= d\\\n" \
17+ "e \\\n" \
18+ "f \n" \
1919 "g=g\\ \n" \
20- "h=h\n" \
20+ "h= ąęół\\ śćńźżµ \n" \
2121 "i=i\\"
2222
2323#define env_file_2 \
2626#define env_file_3 \
2727 "#SPAMD_ARGS=\"-d --socketpath=/var/lib/bulwark/spamd \\\n" \
2828 "#--nouser-config \\\n" \
29- "normal=line"
30-
31- #define env_file_4 \
32- "# Generated\n" \
33- "\n" \
34- "HWMON_MODULES=\"coretemp f71882fg\"\n" \
35- "\n" \
36- "# For compatibility reasons\n" \
37- "\n" \
38- "MODULE_0=coretemp\n" \
39- "MODULE_1=f71882fg"
29+ "normal=line \\\n" \
30+ ";normal=ignored \\\n" \
31+ "normal_ignored \\\n" \
32+ "normal ignored \\\n"
33+
34+ #define env_file_4 \
35+ "# Generated\n" \
36+ "\n" \
37+ "HWMON_MODULES=\"coretemp f71882fg\"\n" \
38+ "\n" \
39+ "# For compatibility reasons\n" \
40+ "\n" \
41+ "MODULE_0=coretemp\n" \
42+ "MODULE_1=f71882fg"
4043
4144#define env_file_5 \
42- "a=\n" \
45+ "a=\n" \
4346 "b="
4447
48+ #define env_file_6 \
49+ "a=\\ \\n \\t \\x \\y \\' \n" \
50+ "b= \\$' \n" \
51+ "c= ' \\n\\t\\$\\`\\\\\n" \
52+ "' \n" \
53+ "d= \" \\n\\t\\$\\`\\\\\n" \
54+ "\" \n"
55+
56+
4557TEST (load_env_file_1 ) {
4658 _cleanup_strv_free_ char * * data = NULL ;
4759 int r ;
@@ -57,9 +69,9 @@ TEST(load_env_file_1) {
5769 assert_se (r == 0 );
5870 assert_se (streq (data [0 ], "a=a" ));
5971 assert_se (streq (data [1 ], "b=bc" ));
60- assert_se (streq (data [2 ], "d=def " ));
72+ assert_se (streq (data [2 ], "d=de f " ));
6173 assert_se (streq (data [3 ], "g=g " ));
62- assert_se (streq (data [4 ], "h=h " ));
74+ assert_se (streq (data [4 ], "h=ąęół śćńźżµ " ));
6375 assert_se (streq (data [5 ], "i=i" ));
6476 assert_se (data [6 ] == NULL );
6577}
@@ -133,6 +145,26 @@ TEST(load_env_file_5) {
133145 assert_se (data [2 ] == NULL );
134146}
135147
148+ TEST (load_env_file_6 ) {
149+ _cleanup_strv_free_ char * * data = NULL ;
150+ int r ;
151+
152+ _cleanup_ (unlink_tempfilep ) char name [] = "/tmp/test-load-env-file.XXXXXX" ;
153+ _cleanup_close_ int fd ;
154+
155+ fd = mkostemp_safe (name );
156+ assert_se (fd >= 0 );
157+ assert_se (write (fd , env_file_6 , strlen (env_file_6 )) == strlen (env_file_6 ));
158+
159+ r = load_env_file (NULL , name , & data );
160+ assert_se (r == 0 );
161+ assert_se (streq (data [0 ], "a= n t x y '" ));
162+ assert_se (streq (data [1 ], "b=$'" ));
163+ assert_se (streq (data [2 ], "c= \\n\\t\\$\\`\\\\\n" ));
164+ assert_se (streq (data [3 ], "d= \\n\\t$`\\\n" ));
165+ assert_se (data [4 ] == NULL );
166+ }
167+
136168TEST (write_and_load_env_file ) {
137169 const char * v ;
138170
0 commit comments