From 78c4f72c311fb23ab37ed892fe67b75421736803 Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Tue, 11 Jan 2011 13:07:02 +0100 Subject: s3-rpc_client: Added dcerpc_samr_chgpasswd_user. --- source3/rpc_client/cli_samr.c | 36 ++++++++++++++++++++++++++++++------ source3/rpc_client/cli_samr.h | 24 ++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 6 deletions(-) diff --git a/source3/rpc_client/cli_samr.c b/source3/rpc_client/cli_samr.c index 7f5e6fca4a..03acafe515 100644 --- a/source3/rpc_client/cli_samr.c +++ b/source3/rpc_client/cli_samr.c @@ -30,13 +30,14 @@ /* User change password */ -NTSTATUS rpccli_samr_chgpasswd_user(struct rpc_pipe_client *cli, +NTSTATUS dcerpc_samr_chgpasswd_user(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct policy_handle *user_handle, const char *newpassword, - const char *oldpassword) + const char *oldpassword, + NTSTATUS *presult) { - NTSTATUS result = NT_STATUS_UNSUCCESSFUL; + NTSTATUS status; struct samr_Password hash1, hash2, hash3, hash4, hash5, hash6; uchar old_nt_hash[16]; @@ -64,7 +65,8 @@ NTSTATUS rpccli_samr_chgpasswd_user(struct rpc_pipe_client *cli, E_old_pw_hash(old_lm_hash, new_nt_hash, hash5.hash); E_old_pw_hash(old_nt_hash, new_lm_hash, hash6.hash); - result = rpccli_samr_ChangePasswordUser(cli, mem_ctx, + status = dcerpc_samr_ChangePasswordUser(h, + mem_ctx, user_handle, true, &hash1, @@ -75,11 +77,33 @@ NTSTATUS rpccli_samr_chgpasswd_user(struct rpc_pipe_client *cli, true, &hash5, true, - &hash6); + &hash6, + presult); - return result; + return status; } +NTSTATUS rpccli_samr_chgpasswd_user(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + struct policy_handle *user_handle, + const char *newpassword, + const char *oldpassword) +{ + NTSTATUS status; + NTSTATUS result = NT_STATUS_UNSUCCESSFUL; + + status = dcerpc_samr_chgpasswd_user(cli->binding_handle, + mem_ctx, + user_handle, + newpassword, + oldpassword, + &result); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return result; +} /* User change password */ diff --git a/source3/rpc_client/cli_samr.h b/source3/rpc_client/cli_samr.h index 404987caa7..aa0e5f9883 100644 --- a/source3/rpc_client/cli_samr.h +++ b/source3/rpc_client/cli_samr.h @@ -29,6 +29,30 @@ /* The following definitions come from rpc_client/cli_samr.c */ +/** + * @brief Change the password of a user. + * + * @param[in] h The dcerpc binding hanlde to use. + * + * @param[in] mem_ctx The memory context to use. + * + * @param[in] user_handle The password of the user to chang the handle + * + * @param[in] newpassword The new password to set. + * + * @param[in] oldpassword The old password for verification + * + * @param[out] presult A pointer for the NDR NTSTATUS error code. + * + * @return A corresponding NTSTATUS error code for the connection. + */ +NTSTATUS dcerpc_samr_chgpasswd_user(struct dcerpc_binding_handle *h, + TALLOC_CTX *mem_ctx, + struct policy_handle *user_handle, + const char *newpassword, + const char *oldpassword, + NTSTATUS *presult); + NTSTATUS rpccli_samr_chgpasswd_user(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *user_handle, -- cgit