summaryrefslogtreecommitdiff
path: root/source4/torture
diff options
context:
space:
mode:
authorGünther Deschner <gd@samba.org>2011-11-08 15:58:34 +0100
committerKarolin Seeger <kseeger@samba.org>2012-01-23 21:27:29 +0100
commit65721f9c3d7e65606f575a84e9205dadf7547f2c (patch)
tree6ecfb7c78f67f63b0ce7c2342285af931819219b /source4/torture
parent7cdaf23f3f1a25b4492be0ebd24b8a733c582eb6 (diff)
downloadsamba-65721f9c3d7e65606f575a84e9205dadf7547f2c.tar.gz
s4-smbtorture: demonstrate how broken our samr_ChangePasswordUser3 marshalling is...
Guenther (cherry picked from commit bfe084bd8bbdfa0a0fa31521584f3bc142785fb8) (cherry picked from commit 9c7925120a06a3511f88d768fd9c459023d3c0fe)
Diffstat (limited to 'source4/torture')
-rw-r--r--source4/torture/ndr/samr.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/source4/torture/ndr/samr.c b/source4/torture/ndr/samr.c
index 25b9d0ad792..803a2095d3e 100644
--- a/source4/torture/ndr/samr.c
+++ b/source4/torture/ndr/samr.c
@@ -277,6 +277,32 @@ static const uint8_t samr_changepassworduser3_w2k_out_data[] = {
0xbb, 0x00, 0x00, 0xc0
};
+static const uint8_t samr_changepassworduser3_w2k8r2_out_data[] = {
+ 0x00, 0x00, 0x02, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x80, 0xa6, 0x0a, 0xff, 0xde, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0xc0
+};
+
+static bool samr_changepassworduser3_w2k8r2_out_check(struct torture_context *tctx,
+ struct samr_ChangePasswordUser3 *r)
+{
+ struct samr_DomInfo1 *dominfo = *r->out.dominfo;
+ struct userPwdChangeFailureInformation *reject = *r->out.reject;
+
+ torture_assert_int_equal(tctx, dominfo->min_password_length, 7, "min_password_length");
+ torture_assert_int_equal(tctx, dominfo->password_history_length, 0, "password_history_length");
+ torture_assert_int_equal(tctx, dominfo->password_properties, DOMAIN_PASSWORD_COMPLEX, "password_properties");
+ torture_assert_u64_equal(tctx, dominfo->max_password_age, 0xffffdeff0aa68000, "max_password_age");
+ 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_ntstatus_equal(tctx, r->out.result, NT_STATUS_PASSWORD_RESTRICTION, "result");
+
+ return true;
+}
+
struct torture_suite *ndr_samr_suite(TALLOC_CTX *ctx)
{
struct torture_suite *suite = torture_suite_create(ctx, "samr");
@@ -313,6 +339,12 @@ struct torture_suite *ndr_samr_suite(TALLOC_CTX *ctx)
/* Samba currently fails to parse a w2k reply */
torture_suite_add_ndr_pull_fn_test(suite, samr_ChangePasswordUser3, samr_changepassworduser3_w2k_out_data, NDR_OUT, NULL);
#endif
+ torture_suite_add_ndr_pull_fn_test(suite,
+ samr_ChangePasswordUser3,
+ samr_changepassworduser3_w2k8r2_out_data,
+ NDR_OUT,
+ samr_changepassworduser3_w2k8r2_out_check);
+
return suite;
}