]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core: various small fixes to unit-printf 1665/head
authorEvgeny Vereshchagin <evvers@ya.ru>
Sat, 24 Oct 2015 20:55:56 +0000 (20:55 +0000)
committerEvgeny Vereshchagin <evvers@ya.ru>
Sat, 24 Oct 2015 21:16:02 +0000 (21:16 +0000)
* check memory allocation errors in specifier_cgroup_slice
* %I doesn't fail for non-instantiated units (%i doesn't fail too)
* EOPNOTSUPP for consistency

src/core/unit-printf.c

index 0889769d0325717cde2745bb6a2f32667901573c..f32795326673def7ac9ce061be7c4b21c3c97179 100644 (file)
@@ -63,10 +63,7 @@ static int specifier_instance_unescaped(char specifier, void *data, void *userda
 
         assert(u);
 
-        if (!u->instance)
-                return -EINVAL;
-
-        return unit_name_unescape(u->instance, ret);
+        return unit_name_unescape(strempty(u->instance), ret);
 }
 
 static int specifier_filename(char specifier, void *data, void *userdata, char **ret) {
@@ -128,6 +125,8 @@ static int specifier_cgroup_slice(char specifier, void *data, void *userdata, ch
                         n = unit_default_cgroup_path(slice);
         } else
                 n = strdup(u->manager->cgroup_root);
+        if (!n)
+                return -ENOMEM;
 
         *ret = n;
         return 0;
@@ -166,7 +165,7 @@ static int specifier_user_name(char specifier, void *data, void *userdata, char
 
         c = unit_get_exec_context(u);
         if (!c)
-                return -EINVAL;
+                return -EOPNOTSUPP;
 
         if (u->manager->running_as == MANAGER_SYSTEM) {