+++ /dev/null
-diff -ur samba-3.0.28/source/pam_smbpass/pam_smb_acct.c samba-3.0.28-leak/source/pam_smbpass/pam_smb_acct.c
---- samba-3.0.28/source/pam_smbpass/pam_smb_acct.c 2008-03-04 18:30:27.000000000 +0100
-+++ samba-3.0.28-leak/source/pam_smbpass/pam_smb_acct.c 2008-03-04 18:29:46.000000000 +0100
-@@ -63,6 +63,7 @@
- if (on( SMB_DEBUG, ctrl )) {
- _log_err(pamh, LOG_DEBUG, "acct: could not identify user");
- }
-+ gfree_case_tables();
- return retval;
- }
- if (on( SMB_DEBUG, ctrl )) {
-@@ -75,6 +76,7 @@
- if (!initialize_password_db(True)) {
- _log_err(pamh, LOG_ALERT, "Cannot access samba password database");
- CatchSignal(SIGPIPE, SIGNAL_CAST oldsig_handler);
-+ gfree_case_tables();
- return PAM_AUTHINFO_UNAVAIL;
- }
-
-@@ -83,18 +85,21 @@
- if (!(sampass = samu_new( NULL ))) {
- CatchSignal(SIGPIPE, SIGNAL_CAST oldsig_handler);
- /* malloc fail. */
-+ gfree_case_tables();
- return nt_status_to_pam(NT_STATUS_NO_MEMORY);
- }
-
- if (!pdb_getsampwnam(sampass, name )) {
- _log_err(pamh, LOG_DEBUG, "acct: could not identify user");
- CatchSignal(SIGPIPE, SIGNAL_CAST oldsig_handler);
-+ gfree_case_tables();
- return PAM_USER_UNKNOWN;
- }
-
- /* check for lookup failure */
- if (!strlen(pdb_get_username(sampass)) ) {
- CatchSignal(SIGPIPE, SIGNAL_CAST oldsig_handler);
-+ gfree_case_tables();
- return PAM_USER_UNKNOWN;
- }
-
-@@ -108,12 +113,14 @@
- "please see your system administrator." );
-
- CatchSignal(SIGPIPE, SIGNAL_CAST oldsig_handler);
-+ gfree_case_tables();
- return PAM_ACCT_EXPIRED;
- }
-
- /* TODO: support for expired passwords. */
-
- CatchSignal(SIGPIPE, SIGNAL_CAST oldsig_handler);
-+ gfree_case_tables();
- return PAM_SUCCESS;
- }
-
-diff -ur samba-3.0.28/source/pam_smbpass/pam_smb_auth.c samba-3.0.28-leak/source/pam_smbpass/pam_smb_auth.c
---- samba-3.0.28/source/pam_smbpass/pam_smb_auth.c 2008-03-04 18:30:27.000000000 +0100
-+++ samba-3.0.28-leak/source/pam_smbpass/pam_smb_auth.c 2008-03-04 18:29:05.000000000 +0100
-@@ -43,6 +43,7 @@
- pam_set_data( pamh, "smb_setcred_return" \
- , (void *) ret_data, NULL ); \
- } \
-+ gfree_case_tables(); \
- return retval; \
- } while (0)
-
-diff -ur samba-3.0.28/source/pam_smbpass/pam_smb_passwd.c samba-3.0.28-leak/source/pam_smbpass/pam_smb_passwd.c
---- samba-3.0.28/source/pam_smbpass/pam_smb_passwd.c 2008-03-04 18:30:27.000000000 +0100
-+++ samba-3.0.28-leak/source/pam_smbpass/pam_smb_passwd.c 2008-03-04 18:27:32.000000000 +0100
-@@ -118,6 +118,7 @@
- if (on( SMB_DEBUG, ctrl )) {
- _log_err(pamh, LOG_DEBUG, "password: could not identify user");
- }
-+ gfree_case_tables();
- return retval;
- }
- if (on( SMB_DEBUG, ctrl )) {
-@@ -131,18 +132,21 @@
- if (!initialize_password_db(False)) {
- _log_err(pamh, LOG_ALERT, "Cannot access samba password database");
- CatchSignal(SIGPIPE, SIGNAL_CAST oldsig_handler);
-+ gfree_case_tables();
- return PAM_AUTHINFO_UNAVAIL;
- }
-
- /* obtain user record */
- if ( !(sampass = samu_new( NULL )) ) {
- CatchSignal(SIGPIPE, SIGNAL_CAST oldsig_handler);
-+ gfree_case_tables();
- return nt_status_to_pam(NT_STATUS_NO_MEMORY);
- }
-
- if (!pdb_getsampwnam(sampass,user)) {
- _log_err(pamh, LOG_ALERT, "Failed to find entry for user %s.", user);
- CatchSignal(SIGPIPE, SIGNAL_CAST oldsig_handler);
-+ gfree_case_tables();
- return PAM_USER_UNKNOWN;
- }
- if (on( SMB_DEBUG, ctrl )) {
-@@ -161,6 +165,7 @@
-
- TALLOC_FREE(sampass);
- CatchSignal(SIGPIPE, SIGNAL_CAST oldsig_handler);
-+ gfree_case_tables();
- return PAM_SUCCESS;
- }
-
-@@ -175,6 +180,7 @@
- _log_err(pamh, LOG_CRIT, "password: out of memory");
- TALLOC_FREE(sampass);
- CatchSignal(SIGPIPE, SIGNAL_CAST oldsig_handler);
-+ gfree_case_tables();
- return PAM_BUF_ERR;
- }
- strncpy( Announce, greeting, sizeof(greeting) );
-@@ -191,6 +197,7 @@
- "password - (old) token not obtained");
- TALLOC_FREE(sampass);
- CatchSignal(SIGPIPE, SIGNAL_CAST oldsig_handler);
-+ gfree_case_tables();
- return retval;
- }
-
-@@ -206,6 +213,7 @@
- pass_old = NULL;
- TALLOC_FREE(sampass);
- CatchSignal(SIGPIPE, SIGNAL_CAST oldsig_handler);
-+ gfree_case_tables();
- return retval;
-
- } else if (flags & PAM_UPDATE_AUTHTOK) {
-@@ -217,6 +217,9 @@
- return retval;
-
- } else if (flags & PAM_UPDATE_AUTHTOK) {
-+ /* Samba initialization. */
-+ load_case_tables();
-+ in_client = True;
-
- /*
- * obtain the proposed password
-@@ -236,6 +244,7 @@
- _log_err(pamh, LOG_NOTICE, "password: user not authenticated");
- TALLOC_FREE(sampass);
- CatchSignal(SIGPIPE, SIGNAL_CAST oldsig_handler);
-+ gfree_case_tables();
- return retval;
- }
-
-@@ -264,6 +273,7 @@
- pass_old = NULL; /* tidy up */
- TALLOC_FREE(sampass);
- CatchSignal(SIGPIPE, SIGNAL_CAST oldsig_handler);
-+ gfree_case_tables();
- return retval;
- }
-
-@@ -284,6 +294,7 @@
- pass_new = pass_old = NULL; /* tidy up */
- TALLOC_FREE(sampass);
- CatchSignal(SIGPIPE, SIGNAL_CAST oldsig_handler);
-+ gfree_case_tables();
- return retval;
- }
-
-@@ -333,6 +344,7 @@
-
- TALLOC_FREE(sampass);
- CatchSignal(SIGPIPE, SIGNAL_CAST oldsig_handler);
-+ gfree_case_tables();
- return retval;
- }
-