From 71588cb6ad3c7151c943d95fd6c0b26f57d67388 Mon Sep 17 00:00:00 2001 From: Luca Boccassi Date: Fri, 2 Jun 2023 23:00:18 +0100 Subject: [PATCH 1/2] test-execute: add unit tests for *DirectorySymlink= --- test/test-execute/exec-dynamicuser-statedir.service | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/test/test-execute/exec-dynamicuser-statedir.service b/test/test-execute/exec-dynamicuser-statedir.service index b7e36f529e..734fa209af 100644 --- a/test/test-execute/exec-dynamicuser-statedir.service +++ b/test/test-execute/exec-dynamicuser-statedir.service @@ -11,9 +11,11 @@ ExecStart=test -w %S/aaa/ccc ExecStart=test -w %S/xxx ExecStart=test -w %S/xxx/yyy ExecStart=test -w %S/xxx/zzz +ExecStart=test -w %S/abc ExecStart=test -w %S/aaa/111 ExecStart=test -w %S/aaa/222 ExecStart=test -w %S/aaa/333 +ExecStart=test -w %S/d:ef ExecStart=test -d %S/waldo ExecStart=test -d %S/quux/pief @@ -23,9 +25,11 @@ ExecStart=test -d %S/aaa/ccc ExecStart=test -d %S/xxx ExecStart=test -d %S/xxx/yyy ExecStart=test -d %S/xxx/zzz +ExecStart=test -d %S/abc ExecStart=test -L %S/aaa/111 ExecStart=test -L %S/aaa/222 ExecStart=test -L %S/aaa/333 +ExecStart=test -L %S/d:ef ExecStart=touch %S/waldo/hoge ExecStart=touch %S/quux/pief/hoge @@ -35,9 +39,11 @@ ExecStart=touch %S/aaa/ccc/hoge ExecStart=touch %S/xxx/hoge ExecStart=touch %S/xxx/yyy/hoge ExecStart=touch %S/xxx/zzz/hoge +ExecStart=touch %S/abc/hoge ExecStart=touch %S/aaa/111/foo ExecStart=touch %S/aaa/222/foo ExecStart=touch %S/aaa/333/foo +ExecStart=touch %S/d:ef/foo ExecStart=test -f %S/waldo/hoge ExecStart=test -f %S/quux/pief/hoge @@ -47,12 +53,14 @@ ExecStart=test -f %S/aaa/ccc/hoge ExecStart=test -f %S/xxx/hoge ExecStart=test -f %S/xxx/yyy/hoge ExecStart=test -f %S/xxx/zzz/hoge +ExecStart=test -f %S/abc/hoge ExecStart=test -f %S/aaa/111/foo ExecStart=test -f %S/aaa/222/foo ExecStart=test -f %S/aaa/333/foo ExecStart=test -f %S/xxx/foo ExecStart=test -f %S/xxx/yyy/foo ExecStart=test -f %S/xxx/zzz/foo +ExecStart=test -f %S/d:ef/foo ExecStart=test -f %S/private/waldo/hoge ExecStart=test -f %S/private/quux/pief/hoge @@ -62,6 +70,7 @@ ExecStart=test -f %S/private/aaa/ccc/hoge ExecStart=test -f %S/private/xxx/hoge ExecStart=test -f %S/private/xxx/yyy/hoge ExecStart=test -f %S/private/xxx/zzz/hoge +ExecStart=test -f %S/private/abc/hoge ExecStart=test -f %S/private/aaa/111/foo ExecStart=test -f %S/private/aaa/222/foo ExecStart=test -f %S/private/aaa/333/foo @@ -69,8 +78,8 @@ ExecStart=test -f %S/private/xxx/foo ExecStart=test -f %S/private/xxx/yyy/foo ExecStart=test -f %S/private/xxx/zzz/foo -ExecStart=sh -x -c 'test "$$STATE_DIRECTORY" = "%S/aaa:%S/aaa/bbb:%S/aaa/ccc:%S/quux/pief:%S/waldo:%S/xxx:%S/xxx/yyy:%S/xxx/zzz"' +ExecStart=sh -x -c 'test "$$STATE_DIRECTORY" = "%S/aaa:%S/aaa/bbb:%S/aaa/ccc:%S/abc:%S/quux/pief:%S/waldo:%S/xxx:%S/xxx/yyy:%S/xxx/zzz"' Type=oneshot DynamicUser=yes -StateDirectory=waldo quux/pief aaa/bbb aaa aaa/ccc xxx/yyy:aaa/111 xxx:aaa/222 xxx/zzz:aaa/333 +StateDirectory=waldo quux/pief aaa/bbb aaa aaa/ccc xxx/yyy:aaa/111 xxx:aaa/222 xxx/zzz:aaa/333 abc:d\:ef From 1d6f1e2fa1820e66ce8fea44cbefbbf3389d1cdf Mon Sep 17 00:00:00 2001 From: Luca Boccassi Date: Thu, 1 Jun 2023 19:32:29 +0100 Subject: [PATCH 2/2] serialize: add deserialize_strv helper --- src/shared/serialize.c | 14 ++++++++++++++ src/shared/serialize.h | 1 + src/test/test-serialize.c | 5 +---- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/shared/serialize.c b/src/shared/serialize.c index 9d1a21360f..5396062a8b 100644 --- a/src/shared/serialize.c +++ b/src/shared/serialize.c @@ -131,6 +131,20 @@ int serialize_strv(FILE *f, const char *key, char **l) { return ret; } +int deserialize_strv(char ***l, const char *value) { + ssize_t unescaped_len; + char *unescaped; + + assert(l); + assert(value); + + unescaped_len = cunescape(value, 0, &unescaped); + if (unescaped_len < 0) + return unescaped_len; + + return strv_consume(l, unescaped); +} + int deserialize_usec(const char *value, usec_t *ret) { int r; diff --git a/src/shared/serialize.h b/src/shared/serialize.h index 6d4f1ef418..8fdc6dc304 100644 --- a/src/shared/serialize.h +++ b/src/shared/serialize.h @@ -23,5 +23,6 @@ static inline int serialize_bool(FILE *f, const char *key, bool b) { int deserialize_usec(const char *value, usec_t *timestamp); int deserialize_dual_timestamp(const char *value, dual_timestamp *t); int deserialize_environment(const char *value, char ***environment); +int deserialize_strv(char ***l, const char *value); int open_serialization_fd(const char *ident); diff --git a/src/test/test-serialize.c b/src/test/test-serialize.c index bcf2e843b0..a297e9515e 100644 --- a/src/test/test-serialize.c +++ b/src/test/test-serialize.c @@ -124,10 +124,7 @@ TEST(serialize_strv) { const char *t = startswith(line, "strv3="); assert_se(t); - - char *un; - assert_se(cunescape(t, 0, &un) >= 0); - assert_se(strv_consume(&strv2, un) >= 0); + assert_se(deserialize_strv(&strv2, t) >= 0); } assert_se(strv_equal(strv, strv2));