X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flogin%2Fsd-login.c;fp=src%2Flogin%2Fsd-login.c;h=157b7e0fb4e13eb0b452414a8a2d7cddf4148cde;hb=ae018d9bc900d6355dea4af05119b49c67945184;hp=30e07a93223b69c415375cebc6b7deb2a2d03ed6;hpb=cd8f53ab1601513cc3407447bfe3359ee7139676;p=elogind.git diff --git a/src/login/sd-login.c b/src/login/sd-login.c index 30e07a932..157b7e0fb 100644 --- a/src/login/sd-login.c +++ b/src/login/sd-login.c @@ -73,10 +73,6 @@ _public_ int sd_pid_get_machine_name(pid_t pid, char **name) { } _public_ int sd_pid_get_owner_uid(pid_t pid, uid_t *uid) { - int r; - _cleanup_free_ char *root = NULL, *cgroup = NULL, *cc = NULL; - char *p; - struct stat st; if (pid < 0) return -EINVAL; @@ -84,36 +80,7 @@ _public_ int sd_pid_get_owner_uid(pid_t pid, uid_t *uid) { if (!uid) return -EINVAL; - r = cg_pid_get_path_shifted(pid, &root, &cgroup); - if (r < 0) - return r; - - if (!startswith(cgroup, "/user/")) - return -ENOENT; - - p = strchr(cgroup + 6, '/'); - if (!p) - return -ENOENT; - - p++; - p += strcspn(p, "/"); - *p = 0; - - r = cg_get_path(SYSTEMD_CGROUP_CONTROLLER, root, cgroup, &cc); - - if (r < 0) - return -ENOMEM; - - r = lstat(cc, &st); - - if (r < 0) - return -errno; - - if (!S_ISDIR(st.st_mode)) - return -ENOTDIR; - - *uid = st.st_uid; - return 0; + return cg_pid_get_owner_uid(pid, uid); } _public_ int sd_uid_get_state(uid_t uid, char**state) {