summaryrefslogtreecommitdiff
path: root/libshouldbeinlibc/idvec-rep.c
diff options
context:
space:
mode:
authorJames Clarke <jrtc27@jrtc27.com>2015-09-29 18:06:46 +0100
committerJustus Winter <4winter@informatik.uni-hamburg.de>2015-10-05 13:09:16 +0200
commitbf6d5e67e86a059c1ffbde425d0f3f05fd0a0717 (patch)
tree3d5a1f0e64558b9d0b9f4e73905f9fdff53e0b8e /libshouldbeinlibc/idvec-rep.c
parent407237da61abdc0c82d91efab392d78b7e464fb4 (diff)
Add missing null checks in libshouldbeinlibc
The getpwnam_r and similar functions only return non-zero on error, but not finding the given name/UID/GID does not count as an error. When they return 0, the value of the result (*result when looking at the arguments in the man pages) still needs to be checked for null. * libshouldbeinlibc/idvec-rep.c (lookup_uid): Check result for null. (lookup_gid): Likewise. * libshouldbeinlibc/idvec-verify.c (verify_passwd): Likewise. (verify_id): Likewise.
Diffstat (limited to 'libshouldbeinlibc/idvec-rep.c')
-rw-r--r--libshouldbeinlibc/idvec-rep.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/libshouldbeinlibc/idvec-rep.c b/libshouldbeinlibc/idvec-rep.c
index 16408a4d..4fc7712d 100644
--- a/libshouldbeinlibc/idvec-rep.c
+++ b/libshouldbeinlibc/idvec-rep.c
@@ -129,7 +129,7 @@ lookup_uid (uid_t uid)
{
char buf[1024];
struct passwd _pw, *pw;
- if (getpwuid_r (uid, &_pw, buf, sizeof buf, &pw) == 0)
+ if (getpwuid_r (uid, &_pw, buf, sizeof buf, &pw) == 0 && pw)
return strdup (pw->pw_name);
else
return 0;
@@ -141,7 +141,7 @@ lookup_gid (gid_t gid)
{
char buf[1024];
struct group _gr, *gr;
- if (getgrgid_r (gid, &_gr, buf, sizeof buf, &gr) == 0)
+ if (getgrgid_r (gid, &_gr, buf, sizeof buf, &gr) == 0 && gr)
return strdup (gr->gr_name);
else
return 0;