]> granicus.if.org Git - linux-pam/commitdiff
Relevant BUGIDs:
authorTomas Mraz <tm@t8m.info>
Tue, 3 Mar 2009 08:08:51 +0000 (08:08 +0000)
committerTomas Mraz <tm@t8m.info>
Tue, 3 Mar 2009 08:08:51 +0000 (08:08 +0000)
Purpose of commit: bugfix

Commit summary:
---------------
2009-03-03  Tomas Mraz <t8m@centrum.cz>

        * modules/pam_unix/pam_unix_acct.c(_unix_run_verify_binary): Test
        for abnormal exit of the helper binary.
        * modules/pam_unix/pam_unix_passwd.c(_unix_run_update_binary): Likewise.
        * modules/pam_unix/support.c(_unix_run_helper_binary): Likewise.

ChangeLog
modules/pam_unix/pam_unix_acct.c
modules/pam_unix/pam_unix_passwd.c
modules/pam_unix/support.c

index bb5dc35977f85d692125856811e229bbbdc09b1f..5c18989b02641532500a230789f9ff1d11cbdddb 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2009-03-03  Tomas Mraz <t8m@centrum.cz>
+
+       * modules/pam_unix/pam_unix_acct.c(_unix_run_verify_binary): Test
+        for abnormal exit of the helper binary.
+       * modules/pam_unix/pam_unix_passwd.c(_unix_run_update_binary): Likewise.
+       * modules/pam_unix/support.c(_unix_run_helper_binary): Likewise.
+
 2009-02-26  Tomas Mraz <t8m@centrum.cz>
 
        * xtests/Makefile.am: Add tst-pam_unix4.
index 909545cc0b834f17e09c4a0cd300b4d48154ed15..6aa66e80c7156e38df43741aea069a3176a0a9c3 100644 (file)
@@ -139,6 +139,9 @@ int _unix_run_verify_binary(pam_handle_t *pamh, unsigned int ctrl,
       if (rc<0) {
        pam_syslog(pamh, LOG_ERR, "unix_chkpwd waitpid returned %d: %m", rc);
        retval = PAM_AUTH_ERR;
+      } else if (!WIFEXITED(retval)) {
+        pam_syslog(pamh, LOG_ERR, "unix_chkpwd abnormal exit: %d", retval);
+        retval = PAM_AUTH_ERR;
       } else {
        retval = WEXITSTATUS(retval);
         rc = pam_modutil_read(fds[0], buf, sizeof(buf) - 1);
index d221220f222358885e6f4e84e44b373a1b2df00a..5207d535920bb7c3cad029e7e6e1971de3b6cee6 100644 (file)
@@ -225,8 +225,11 @@ static int _unix_run_update_binary(pam_handle_t *pamh, unsigned int ctrl, const
        rc=waitpid(child, &retval, 0);  /* wait for helper to complete */
        if (rc<0) {
          pam_syslog(pamh, LOG_ERR, "unix_update waitpid failed: %m");
-         retval = PAM_AUTH_ERR;
-       } else {
+         retval = PAM_AUTHTOK_ERR;
+       } else if (!WIFEXITED(retval)) {
+          pam_syslog(pamh, LOG_ERR, "unix_update abnormal exit: %d", retval);
+          retval = PAM_AUTHTOK_ERR;
+        } else {
          retval = WEXITSTATUS(retval);
        }
     } else {
index b82cad26bba62e50d06baf613739e2061e3ca262..ff123f3546c3f545b7555c53aa0eb0957b8e74ff 100644 (file)
@@ -475,6 +475,9 @@ static int _unix_run_helper_binary(pam_handle_t *pamh, const char *passwd,
        if (rc<0) {
          pam_syslog(pamh, LOG_ERR, "unix_chkpwd waitpid returned %d: %m", rc);
          retval = PAM_AUTH_ERR;
+       } else if (!WIFEXITED(retval)) {
+         pam_syslog(pamh, LOG_ERR, "unix_chkpwd abnormal exit: %d", retval);
+         retval = PAM_AUTH_ERR;
        } else {
          retval = WEXITSTATUS(retval);
        }