mirror of
https://github.com/samba-team/samba.git
synced 2024-12-22 13:34:15 +03:00
s3-dcerpc: use dcerpc_pull_dcerpc_auth() in cli_pipe_verify_schannel()
This commit is contained in:
parent
91cb2aed54
commit
c609e84170
@ -930,7 +930,7 @@ static NTSTATUS cli_pipe_verify_schannel(struct rpc_pipe_client *cli,
|
||||
prs_struct *current_pdu,
|
||||
uint8 *p_ss_padding_len)
|
||||
{
|
||||
RPC_HDR_AUTH auth_info;
|
||||
struct dcerpc_auth auth_info;
|
||||
uint32_t auth_len = prhdr->auth_length;
|
||||
uint32 save_offset = prs_offset(current_pdu);
|
||||
struct schannel_state *schannel_auth =
|
||||
@ -976,17 +976,23 @@ static NTSTATUS cli_pipe_verify_schannel(struct rpc_pipe_client *cli,
|
||||
return NT_STATUS_BUFFER_TOO_SMALL;
|
||||
}
|
||||
|
||||
if(!smb_io_rpc_hdr_auth("hdr_auth", &auth_info, current_pdu, 0)) {
|
||||
DEBUG(0,("cli_pipe_verify_schannel: failed to unmarshall RPC_HDR_AUTH.\n"));
|
||||
return NT_STATUS_BUFFER_TOO_SMALL;
|
||||
blob = data_blob_const(prs_data_p(current_pdu)
|
||||
+ prs_offset(current_pdu),
|
||||
prs_data_size(current_pdu)
|
||||
- prs_offset(current_pdu));
|
||||
|
||||
status = dcerpc_pull_dcerpc_auth(cli, &blob, &auth_info);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
DEBUG(0,("cli_pipe_verify_ntlmssp: failed to unmarshall dcerpc_auth.\n"));
|
||||
return status;
|
||||
}
|
||||
|
||||
/* Ensure auth_pad_len fits into the packet. */
|
||||
if (RPC_HEADER_LEN + RPC_HDR_REQ_LEN + auth_info.auth_pad_len +
|
||||
if (RPC_HEADER_LEN + RPC_HDR_REQ_LEN + auth_info.auth_pad_length +
|
||||
RPC_HDR_AUTH_LEN + auth_len > prhdr->frag_length) {
|
||||
DEBUG(0,("cli_pipe_verify_schannel: auth_info.auth_pad_len "
|
||||
"too large (%u), auth_len (%u), frag_len = (%u).\n",
|
||||
(unsigned int)auth_info.auth_pad_len,
|
||||
(unsigned int)auth_info.auth_pad_length,
|
||||
(unsigned int)auth_len,
|
||||
(unsigned int)prhdr->frag_length));
|
||||
return NT_STATUS_BUFFER_TOO_SMALL;
|
||||
@ -1051,7 +1057,7 @@ static NTSTATUS cli_pipe_verify_schannel(struct rpc_pipe_client *cli,
|
||||
* stream once the sign/seal is done.
|
||||
*/
|
||||
|
||||
*p_ss_padding_len = auth_info.auth_pad_len;
|
||||
*p_ss_padding_len = auth_info.auth_pad_length;
|
||||
|
||||
return NT_STATUS_OK;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user