summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2014-06-13 19:24:11 +0200
committerLennart Poettering <lennart@poettering.net>2014-06-13 20:11:59 +0200
commitb0284aba93e8ccd415da5bbee86d84c12b1b9856 (patch)
tree04e5960d774f1eb83ae8fc434ec19e4f697b0fbf
parentb532bdeae9b13fe93a54850f5e7f99c753bda6fa (diff)
sysusers: always treat ENOENT as entry-not-found when doing NSS calls
For most NSS calls it is documented that they return NULL + errno=0 when an entry is not found. However, in reality it appears to be common to return NULL + errno=ENOENT, instead. Handle that correctly, and don't consider ENOENT a systematic error.
-rw-r--r--src/sysusers/sysusers.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/sysusers/sysusers.c b/src/sysusers/sysusers.c
index 514e77e447..d549969ff2 100644
--- a/src/sysusers/sysusers.c
+++ b/src/sysusers/sysusers.c
@@ -481,7 +481,7 @@ static int uid_is_ok(uid_t uid, const char *name) {
p = getpwuid(uid);
if (p)
return 0;
- if (errno != 0)
+ if (!IN_SET(errno, 0, ENOENT))
return -errno;
errno = 0;
@@ -489,7 +489,7 @@ static int uid_is_ok(uid_t uid, const char *name) {
if (g) {
if (!streq(g->gr_name, name))
return 0;
- } else if (errno != 0)
+ } else if (!IN_SET(errno, 0, ENOENT))
return -errno;
}
@@ -595,7 +595,7 @@ static int add_user(Item *i) {
i->description = strdup(p->pw_gecos);
return 0;
}
- if (errno != 0) {
+ if (!IN_SET(errno, 0, ENOENT)) {
log_error("Failed to check if user %s already exists: %m", i->name);
return -errno;
}
@@ -607,7 +607,7 @@ static int add_user(Item *i) {
log_error("User %s already exists in shadow database, but not in user database.", i->name);
return -EBADMSG;
}
- if (errno != 0) {
+ if (!IN_SET(errno, 0, ENOENT)) {
log_error("Failed to check if user %s already exists in shadow database: %m", i->name);
return -errno;
}
@@ -720,14 +720,14 @@ static int gid_is_ok(gid_t gid) {
g = getgrgid(gid);
if (g)
return 0;
- if (errno != 0)
+ if (!IN_SET(errno, 0, ENOENT))
return -errno;
errno = 0;
p = getpwuid((uid_t) gid);
if (p)
return 0;
- if (errno != 0)
+ if (!IN_SET(errno, 0, ENOENT))
return -errno;
}
@@ -761,7 +761,7 @@ static int add_group(Item *i) {
i->gid_set = true;
return 0;
}
- if (errno != 0) {
+ if (!IN_SET(errno, 0, ENOENT)) {
log_error("Failed to check if group %s already exists: %m", i->name);
return -errno;
}