diff options
author | Thorsten Kukuk <kukuk@thkukuk.de> | 2004-09-22 09:37:46 +0000 |
---|---|---|
committer | Thorsten Kukuk <kukuk@thkukuk.de> | 2004-09-22 09:37:46 +0000 |
commit | 6e99aa00d23a68650fdd4fae01aab812dcfe10eb (patch) | |
tree | 0b929b30fa38ed1d402515fbf9d7d8cf6dcb5284 /modules/pam_shells | |
parent | e1f75a80821125170e23a9b920d138a4a952c708 (diff) | |
download | pam-6e99aa00d23a68650fdd4fae01aab812dcfe10eb.tar.gz pam-6e99aa00d23a68650fdd4fae01aab812dcfe10eb.tar.bz2 pam-6e99aa00d23a68650fdd4fae01aab812dcfe10eb.zip |
Relevant BUGIDs:
Purpose of commit:
Commit summary:
---------------
bugfix: Add rest of Steve Grubb's resource leak and other fixes
Diffstat (limited to 'modules/pam_shells')
-rw-r--r-- | modules/pam_shells/pam_shells.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/modules/pam_shells/pam_shells.c b/modules/pam_shells/pam_shells.c index 37d740dc..c9e2ed6c 100644 --- a/modules/pam_shells/pam_shells.c +++ b/modules/pam_shells/pam_shells.c @@ -59,11 +59,16 @@ static int perform_check(pam_handle_t *pamh, int flags) return PAM_SERVICE_ERR; } - if (!userName || (strlen(userName) <= 0)) { + if (!userName || (userName[0] == '\0')) { + /* Don't let them use a NULL username... */ - pam_get_user(pamh,&userName,NULL); + retval = pam_get_user(pamh,&userName,NULL); if (retval != PAM_SUCCESS) return PAM_SERVICE_ERR; + + /* It could still be NULL the second time. */ + if (!userName || (userName[0] == '\0')) + return PAM_SERVICE_ERR; } pw = getpwnam(userName); @@ -93,7 +98,7 @@ static int perform_check(pam_handle_t *pamh, int flags) retval = 1; - while((fgets(shellFileLine, 255, shellFile) != NULL) && retval) { + while(retval && (fgets(shellFileLine, 255, shellFile) != NULL)) { if (shellFileLine[strlen(shellFileLine) - 1] == '\n') shellFileLine[strlen(shellFileLine) - 1] = '\0'; retval = strcmp(shellFileLine, userShell); |