summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/torture/rpc/samr.c96
1 files changed, 46 insertions, 50 deletions
diff --git a/source4/torture/rpc/samr.c b/source4/torture/rpc/samr.c
index c2b973e551..ecf09ffe1a 100644
--- a/source4/torture/rpc/samr.c
+++ b/source4/torture/rpc/samr.c
@@ -3403,29 +3403,43 @@ static bool test_QueryUserInfo_badpwdcount(struct dcerpc_pipe *p,
return true;
}
-static bool test_reset_badpwdcount(struct dcerpc_pipe *p,
- struct torture_context *tctx,
- struct policy_handle *user_handle,
- uint32_t acct_flags,
- char **password)
+static bool test_SetUserInfo_acct_flags(struct dcerpc_pipe *p,
+ struct torture_context *tctx,
+ struct policy_handle *user_handle,
+ uint32_t acct_flags)
{
struct samr_SetUserInfo r;
union samr_UserInfo user_info;
- torture_assert(tctx, test_SetUserPass(p, tctx, user_handle, password),
- "failed to set password");
-
- torture_comment(tctx, "Testing SetUserInfo level 16 (enable account)\n");
+ torture_comment(tctx, "Testing SetUserInfo level 16\n");
user_info.info16.acct_flags = acct_flags;
- user_info.info16.acct_flags &= ~ACB_DISABLED;
r.in.user_handle = user_handle;
r.in.level = 16;
r.in.info = &user_info;
torture_assert_ntstatus_ok(tctx, dcerpc_samr_SetUserInfo(p, tctx, &r),
- "failed to enable user");
+ "failed to set account flags");
+
+ return true;
+}
+
+static bool test_reset_badpwdcount(struct dcerpc_pipe *p,
+ struct torture_context *tctx,
+ struct policy_handle *user_handle,
+ uint32_t acct_flags,
+ char **password)
+{
+ torture_assert(tctx, test_SetUserPass(p, tctx, user_handle, password),
+ "failed to set password");
+
+ torture_comment(tctx, "Testing SetUserInfo level 16 (enable account)\n");
+
+ torture_assert(tctx,
+ test_SetUserInfo_acct_flags(p, tctx, user_handle,
+ acct_flags & ~ACB_DISABLED),
+ "failed to enable user");
torture_assert(tctx, test_SetUserPass(p, tctx, user_handle, password),
"failed to set password");
@@ -3503,26 +3517,16 @@ static bool test_Password_badpwdcount(struct dcerpc_pipe *p,
/* enable or disable account */
- {
- struct samr_SetUserInfo r;
- union samr_UserInfo user_info;
-
- torture_comment(tctx, "Testing SetUserInfo level 16 (%s account)\n",
- disable ? "disable" : "enable");
-
- user_info.info16.acct_flags = acct_flags;
- if (disable) {
- user_info.info16.acct_flags |= ACB_DISABLED;
- } else {
- user_info.info16.acct_flags &= ~ACB_DISABLED;
- }
-
- r.in.user_handle = user_handle;
- r.in.level = 16;
- r.in.info = &user_info;
-
- torture_assert_ntstatus_ok(tctx, dcerpc_samr_SetUserInfo(p, tctx, &r),
- "failed to enable user");
+ if (disable) {
+ torture_assert(tctx,
+ test_SetUserInfo_acct_flags(p, tctx, user_handle,
+ acct_flags | ACB_DISABLED),
+ "failed to disable user");
+ } else {
+ torture_assert(tctx,
+ test_SetUserInfo_acct_flags(p, tctx, user_handle,
+ acct_flags & ~ACB_DISABLED),
+ "failed to enable user");
}
@@ -3918,28 +3922,20 @@ static bool test_Password_lockout(struct dcerpc_pipe *p,
/* enable or disable account */
- {
- struct samr_SetUserInfo r;
- union samr_UserInfo user_info;
-
- torture_comment(tctx, "Testing SetUserInfo level 16 (%s account)\n",
- disable ? "disable" : "enable");
-
- user_info.info16.acct_flags = acct_flags;
- if (disable) {
- user_info.info16.acct_flags |= ACB_DISABLED;
- } else {
- user_info.info16.acct_flags &= ~ACB_DISABLED;
- }
-
- r.in.user_handle = user_handle;
- r.in.level = 16;
- r.in.info = &user_info;
- torture_assert_ntstatus_ok(tctx, dcerpc_samr_SetUserInfo(p, tctx, &r),
- "failed to enable user");
+ if (disable) {
+ torture_assert(tctx,
+ test_SetUserInfo_acct_flags(p, tctx, user_handle,
+ acct_flags | ACB_DISABLED),
+ "failed to disable user");
+ } else {
+ torture_assert(tctx,
+ test_SetUserInfo_acct_flags(p, tctx, user_handle,
+ acct_flags & ~ACB_DISABLED),
+ "failed to enable user");
}
+
/* test logon with right password */
if (!test_SamLogon_with_creds(tctx, np, machine_credentials,