[SCM] Samba Shared Repository - branch master updated

Volker Lendecke vlendec at samba.org
Sat Apr 17 04:02:37 MDT 2010


The branch, master has been updated
       via  f4b73f4... s3: Slightly simpify samr_ValidatePassword_Reset
       via  3a362b4... s3: Slightly simpify samr_ValidatePassword_Change
       via  6f998b4... s3: Slightly simplify the logic of check_password_complexity()
       via  b0b077f... s3: Fix some nonempty blank lines
      from  4567bf9... s3-winreg_nt: Fixed QueryValue with data=NULL to get the length.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit f4b73f4e240cee0cc24dc29c84473d6068ab3139
Author: Volker Lendecke <vl at samba.org>
Date:   Fri Apr 16 15:06:17 2010 +0200

    s3: Slightly simpify samr_ValidatePassword_Reset

commit 3a362b45c623afb031798570836cebef3e5ebc8a
Author: Volker Lendecke <vl at samba.org>
Date:   Fri Apr 16 15:06:03 2010 +0200

    s3: Slightly simpify samr_ValidatePassword_Change

commit 6f998b4b9a46f48b98b947f79bf9c83ec7a0b9fd
Author: Volker Lendecke <vl at samba.org>
Date:   Fri Apr 16 15:00:54 2010 +0200

    s3: Slightly simplify the logic of check_password_complexity()
    
    The whole routine was just one if-branch. Do an early return instead.

commit b0b077f27c8f87dedf8fc7898c54e2c2575c1be6
Author: Volker Lendecke <vl at samba.org>
Date:   Fri Apr 16 14:16:40 2010 +0200

    s3: Fix some nonempty blank lines

-----------------------------------------------------------------------

Summary of changes:
 source3/rpc_server/srv_samr_nt.c |   50 ++++++++++++++++++-----------------
 source3/smbd/chgpasswd.c         |   54 ++++++++++++++++++++-----------------
 2 files changed, 55 insertions(+), 49 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/rpc_server/srv_samr_nt.c b/source3/rpc_server/srv_samr_nt.c
index 3626cbd..3ebfe39 100644
--- a/source3/rpc_server/srv_samr_nt.c
+++ b/source3/rpc_server/srv_samr_nt.c
@@ -6697,19 +6697,20 @@ static enum samr_ValidationStatus samr_ValidatePassword_Change(TALLOC_CTX *mem_c
 {
 	NTSTATUS status;
 
-	if (req->password.string) {
-		if (strlen(req->password.string) < dom_pw_info->min_password_length) {
+	if (req->password.string == NULL) {
+		SAMR_VALIDATION_STATUS_SUCCESS;
+	}
+	if (strlen(req->password.string) < dom_pw_info->min_password_length) {
+		ZERO_STRUCT(rep->info);
+		return SAMR_VALIDATION_STATUS_PWD_TOO_SHORT;
+	}
+	if (dom_pw_info->password_properties & DOMAIN_PASSWORD_COMPLEX) {
+		status = check_password_complexity(req->account.string,
+						   req->password.string,
+						   NULL);
+		if (!NT_STATUS_IS_OK(status)) {
 			ZERO_STRUCT(rep->info);
-			return SAMR_VALIDATION_STATUS_PWD_TOO_SHORT;
-		}
-		if (dom_pw_info->password_properties & DOMAIN_PASSWORD_COMPLEX) {
-			status = check_password_complexity(req->account.string,
-							   req->password.string,
-							   NULL);
-			if (!NT_STATUS_IS_OK(status)) {
-				ZERO_STRUCT(rep->info);
-				return SAMR_VALIDATION_STATUS_NOT_COMPLEX_ENOUGH;
-			}
+			return SAMR_VALIDATION_STATUS_NOT_COMPLEX_ENOUGH;
 		}
 	}
 
@@ -6726,19 +6727,20 @@ static enum samr_ValidationStatus samr_ValidatePassword_Reset(TALLOC_CTX *mem_ct
 {
 	NTSTATUS status;
 
-	if (req->password.string) {
-		if (strlen(req->password.string) < dom_pw_info->min_password_length) {
+	if (req->password.string == NULL) {
+		return SAMR_VALIDATION_STATUS_SUCCESS;
+	}
+	if (strlen(req->password.string) < dom_pw_info->min_password_length) {
+		ZERO_STRUCT(rep->info);
+		return SAMR_VALIDATION_STATUS_PWD_TOO_SHORT;
+	}
+	if (dom_pw_info->password_properties & DOMAIN_PASSWORD_COMPLEX) {
+		status = check_password_complexity(req->account.string,
+						   req->password.string,
+						   NULL);
+		if (!NT_STATUS_IS_OK(status)) {
 			ZERO_STRUCT(rep->info);
-			return SAMR_VALIDATION_STATUS_PWD_TOO_SHORT;
-		}
-		if (dom_pw_info->password_properties & DOMAIN_PASSWORD_COMPLEX) {
-			status = check_password_complexity(req->account.string,
-							   req->password.string,
-							   NULL);
-			if (!NT_STATUS_IS_OK(status)) {
-				ZERO_STRUCT(rep->info);
-				return SAMR_VALIDATION_STATUS_NOT_COMPLEX_ENOUGH;
-			}
+			return SAMR_VALIDATION_STATUS_NOT_COMPLEX_ENOUGH;
 		}
 	}
 
diff --git a/source3/smbd/chgpasswd.c b/source3/smbd/chgpasswd.c
index dcefc82..dc58cc2 100644
--- a/source3/smbd/chgpasswd.c
+++ b/source3/smbd/chgpasswd.c
@@ -3,17 +3,17 @@
    Samba utility functions
    Copyright (C) Andrew Tridgell 1992-1998
    Copyright (C) Andrew Bartlett 2001-2004
-   
+
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
-   
+
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-   
+
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
@@ -651,7 +651,7 @@ bool check_lanman_password(char *user, uchar * pass1,
 		DEBUG(0, ("samu_new() failed!\n"));
 		return False;
 	}
-	
+
 	become_root();
 	ret = pdb_getsampwnam(sampass, user);
 	unbecome_root();
@@ -661,7 +661,7 @@ bool check_lanman_password(char *user, uchar * pass1,
 		TALLOC_FREE(sampass);
 		return False;
 	}
-	
+
 	acct_ctrl = pdb_get_acct_ctrl     (sampass);
 	lanman_pw = pdb_get_lanman_passwd (sampass);
 
@@ -721,7 +721,7 @@ bool change_lanman_password(struct samu *sampass, uchar *pass2)
 		DEBUG(0,("change_lanman_password: no smb password entry.\n"));
 		return False;
 	}
-	
+
 	acct_ctrl = pdb_get_acct_ctrl(sampass);
 	pwd = pdb_get_lanman_passwd(sampass);
 
@@ -1115,30 +1115,34 @@ NTSTATUS check_password_complexity(const char *username,
 				   enum samPwdChangeReason *samr_reject_reason)
 {
 	TALLOC_CTX *tosctx = talloc_tos();
+	int check_ret;
+	char *cmd;
 
 	/* Use external script to check password complexity */
-	if (lp_check_password_script() && *(lp_check_password_script())) {
-		int check_ret;
-		char *cmd;
+	if ((lp_check_password_script() == NULL)
+	    || (*(lp_check_password_script()) == '\0')) {
+		return NT_STATUS_OK;
+	}
 
-		cmd = talloc_string_sub(tosctx, lp_check_password_script(), "%u", username);
-		if (!cmd) {
-			return NT_STATUS_PASSWORD_RESTRICTION;
-		}
+	cmd = talloc_string_sub(tosctx, lp_check_password_script(), "%u",
+				username);
+	if (!cmd) {
+		return NT_STATUS_PASSWORD_RESTRICTION;
+	}
 
-		check_ret = smbrunsecret(cmd, password);
-		DEBUG(5,("check_password_complexity: check password script (%s) returned [%d]\n",
-			cmd, check_ret));
-		TALLOC_FREE(cmd);
+	check_ret = smbrunsecret(cmd, password);
+	DEBUG(5,("check_password_complexity: check password script (%s) "
+		 "returned [%d]\n", cmd, check_ret));
+	TALLOC_FREE(cmd);
 
-		if (check_ret != 0) {
-			DEBUG(1,("check_password_complexity: "
-				"check password script said new password is not good enough!\n"));
-			if (samr_reject_reason) {
-				*samr_reject_reason = SAM_PWD_CHANGE_NOT_COMPLEX;
-			}
-			return NT_STATUS_PASSWORD_RESTRICTION;
+	if (check_ret != 0) {
+		DEBUG(1,("check_password_complexity: "
+			 "check password script said new password is not good "
+			 "enough!\n"));
+		if (samr_reject_reason) {
+			*samr_reject_reason = SAM_PWD_CHANGE_NOT_COMPLEX;
 		}
+		return NT_STATUS_PASSWORD_RESTRICTION;
 	}
 
 	return NT_STATUS_OK;
@@ -1242,7 +1246,7 @@ NTSTATUS change_oem_password(struct samu *hnd, char *old_passwd, char *new_passw
 	 * Conditional on lp_unix_password_sync() because we don't want
 	 * to touch the unix db unless we have admin permission.
 	 */
-	
+
 	if(lp_unix_password_sync() &&
 		!chgpasswd(username, pass, old_passwd, new_passwd, as_root)) {
 		TALLOC_FREE(pass);


-- 
Samba Shared Repository


More information about the samba-cvs mailing list