X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flibelogind%2Fsd-login%2Fsd-login.c;h=80b8f8fefc7f91f1a817d2936655d51e1dc998ab;hb=1f4ffab4a84a9fb4c7b10c01a2435f79c39ef05e;hp=7630e6265334f3f7d60e4248bd0b728648650faa;hpb=18b9ec874ae92e1b9b7daf91eee8b378a314f92a;p=elogind.git diff --git a/src/libelogind/sd-login/sd-login.c b/src/libelogind/sd-login/sd-login.c index 7630e6265..80b8f8fef 100644 --- a/src/libelogind/sd-login/sd-login.c +++ b/src/libelogind/sd-login/sd-login.c @@ -942,14 +942,14 @@ _public_ int sd_get_uids(uid_t **users) { } _public_ int sd_get_machine_names(char ***machines) { - char **l = NULL, **a, **b; + _cleanup_strv_free_ char **l = NULL; + char **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 +959,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 +972,10 @@ _public_ int sd_get_machine_names(char ***machines) { *b = NULL; } - *machines = l; + if (machines) { + *machines = l; + l = NULL; + } return r; }