diff options
author | Kevin Lo <kevlo@FreeBSD.org> | 2012-02-22 06:27:20 +0000 |
---|---|---|
committer | Kevin Lo <kevlo@FreeBSD.org> | 2012-02-22 06:27:20 +0000 |
commit | 29dcf726d233505532b89c31f8ba31eb69fa26df (patch) | |
tree | 456afe25d5d911e27dc003830e6ca01ed80dab54 /usr.bin/newgrp | |
parent | 5bfdf7f990aec67ac9c94689556bad53eebef73a (diff) |
Handle NULL return from crypt(3). Mostly from DragonFly
Notes
Notes:
svn path=/head/; revision=231994
Diffstat (limited to 'usr.bin/newgrp')
-rw-r--r-- | usr.bin/newgrp/newgrp.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/usr.bin/newgrp/newgrp.c b/usr.bin/newgrp/newgrp.c index 751e8bee538c..b3f6103b3aed 100644 --- a/usr.bin/newgrp/newgrp.c +++ b/usr.bin/newgrp/newgrp.c @@ -151,7 +151,7 @@ addgroup(const char *grpname) int dbmember, i, ngrps; gid_t egid; struct group *grp; - char *ep, *pass; + char *ep, *pass, *cryptpw; char **p; egid = getegid(); @@ -178,8 +178,10 @@ addgroup(const char *grpname) } if (!dbmember && *grp->gr_passwd != '\0' && getuid() != 0) { pass = getpass("Password:"); - if (pass == NULL || - strcmp(grp->gr_passwd, crypt(pass, grp->gr_passwd)) != 0) { + if (pass == NULL) + return; + cryptpw = crypt(pass, grp->gr_passwd); + if (cryptpw == NULL || strcmp(grp->gr_passwd, cryptpw) != 0) { fprintf(stderr, "Sorry\n"); return; } |