]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
nsflsgs: drop namespace_flag_{from,to}_string()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 1 May 2018 01:48:21 +0000 (10:48 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 5 May 2018 02:07:37 +0000 (11:07 +0900)
This also drops namespace_flag_to_string_many_with_check(), and
renames namespace_flag_{from,to}_string_many() to
namespace_flags_{from,to}_string().

src/core/dbus-execute.c
src/core/execute.c
src/core/load-fragment.c
src/shared/bus-unit-util.c
src/shared/bus-util.c
src/shared/nsflags.c
src/shared/nsflags.h
src/shared/seccomp-util.c
src/test/test-seccomp.c

index afe7545a0e30d35c89b4b3f24d2809110c8db1eb..e0abf384758f6f9af074a708f45d8694d9c20809 100644 (file)
@@ -1207,7 +1207,7 @@ static BUS_DEFINE_SET_TRANSIENT_PARSE_PTR(personality, unsigned long, parse_pers
 static BUS_DEFINE_SET_TRANSIENT_TO_STRING_ALLOC(secure_bits, "i", int32_t, int, "%" PRIi32, secure_bits_to_string_alloc_with_check);
 static BUS_DEFINE_SET_TRANSIENT_TO_STRING_ALLOC(capability, "t", uint64_t, uint64_t, "%" PRIu64, capability_set_to_string_alloc);
 static BUS_DEFINE_SET_TRANSIENT_TO_STRING_ALLOC(sched_policy, "i", int32_t, int, "%" PRIi32, sched_policy_to_string_alloc_with_check);
-static BUS_DEFINE_SET_TRANSIENT_TO_STRING_ALLOC(namespace_flag, "t", uint64_t, unsigned long, "%" PRIu64, namespace_flag_to_string_many);
+static BUS_DEFINE_SET_TRANSIENT_TO_STRING_ALLOC(namespace_flag, "t", uint64_t, unsigned long, "%" PRIu64, namespace_flags_to_string);
 static BUS_DEFINE_SET_TRANSIENT_TO_STRING(mount_flags, "t", uint64_t, unsigned long, "%" PRIu64, mount_propagation_flags_to_string_with_check);
 
 int bus_exec_context_set_transient_property(
index 11bf176f6be0627b1877f8cebd3500c8f3924222..a910eb89a309d36b29ec4d65105a6c1bd9752573 100644 (file)
@@ -4265,7 +4265,7 @@ void exec_context_dump(const ExecContext *c, FILE* f, const char *prefix) {
         if (exec_context_restrict_namespaces_set(c)) {
                 _cleanup_free_ char *s = NULL;
 
-                r = namespace_flag_to_string_many(c->restrict_namespaces, &s);
+                r = namespace_flags_to_string(c->restrict_namespaces, &s);
                 if (r >= 0)
                         fprintf(f, "%sRestrictNamespaces: %s\n",
                                 prefix, s);
index d2a4c18bb86fac15467b9dfe966b291c8b95e16b..dc9914b2769a44ae63025a0e271f86e3366f7f9d 100644 (file)
@@ -3145,7 +3145,7 @@ int config_parse_restrict_namespaces(
         else {
                 /* Not a boolean argument, in this case it's a list of namespace types. */
 
-                r = namespace_flag_from_string_many(rvalue, &c->restrict_namespaces);
+                r = namespace_flags_from_string(rvalue, &c->restrict_namespaces);
                 if (r < 0) {
                         log_syntax(unit, LOG_ERR, filename, line, r, "Failed to parse namespace type string, ignoring: %s", rvalue);
                         return 0;
index 78d5141053dbe4cff35f19798eb6e125a6a0d6c4..1a375ac88bd7f26a6b7694a5dcad1889ce3d8733 100644 (file)
@@ -1016,7 +1016,7 @@ static int bus_append_execute_property(sd_bus_message *m, const char *field, con
                 else if (r == 0)
                         flags = NAMESPACE_FLAGS_ALL;
                 else {
-                        r = namespace_flag_from_string_many(eq, &flags);
+                        r = namespace_flags_from_string(eq, &flags);
                         if (r < 0)
                                 return log_error_errno(r, "Failed to parse %s value %s.", field, eq);
                 }
index a14e87d1ba16af917ac7f3583d320adaa41adec5..02dea810fbcade2b1690a1393b3d0d17985e7cb8 100644 (file)
@@ -716,7 +716,7 @@ int bus_print_property(const char *name, sd_bus_message *m, bool value, bool all
                         else if ((u & NAMESPACE_FLAGS_ALL) == NAMESPACE_FLAGS_ALL)
                                 result = "no";
                         else {
-                                r = namespace_flag_to_string_many(u, &s);
+                                r = namespace_flags_to_string(u, &s);
                                 if (r < 0)
                                         return r;
 
index 4e01976d58b2211c777ffa04bf587b89f996e1a7..baac16bbb4dce476d6c5e211516ecd65b25c3713 100644 (file)
@@ -25,32 +25,7 @@ const struct namespace_flag_map namespace_flag_map[] = {
         {}
 };
 
-const char* namespace_flag_to_string(unsigned long flag) {
-        unsigned i;
-
-        flag &= NAMESPACE_FLAGS_ALL;
-
-        for (i = 0; namespace_flag_map[i].name; i++)
-                if (flag == namespace_flag_map[i].flag)
-                        return namespace_flag_map[i].name;
-
-        return NULL; /* either unknown namespace flag, or a combination of many. This call supports neither. */
-}
-
-unsigned long namespace_flag_from_string(const char *name) {
-        unsigned i;
-
-        if (isempty(name))
-                return 0;
-
-        for (i = 0; namespace_flag_map[i].name; i++)
-                if (streq(name, namespace_flag_map[i].name))
-                        return namespace_flag_map[i].flag;
-
-        return 0;
-}
-
-int namespace_flag_from_string_many(const char *name, unsigned long *ret) {
+int namespace_flags_from_string(const char *name, unsigned long *ret) {
         unsigned long flags = 0;
         int r;
 
@@ -58,7 +33,8 @@ int namespace_flag_from_string_many(const char *name, unsigned long *ret) {
 
         for (;;) {
                 _cleanup_free_ char *word = NULL;
-                unsigned long f;
+                unsigned long f = 0;
+                unsigned i;
 
                 r = extract_first_word(&name, &word, NULL, 0);
                 if (r < 0)
@@ -66,7 +42,12 @@ int namespace_flag_from_string_many(const char *name, unsigned long *ret) {
                 if (r == 0)
                         break;
 
-                f = namespace_flag_from_string(word);
+                for (i = 0; namespace_flag_map[i].name; i++)
+                        if (streq(word, namespace_flag_map[i].name)) {
+                                 f = namespace_flag_map[i].flag;
+                                 break;
+                        }
+
                 if (f == 0)
                         return -EINVAL;
 
@@ -77,7 +58,7 @@ int namespace_flag_from_string_many(const char *name, unsigned long *ret) {
         return 0;
 }
 
-int namespace_flag_to_string_many(unsigned long flags, char **ret) {
+int namespace_flags_to_string(unsigned long flags, char **ret) {
         _cleanup_free_ char *s = NULL;
         unsigned i;
 
@@ -85,14 +66,8 @@ int namespace_flag_to_string_many(unsigned long flags, char **ret) {
                 if ((flags & namespace_flag_map[i].flag) != namespace_flag_map[i].flag)
                         continue;
 
-                if (!s) {
-                        s = strdup(namespace_flag_map[i].name);
-                        if (!s)
-                                return -ENOMEM;
-                } else {
-                        if (!strextend(&s, " ", namespace_flag_map[i].name, NULL))
-                                return -ENOMEM;
-                }
+                if (!strextend_with_separator(&s, " ", namespace_flag_map[i].name, NULL))
+                        return -ENOMEM;
         }
 
         if (!s) {
index fb4b249d94cc1ffeb8c0fd0342baa03c83902a8a..d3ed5c38575a865ade538548f3bdc9fc6dd7ffde 100644 (file)
                           CLONE_NEWUSER|                                \
                           CLONE_NEWUTS))
 
-const char* namespace_flag_to_string(unsigned long flag);
-unsigned long namespace_flag_from_string(const char *name);
-int namespace_flag_from_string_many(const char *name, unsigned long *ret);
-int namespace_flag_to_string_many(unsigned long flags, char **ret);
+int namespace_flags_from_string(const char *name, unsigned long *ret);
+int namespace_flags_to_string(unsigned long flags, char **ret);
 
 struct namespace_flag_map {
         unsigned long flag;
index 833294200284d170ed6ee73c407de66c349bb0c8..cddfc05bd36c14876b687ec59b76a69e1522a51b 100644 (file)
@@ -1007,7 +1007,7 @@ int seccomp_restrict_namespaces(unsigned long retain) {
         if (DEBUG_LOGGING) {
                 _cleanup_free_ char *s = NULL;
 
-                (void) namespace_flag_to_string_many(retain, &s);
+                (void) namespace_flags_to_string(retain, &s);
                 log_debug("Restricting namespace to: %s.", strna(s));
         }
 
index 155ce5cfbf1948cea90f9c6992fe565fe68cbbaf..6062ca1baf15b2a6f3961b3590890b674e183b03 100644 (file)
@@ -133,29 +133,36 @@ static void test_filter_sets(void) {
 }
 
 static void test_restrict_namespace(void) {
-        _cleanup_free_ char *s = NULL;
+        char *s = NULL;
         unsigned long ul;
         pid_t pid;
 
-        assert_se(namespace_flag_to_string(0) == NULL);
-        assert_se(streq(namespace_flag_to_string(CLONE_NEWNS), "mnt"));
-        assert_se(namespace_flag_to_string(CLONE_NEWNS|CLONE_NEWIPC) == NULL);
-        assert_se(streq(namespace_flag_to_string(CLONE_NEWCGROUP), "cgroup"));
-
-        assert_se(namespace_flag_from_string("mnt") == CLONE_NEWNS);
-        assert_se(namespace_flag_from_string(NULL) == 0);
-        assert_se(namespace_flag_from_string("") == 0);
-        assert_se(namespace_flag_from_string("uts") == CLONE_NEWUTS);
-        assert_se(namespace_flag_from_string(namespace_flag_to_string(CLONE_NEWUTS)) == CLONE_NEWUTS);
-        assert_se(streq(namespace_flag_to_string(namespace_flag_from_string("ipc")), "ipc"));
-
-        assert_se(namespace_flag_from_string_many(NULL, &ul) == 0 && ul == 0);
-        assert_se(namespace_flag_from_string_many("", &ul) == 0 && ul == 0);
-        assert_se(namespace_flag_from_string_many("mnt uts ipc", &ul) == 0 && ul == (CLONE_NEWNS|CLONE_NEWUTS|CLONE_NEWIPC));
-
-        assert_se(namespace_flag_to_string_many(NAMESPACE_FLAGS_ALL, &s) == 0);
+        assert_se(namespace_flags_to_string(0, &s) == 0 && streq(s, ""));
+        s = mfree(s);
+        assert_se(namespace_flags_to_string(CLONE_NEWNS, &s) == 0 && streq(s, "mnt"));
+        s = mfree(s);
+        assert_se(namespace_flags_to_string(CLONE_NEWNS|CLONE_NEWIPC, &s) == 0 && streq(s, "ipc mnt"));
+        s = mfree(s);
+        assert_se(namespace_flags_to_string(CLONE_NEWCGROUP, &s) == 0 && streq(s, "cgroup"));
+        s = mfree(s);
+
+        assert_se(namespace_flags_from_string("mnt", &ul) == 0 && ul == CLONE_NEWNS);
+        assert_se(namespace_flags_from_string(NULL, &ul) == 0 && ul == 0);
+        assert_se(namespace_flags_from_string("", &ul) == 0 && ul == 0);
+        assert_se(namespace_flags_from_string("uts", &ul) == 0 && ul == CLONE_NEWUTS);
+        assert_se(namespace_flags_from_string("mnt uts ipc", &ul) == 0 && ul == (CLONE_NEWNS|CLONE_NEWUTS|CLONE_NEWIPC));
+
+        assert_se(namespace_flags_to_string(CLONE_NEWUTS, &s) == 0 && streq(s, "uts"));
+        assert_se(namespace_flags_from_string(s, &ul) == 0 && ul == CLONE_NEWUTS);
+        s = mfree(s);
+        assert_se(namespace_flags_from_string("ipc", &ul) == 0 && ul == CLONE_NEWIPC);
+        assert_se(namespace_flags_to_string(ul, &s) == 0 && streq(s, "ipc"));
+        s = mfree(s);
+
+        assert_se(namespace_flags_to_string(NAMESPACE_FLAGS_ALL, &s) == 0);
         assert_se(streq(s, "cgroup ipc net mnt pid user uts"));
-        assert_se(namespace_flag_from_string_many(s, &ul) == 0 && ul == NAMESPACE_FLAGS_ALL);
+        assert_se(namespace_flags_from_string(s, &ul) == 0 && ul == NAMESPACE_FLAGS_ALL);
+        s = mfree(s);
 
         if (!is_seccomp_available())
                 return;