From: Günther Deschner Date: Tue, 8 Nov 2011 15:00:10 +0000 (+0100) Subject: samr: filterModuleName is a lsa_String in userPwdChangeFailureInformation. X-Git-Tag: samba-3.6.2~70 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ab829518c46392536ee7ba09e9fdbe9df8ea8b7d;p=thirdparty%2Fsamba.git samr: filterModuleName is a lsa_String in userPwdChangeFailureInformation. The entire marshalling of samr_ChangePasswordUser3 broke with c2685cdedb430ae75a94e86f34484292b4269363. Matthias, the bad effect of this change was that actually all failed password change attempts will always return NT_STATUS_OK because the last 4 bytes (the resulting status code) were not marshalled anymore. Guenther Autobuild-User: Günther Deschner Autobuild-Date: Wed Nov 9 00:41:13 CET 2011 on sn-devel-104 (cherry picked from commit 8a18edf1c2d553105cfcadec4d892e4e5a0fdba1) The last 2 patches address bug #8591 (samr_ChangePasswordUser3 IDL incorrect). (cherry picked from commit 4d52675716997057941390c5711850c36786ef15) --- diff --git a/librpc/idl/samr.idl b/librpc/idl/samr.idl index cafffc2ca12..78afb8165ef 100644 --- a/librpc/idl/samr.idl +++ b/librpc/idl/samr.idl @@ -1455,7 +1455,7 @@ import "misc.idl", "lsa.idl", "security.idl"; typedef struct { samPwdChangeReason extendedFailureReason; - [string,charset(UTF16)] uint16 *filterModuleName; + lsa_String filterModuleName; } userPwdChangeFailureInformation; [public] NTSTATUS samr_ChangePasswordUser3( diff --git a/source4/torture/ndr/samr.c b/source4/torture/ndr/samr.c index 803a2095d3e..c934931f179 100644 --- a/source4/torture/ndr/samr.c +++ b/source4/torture/ndr/samr.c @@ -297,6 +297,8 @@ static bool samr_changepassworduser3_w2k8r2_out_check(struct torture_context *tc torture_assert_u64_equal(tctx, dominfo->min_password_age, 0x0000000000000000, "min_password_age"); torture_assert_int_equal(tctx, reject->extendedFailureReason, SAM_PWD_CHANGE_NOT_COMPLEX, "extendedFailureReason"); + torture_assert_int_equal(tctx, reject->filterModuleName.length, 0, "filterModuleName.length"); + torture_assert_int_equal(tctx, reject->filterModuleName.size, 0, "filterModuleName.size"); torture_assert_ntstatus_equal(tctx, r->out.result, NT_STATUS_PASSWORD_RESTRICTION, "result");