Fix pam_smbpass to always check the return value of pdb_getsampwnam() to
authorAndrew Bartlett <abartlet@samba.org>
Wed, 21 Aug 2002 11:15:10 +0000 (11:15 +0000)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 21 Aug 2002 11:15:10 +0000 (11:15 +0000)
determine if the user exists.

(from post on samba-technical)

Andrew Bartlett
(This used to be commit b43304c2aa406267ef157dd0ac59319d6c494ce4)

source3/pam_smbpass/pam_smb_passwd.c

index 0f527552525c88515ecb8a715bb0f6e68c9d75ec..91eae3c7a1960712a8810a5e9b5394a6de47af5b 100644 (file)
@@ -96,6 +96,8 @@ int pam_sm_chauthtok(pam_handle_t *pamh, int flags,
     char *pass_old;
     char *pass_new;
 
+    NTSTATUS nt_status;
+
     /* Samba initialization. */
     setup_logging( "pam_smbpass", False );
     in_client = True;
@@ -124,10 +126,11 @@ int pam_sm_chauthtok(pam_handle_t *pamh, int flags,
     }
 
     /* obtain user record */
-    pdb_init_sam(&sampass);
-    pdb_getsampwnam(sampass,user);
+    if (!NT_STATUS_IS_OK(nt_status = pdb_init_sam(&sampass))) {
+           return nt_status_to_pam(nt_status);
+    }
 
-    if (sampass == NULL) {
+    if (!pdb_getsampwnam(sampass,user)) {
         _log_err( LOG_ALERT, "Failed to find entry for user %s.", user );
         return PAM_USER_UNKNOWN;
     }