1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-24 21:34:56 +03:00

s3-libnetjoin: Fix bug #5749. Re-set acctflags while joining. fix from metze.

Guenther
This commit is contained in:
Günther Deschner 2008-11-29 00:12:26 +01:00
parent 42adfd1be2
commit 28099876f9

View File

@ -897,10 +897,6 @@ static NTSTATUS libnet_join_joindomain_rpc(TALLOC_CTX *mem_ctx,
goto done; goto done;
} }
init_samr_CryptPasswordEx(r->in.machine_password,
&cli->user_session_key,
&crypt_pwd_ex);
/* Fill in the additional account flags now */ /* Fill in the additional account flags now */
acct_flags |= ACB_PWNOEXP; acct_flags |= ACB_PWNOEXP;
@ -911,23 +907,40 @@ static NTSTATUS libnet_join_joindomain_rpc(TALLOC_CTX *mem_ctx,
;; ;;
} }
/* Set password and account flags on machine account */ /* Set account flags on machine account */
ZERO_STRUCT(user_info.info16);
ZERO_STRUCT(user_info.info25); user_info.info16.acct_flags = acct_flags;
user_info.info25.info.fields_present = ACCT_NT_PWD_SET |
ACCT_LM_PWD_SET |
SAMR_FIELD_ACCT_FLAGS;
user_info.info25.info.acct_flags = acct_flags;
memcpy(&user_info.info25.password.data, crypt_pwd_ex.data,
sizeof(crypt_pwd_ex.data));
status = rpccli_samr_SetUserInfo(pipe_hnd, mem_ctx, status = rpccli_samr_SetUserInfo(pipe_hnd, mem_ctx,
&user_pol, &user_pol,
25, 16,
&user_info); &user_info);
if (!NT_STATUS_IS_OK(status)) {
rpccli_samr_DeleteUser(pipe_hnd, mem_ctx,
&user_pol);
libnet_join_set_error_string(mem_ctx, r,
"Failed to set account flags for machine account (%s)\n",
nt_errstr(status));
goto done;
}
/* Set password on machine account - first try level 26 */
init_samr_CryptPasswordEx(r->in.machine_password,
&cli->user_session_key,
&crypt_pwd_ex);
init_samr_user_info26(&user_info.info26, &crypt_pwd_ex,
PASS_DONT_CHANGE_AT_NEXT_LOGON);
status = rpccli_samr_SetUserInfo2(pipe_hnd, mem_ctx,
&user_pol,
26,
&user_info);
if (NT_STATUS_EQUAL(status, NT_STATUS(DCERPC_FAULT_INVALID_TAG))) { if (NT_STATUS_EQUAL(status, NT_STATUS(DCERPC_FAULT_INVALID_TAG))) {
/* retry with level 24 */ /* retry with level 24 */