chiark / gitweb /
sd-login: sd_get_machine_names(): do not return -EINVAL when output parameter is...
[elogind.git] / src / libelogind / sd-login / sd-login.c
index 7630e6265334f3f7d60e4248bd0b728648650faa..5f90ba70c4121ab13fdec1077ee974b9caffab4f 100644 (file)
@@ -942,14 +942,13 @@ _public_ int sd_get_uids(uid_t **users) {
 }
 
 _public_ int sd_get_machine_names(char ***machines) {
-        char **l = NULL, **a, **b;
+        char **l, **a, **b;
         int r;
 
-        assert_return(machines, -EINVAL);
-
         r = get_files_in_directory("/run/systemd/machines/", &l);
         if (r == -ENOENT) {
-                *machines = NULL;
+                if (machines)
+                        *machines = NULL;
                 return 0;
         }
         if (r < 0)
@@ -959,7 +958,7 @@ _public_ int sd_get_machine_names(char ***machines) {
                 r = 0;
 
                 /* Filter out the unit: symlinks */
-                for (a = l, b = l; *a; a++) {
+                for (a = b = l; *a; a++) {
                         if (startswith(*a, "unit:") || !machine_name_is_valid(*a))
                                 free(*a);
                         else {
@@ -972,7 +971,8 @@ _public_ int sd_get_machine_names(char ***machines) {
                 *b = NULL;
         }
 
-        *machines = l;
+        if (machines)
+                *machines = l;
         return r;
 }