X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flogind.c;h=8b99065b23f6c5c6aaa335d819df9ff58c68b289;hb=fd42f6e020de94d11b3cc6bcff6bfc6af23c8aa9;hp=a081501a8cefce1da2a0c324ef7556fc66765bb8;hpb=ddd88763921a1534081ed28e36f6712a85449005;p=elogind.git diff --git a/src/logind.c b/src/logind.c index a081501a8..8b99065b2 100644 --- a/src/logind.c +++ b/src/logind.c @@ -239,17 +239,18 @@ int manager_add_user(Manager *m, uid_t uid, gid_t gid, const char *name, User ** } int manager_add_user_by_name(Manager *m, const char *name, User **_user) { - struct passwd *p; + uid_t uid; + gid_t gid; + int r; assert(m); assert(name); - errno = 0; - p = getpwnam(name); - if (!p) - return errno ? -errno : -ENOENT; + r = get_user_creds(&name, &uid, &gid, NULL); + if (r < 0) + return r; - return manager_add_user(m, p->pw_uid, p->pw_gid, name, _user); + return manager_add_user(m, uid, gid, name, _user); } int manager_add_user_by_uid(Manager *m, uid_t uid, User **_user) {