Fix for bug in code for pam_session failure - pam_end called twice.
authorJeremy Allison <jra@samba.org>
Mon, 23 Apr 2001 06:09:27 +0000 (06:09 +0000)
committerJeremy Allison <jra@samba.org>
Mon, 23 Apr 2001 06:09:27 +0000 (06:09 +0000)
Jeremy.
(This used to be commit c4048fcdb6ff3a890b69be8ef4832e9bd958cfec)

source3/auth/pampass.c
source3/passdb/pampass.c

index 553ffcd323cac871f8c889873e012c88a73b97b4..3335ed5551ce086705055361a1f6a943fa8d4ccd 100644 (file)
@@ -327,24 +327,18 @@ static BOOL smb_internal_pam_session(pam_handle_t *pamh, char *user, char *tty,
 #ifdef PAM_TTY
        DEBUG(4,("PAM: tty set to: %s\n", tty));
        pam_error = pam_set_item(pamh, PAM_TTY, tty);
-       if (!smb_pam_error_handler(pamh, pam_error, "set tty failed", 0)) {
-               smb_pam_end(pamh);
+       if (!smb_pam_error_handler(pamh, pam_error, "set tty failed", 0))
                return False;
-       }
 #endif
 
        if (flag) {
                pam_error = pam_open_session(pamh, PAM_SILENT);
-               if (!smb_pam_error_handler(pamh, pam_error, "session setup failed", 0)) {
-                       smb_pam_end(pamh);
+               if (!smb_pam_error_handler(pamh, pam_error, "session setup failed", 0))
                        return False;
-               }
        } else {
                pam_error = pam_close_session(pamh, PAM_SILENT);
-               if (!smb_pam_error_handler(pamh, pam_error, "session close failed", 0)) {
-                       smb_pam_end(pamh);
+               if (!smb_pam_error_handler(pamh, pam_error, "session close failed", 0))
                        return False;
-               }
        }
        return (True);
 }
@@ -368,12 +362,11 @@ BOOL smb_pam_session(BOOL flag, const char *in_user, char *tty, char *rhost)
                return False;
        }
 
-       if (smb_internal_pam_session(pamh, user, tty, flag)) {
-               return smb_pam_end(pamh);
-       } else {
+       if (!smb_internal_pam_session(pamh, user, tty, flag)) {
                smb_pam_end(pamh);
                return False;
        }
+       return smb_pam_end(pamh);
 }
 
 /*
index 553ffcd323cac871f8c889873e012c88a73b97b4..3335ed5551ce086705055361a1f6a943fa8d4ccd 100644 (file)
@@ -327,24 +327,18 @@ static BOOL smb_internal_pam_session(pam_handle_t *pamh, char *user, char *tty,
 #ifdef PAM_TTY
        DEBUG(4,("PAM: tty set to: %s\n", tty));
        pam_error = pam_set_item(pamh, PAM_TTY, tty);
-       if (!smb_pam_error_handler(pamh, pam_error, "set tty failed", 0)) {
-               smb_pam_end(pamh);
+       if (!smb_pam_error_handler(pamh, pam_error, "set tty failed", 0))
                return False;
-       }
 #endif
 
        if (flag) {
                pam_error = pam_open_session(pamh, PAM_SILENT);
-               if (!smb_pam_error_handler(pamh, pam_error, "session setup failed", 0)) {
-                       smb_pam_end(pamh);
+               if (!smb_pam_error_handler(pamh, pam_error, "session setup failed", 0))
                        return False;
-               }
        } else {
                pam_error = pam_close_session(pamh, PAM_SILENT);
-               if (!smb_pam_error_handler(pamh, pam_error, "session close failed", 0)) {
-                       smb_pam_end(pamh);
+               if (!smb_pam_error_handler(pamh, pam_error, "session close failed", 0))
                        return False;
-               }
        }
        return (True);
 }
@@ -368,12 +362,11 @@ BOOL smb_pam_session(BOOL flag, const char *in_user, char *tty, char *rhost)
                return False;
        }
 
-       if (smb_internal_pam_session(pamh, user, tty, flag)) {
-               return smb_pam_end(pamh);
-       } else {
+       if (!smb_internal_pam_session(pamh, user, tty, flag)) {
                smb_pam_end(pamh);
                return False;
        }
+       return smb_pam_end(pamh);
 }
 
 /*