From: Lubomir Rintel Date: Wed, 11 Oct 2017 13:05:38 +0000 (+0200) Subject: basic/env-util: don't relax unesaping of serialized environment strings X-Git-Tag: v236~322^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fpull%2F7061%2Fhead;p=thirdparty%2Fsystemd.git basic/env-util: don't relax unesaping of serialized environment strings We wrote them ourselves -- they shouldn't contain invalid sequences. --- diff --git a/src/basic/env-util.c b/src/basic/env-util.c index a8b51e719f2..0da10de0c88 100644 --- a/src/basic/env-util.c +++ b/src/basic/env-util.c @@ -805,7 +805,7 @@ int deserialize_environment(char ***environment, const char *line) { assert(environment); assert(startswith(line, "env=")); - r = cunescape(line + 4, UNESCAPE_RELAX, &uce); + r = cunescape(line + 4, 0, &uce); if (r < 0) return r; diff --git a/src/test/test-env-util.c b/src/test/test-env-util.c index b14d62760f6..a76f691b79f 100644 --- a/src/test/test-env-util.c +++ b/src/test/test-env-util.c @@ -323,6 +323,9 @@ static void test_deserialize_environment(void) { assert_se(deserialize_environment(&env, "env=FOO%%=a\\177b\\nc\\td e") >= 0); assert_se(strv_equal(env, STRV_MAKE("A=1", "B=2", "FOO%%=a\177b\nc\td e"))); + + assert_se(deserialize_environment(&env, "env=foo\\") < 0); + assert_se(deserialize_environment(&env, "env=bar\\_baz") < 0); } static void test_serialize_environment(void) {