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_nologin | |
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_nologin')
-rw-r--r-- | modules/pam_nologin/pam_nologin.c | 35 |
1 files changed, 22 insertions, 13 deletions
diff --git a/modules/pam_nologin/pam_nologin.c b/modules/pam_nologin/pam_nologin.c index 6916a7b4..433d2e11 100644 --- a/modules/pam_nologin/pam_nologin.c +++ b/modules/pam_nologin/pam_nologin.c @@ -117,22 +117,31 @@ static int perform_check(pam_handle_t *pamh, struct opt_s *opts) goto clean_up_fd; } - read(fd, mtmp, st.st_size); - mtmp[st.st_size] = '\000'; - - /* - * Use conversation function to give user contents of /etc/nologin - */ + if (_pammodutil_read(fd, mtmp, st.st_size) == st.st_size) { + mtmp[st.st_size] = '\000'; + + /* + * Use conversation function to give user contents + * of /etc/nologin + */ + + retval = pam_get_item(pamh, PAM_CONV, + (const void **)&conversation); + if ((retval == PAM_SUCCESS) && (conversation)) { + (void) conversation->conv(1, + (const struct pam_message **)&pmessage, + &resp, conversation->appdata_ptr); + + if (resp) { + _pam_drop_reply(resp, 1); + } + } + } + else + retval = PAM_SYSTEM_ERR; - pam_get_item(pamh, PAM_CONV, (const void **)&conversation); - (void) conversation->conv(1, (const struct pam_message **)&pmessage, - &resp, conversation->appdata_ptr); free(mtmp); - if (resp) { - _pam_drop_reply(resp, 1); - } - clean_up_fd: close(fd); |