diff --git a/NEWS b/NEWS index a2a9aa351f..cd9792a0b6 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,12 @@ systemd System and Service Manager CHANGES WITH 254 in spe: + Announcements of Future Feature Removals and Incompatible Changes: + + * EnvironmentFile now treats the line following a comment line trailing + with escape as a non comment line. For details, see: + https://github.com/systemd/systemd/issues/27975 + Security relevant changes: * pam_systemd will now by default pass the CAP_WAKE_ALARM ambient diff --git a/src/basic/env-file.c b/src/basic/env-file.c index 58d7b3ec35..eb5e640494 100644 --- a/src/basic/env-file.c +++ b/src/basic/env-file.c @@ -243,7 +243,13 @@ static int parse_env_file_internal( break; case COMMENT_ESCAPE: - state = COMMENT; + log_debug("The line which doesn't begin with \";\" or \"#\", but follows a comment" \ + " line trailing with escape is now treated as a non comment line since v254."); + if (strchr(NEWLINE, c)) { + state = PRE_KEY; + line++; + } else + state = COMMENT; break; } } diff --git a/src/test/test-env-file.c b/src/test/test-env-file.c index cc20031ed7..6480e7beb3 100644 --- a/src/test/test-env-file.c +++ b/src/test/test-env-file.c @@ -31,9 +31,10 @@ #define env_file_3 \ "#SPAMD_ARGS=\"-d --socketpath=/var/lib/bulwark/spamd \\\n" \ "#--nouser-config \\\n" \ - "normal=line \\\n" \ + "normal1=line\\\n" \ + "111\n" \ ";normal=ignored \\\n" \ - "normal_ignored \\\n" \ + "normal2=line222\n" \ "normal ignored \\\n" #define env_file_4 \ @@ -89,7 +90,9 @@ TEST(load_env_file_3) { _cleanup_strv_free_ char **data = NULL; assert_se(load_env_file(NULL, name, &data) == 0); - assert_se(data == NULL); + assert_se(streq(data[0], "normal1=line111")); + assert_se(streq(data[1], "normal2=line222")); + assert_se(data[2] == NULL); } TEST(load_env_file_4) {