svn commit: samba r13444 - branches/SAMBA_3_0/source/include branches/SAMBA_3_0/source/rpc_server branches/SAMBA_3_0/source/smbd trunk/source/include trunk/source/rpc_server trunk/source/smbd

gd at samba.org gd at samba.org
Fri Feb 10 23:41:42 GMT 2006


Author: gd
Date: 2006-02-10 23:41:41 +0000 (Fri, 10 Feb 2006)
New Revision: 13444

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=13444

Log:
Add REJECT_REASON_OTHER for samr_chgpasswd_user3

Guenther

Modified:
   branches/SAMBA_3_0/source/include/rpc_samr.h
   branches/SAMBA_3_0/source/rpc_server/srv_samr_nt.c
   branches/SAMBA_3_0/source/smbd/chgpasswd.c
   trunk/source/include/rpc_samr.h
   trunk/source/rpc_server/srv_samr_nt.c
   trunk/source/smbd/chgpasswd.c


Changeset:
Modified: branches/SAMBA_3_0/source/include/rpc_samr.h
===================================================================
--- branches/SAMBA_3_0/source/include/rpc_samr.h	2006-02-10 23:23:10 UTC (rev 13443)
+++ branches/SAMBA_3_0/source/include/rpc_samr.h	2006-02-10 23:41:41 UTC (rev 13444)
@@ -1848,6 +1848,7 @@
 
 } SAMR_Q_CHGPASSWD_USER3;
 
+#define REJECT_REASON_OTHER		0x00000000
 #define REJECT_REASON_TOO_SHORT		0x00000001
 #define REJECT_REASON_IN_HISTORY	0x00000002
 #define REJECT_REASON_NOT_COMPLEX	0x00000005

Modified: branches/SAMBA_3_0/source/rpc_server/srv_samr_nt.c
===================================================================
--- branches/SAMBA_3_0/source/rpc_server/srv_samr_nt.c	2006-02-10 23:23:10 UTC (rev 13443)
+++ branches/SAMBA_3_0/source/rpc_server/srv_samr_nt.c	2006-02-10 23:41:41 UTC (rev 13444)
@@ -1505,7 +1505,8 @@
 	r_u->status = pass_oem_change(user_name, q_u->lm_newpass.pass, q_u->lm_oldhash.hash,
 				      q_u->nt_newpass.pass, q_u->nt_oldhash.hash, &reject_reason);
 
-	if (NT_STATUS_EQUAL(r_u->status, NT_STATUS_PASSWORD_RESTRICTION)) {
+	if (NT_STATUS_EQUAL(r_u->status, NT_STATUS_PASSWORD_RESTRICTION) || 
+	    NT_STATUS_EQUAL(r_u->status, NT_STATUS_ACCOUNT_RESTRICTION)) {
 
 		uint32 min_pass_len,pass_hist,password_properties;
 		time_t u_expire, u_min_age;

Modified: branches/SAMBA_3_0/source/smbd/chgpasswd.c
===================================================================
--- branches/SAMBA_3_0/source/smbd/chgpasswd.c	2006-02-10 23:23:10 UTC (rev 13443)
+++ branches/SAMBA_3_0/source/smbd/chgpasswd.c	2006-02-10 23:41:41 UTC (rev 13444)
@@ -1016,6 +1016,10 @@
 	time_t last_change_time = pdb_get_pass_last_set_time(hnd);
 	time_t can_change_time = pdb_get_pass_can_change_time(hnd);
 
+	if (samr_reject_reason) {
+		*samr_reject_reason = Undefined;
+	}
+
 	if (pdb_get_account_policy(AP_MIN_PASSWORD_AGE, &min_age)) {
 		/*
 		 * Windows calculates the minimum password age check
@@ -1026,6 +1030,9 @@
 			DEBUG(1, ("user %s cannot change password now, must "
 				  "wait until %s\n", username,
 				  http_timestring(last_change_time+min_age)));
+			if (samr_reject_reason) {
+				*samr_reject_reason = REJECT_REASON_OTHER;
+			}
 			return NT_STATUS_ACCOUNT_RESTRICTION;
 		}
 	} else {
@@ -1033,6 +1040,9 @@
 			DEBUG(1, ("user %s cannot change password now, must "
 				  "wait until %s\n", username,
 				  http_timestring(can_change_time)));
+			if (samr_reject_reason) {
+				*samr_reject_reason = REJECT_REASON_OTHER;
+			}
 			return NT_STATUS_ACCOUNT_RESTRICTION;
 		}
 	}

Modified: trunk/source/include/rpc_samr.h
===================================================================
--- trunk/source/include/rpc_samr.h	2006-02-10 23:23:10 UTC (rev 13443)
+++ trunk/source/include/rpc_samr.h	2006-02-10 23:41:41 UTC (rev 13444)
@@ -1848,6 +1848,7 @@
 
 } SAMR_Q_CHGPASSWD_USER3;
 
+#define REJECT_REASON_OTHER		0x00000000
 #define REJECT_REASON_TOO_SHORT		0x00000001
 #define REJECT_REASON_IN_HISTORY	0x00000002
 #define REJECT_REASON_NOT_COMPLEX	0x00000005

Modified: trunk/source/rpc_server/srv_samr_nt.c
===================================================================
--- trunk/source/rpc_server/srv_samr_nt.c	2006-02-10 23:23:10 UTC (rev 13443)
+++ trunk/source/rpc_server/srv_samr_nt.c	2006-02-10 23:41:41 UTC (rev 13444)
@@ -1505,7 +1505,8 @@
 	r_u->status = pass_oem_change(user_name, q_u->lm_newpass.pass, q_u->lm_oldhash.hash,
 				      q_u->nt_newpass.pass, q_u->nt_oldhash.hash, &reject_reason);
 
-	if (NT_STATUS_EQUAL(r_u->status, NT_STATUS_PASSWORD_RESTRICTION)) {
+	if (NT_STATUS_EQUAL(r_u->status, NT_STATUS_PASSWORD_RESTRICTION) || 
+	    NT_STATUS_EQUAL(r_u->status, NT_STATUS_ACCOUNT_RESTRICTION)) {
 
 		uint32 min_pass_len,pass_hist,password_properties;
 		time_t u_expire, u_min_age;

Modified: trunk/source/smbd/chgpasswd.c
===================================================================
--- trunk/source/smbd/chgpasswd.c	2006-02-10 23:23:10 UTC (rev 13443)
+++ trunk/source/smbd/chgpasswd.c	2006-02-10 23:41:41 UTC (rev 13444)
@@ -1016,6 +1016,10 @@
 	time_t last_change_time = pdb_get_pass_last_set_time(hnd);
 	time_t can_change_time = pdb_get_pass_can_change_time(hnd);
 
+	if (samr_reject_reason) {
+		*samr_reject_reason = Undefined;
+	}
+
 	if (pdb_get_account_policy(AP_MIN_PASSWORD_AGE, &min_age)) {
 		/*
 		 * Windows calculates the minimum password age check
@@ -1026,6 +1030,9 @@
 			DEBUG(1, ("user %s cannot change password now, must "
 				  "wait until %s\n", username,
 				  http_timestring(last_change_time+min_age)));
+			if (samr_reject_reason) {
+				*samr_reject_reason = REJECT_REASON_OTHER;
+			}
 			return NT_STATUS_ACCOUNT_RESTRICTION;
 		}
 	} else {
@@ -1033,6 +1040,9 @@
 			DEBUG(1, ("user %s cannot change password now, must "
 				  "wait until %s\n", username,
 				  http_timestring(can_change_time)));
+			if (samr_reject_reason) {
+				*samr_reject_reason = REJECT_REASON_OTHER;
+			}
 			return NT_STATUS_ACCOUNT_RESTRICTION;
 		}
 	}



More information about the samba-cvs mailing list