core: adjust unit_get_ancestor_memory_{low,min}() to work with units which don't...
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 24 Apr 2019 08:54:44 +0000 (10:54 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Thu, 25 Apr 2019 09:13:02 +0000 (11:13 +0200)
Coverity doesn't like the fact that unit_get_cgroup_context() returns NULL for
unit types that don't have a CGroupContext. We don't expect to call those
functions with such unit types, so this isn't an immediate problem, but we can
make things more robust by handling this case.

CID #1400683, #1400684.

src/core/cgroup.c

index 946fab2..32d5605 100644 (file)
@@ -403,15 +403,12 @@ int cgroup_add_device_allow(CGroupContext *c, const char *dev, const char *mode)
                 assert(u);                                              \
                                                                         \
                 c = unit_get_cgroup_context(u);                         \
-                                                                        \
-                if (c->entry##_set)                                     \
+                if (c && c->entry##_set)                                \
                         return c->entry;                                \
                                                                         \
-                while (UNIT_ISSET(u->slice)) {                          \
-                        u = UNIT_DEREF(u->slice);                       \
+                while ((u = UNIT_DEREF(u->slice))) {                    \
                         c = unit_get_cgroup_context(u);                 \
-                                                                        \
-                        if (c->default_##entry##_set)                   \
+                        if (c && c->default_##entry##_set)              \
                                 return c->default_##entry;              \
                 }                                                       \
                                                                         \