union samr_UserInfo user_info;
struct dcerpc_binding_handle *b = NULL;
+ DATA_BLOB session_key = data_blob_null;
struct samr_CryptPassword crypt_pwd;
struct samr_CryptPasswordEx crypt_pwd_ex;
b = pipe_hnd->binding_handle;
+ status = cli_get_session_key(mem_ctx, pipe_hnd, &session_key);
+ if (!NT_STATUS_IS_OK(status)) {
+ DEBUG(0,("Error getting session_key of SAM pipe. Error was %s\n",
+ nt_errstr(status)));
+ goto done;
+ }
+
status = dcerpc_samr_Connect2(b, mem_ctx,
pipe_hnd->desthost,
SAMR_ACCESS_ENUM_DOMAINS
/* Set password on machine account - first try level 26 */
init_samr_CryptPasswordEx(r->in.machine_password,
- &cli->user_session_key,
+ &session_key,
&crypt_pwd_ex);
user_info.info26.password = crypt_pwd_ex;
/* retry with level 24 */
init_samr_CryptPassword(r->in.machine_password,
- &cli->user_session_key,
+ &session_key,
&crypt_pwd);
user_info.info24.password = crypt_pwd;
return status;
}
+ data_blob_clear_free(&session_key);
+
if (is_valid_policy_hnd(&sam_pol)) {
dcerpc_samr_Close(b, mem_ctx, &sam_pol, &result);
}