SOURCES: samba-pam_smbpasswd-leakage.patch (NEW) - close file desc...
baggins
baggins at pld-linux.org
Tue Mar 4 18:40:03 CET 2008
Author: baggins Date: Tue Mar 4 17:40:03 2008 GMT
Module: SOURCES Tag: HEAD
---- Log message:
- close file descriptors and free used memory
---- Files affected:
SOURCES:
samba-pam_smbpasswd-leakage.patch (NONE -> 1.1) (NEW)
---- Diffs:
================================================================
Index: SOURCES/samba-pam_smbpasswd-leakage.patch
diff -u /dev/null SOURCES/samba-pam_smbpasswd-leakage.patch:1.1
--- /dev/null Tue Mar 4 18:40:03 2008
+++ SOURCES/samba-pam_smbpasswd-leakage.patch Tue Mar 4 18:39:58 2008
@@ -0,0 +1,164 @@
+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) {
+@@ -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;
+ }
+
================================================================
More information about the pld-cvs-commit
mailing list