chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
util: make use of get_user_creds() and get_group_creds() wherever applicable
[elogind.git]
/
src
/
logind.c
diff --git
a/src/logind.c
b/src/logind.c
index f96ace2315734b4dcd99b14a2d8c6f015cc369e6..8b99065b23f6c5c6aaa335d819df9ff58c68b289 100644
(file)
--- 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) {
}
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);
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) {
}
int manager_add_user_by_uid(Manager *m, uid_t uid, User **_user) {
@@
-509,19
+510,19
@@
int manager_enumerate_users(Manager *m) {
}
while ((de = readdir(d))) {
}
while ((de = readdir(d))) {
- u
nsigned long ul
;
+ u
id_t uid
;
User *u;
if (!dirent_is_file(de))
continue;
User *u;
if (!dirent_is_file(de))
continue;
- k =
safe_atolu(de->d_name, &ul
);
+ k =
parse_uid(de->d_name, &uid
);
if (k < 0) {
log_error("Failed to parse file name %s: %s", de->d_name, strerror(-k));
continue;
}
if (k < 0) {
log_error("Failed to parse file name %s: %s", de->d_name, strerror(-k));
continue;
}
- u = hashmap_get(m->users, ULONG_TO_PTR(u
l
));
+ u = hashmap_get(m->users, ULONG_TO_PTR(u
id
));
if (!u) {
unlinkat(dirfd(d), de->d_name, 0);
continue;
if (!u) {
unlinkat(dirfd(d), de->d_name, 0);
continue;