1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-11 05:18:09 +03:00

we only want the per-call stub data

This commit is contained in:
Andrew Tridgell 0001-01-01 00:00:00 +00:00
parent e925c315f5
commit 95fa15cdcf
2 changed files with 23 additions and 9 deletions

View File

@ -527,8 +527,8 @@ NTSTATUS dcerpc_bind(struct dcerpc_pipe *p,
pkt.hdr.call_id = p->call_id++;
pkt.hdr.auth_length = 0;
pkt.in.bind.max_xmit_frag = 5680;
pkt.in.bind.max_recv_frag = 5680;
pkt.in.bind.max_xmit_frag = 0x2000;
pkt.in.bind.max_recv_frag = 0x2000;
pkt.in.bind.assoc_group_id = 0;
pkt.in.bind.num_contexts = 1;
pkt.in.bind.ctx_list = talloc(mem_ctx, sizeof(pkt.in.bind.ctx_list[0]));
@ -565,7 +565,6 @@ NTSTATUS dcerpc_bind(struct dcerpc_pipe *p,
status = NT_STATUS_UNSUCCESSFUL;
}
p->srv_max_xmit_frag = pkt.out.bind_ack.max_xmit_frag;
p->srv_max_recv_frag = pkt.out.bind_ack.max_recv_frag;
@ -610,6 +609,9 @@ NTSTATUS cli_dcerpc_bind_byname(struct dcerpc_pipe *p, const char *pipe_name)
return dcerpc_bind(p, &known_pipes[i].syntax, &known_pipes[i].transfer_syntax);
}
/*
perform a full request/response pair on a dcerpc pipe
*/
NTSTATUS cli_dcerpc_request(struct dcerpc_pipe *p,
uint16 opnum,
TALLOC_CTX *mem_ctx,
@ -619,7 +621,7 @@ NTSTATUS cli_dcerpc_request(struct dcerpc_pipe *p,
struct dcerpc_packet pkt;
NTSTATUS status;
DATA_BLOB blob;
DATA_BLOB blob_in, blob_out;
init_dcerpc_hdr(&pkt.hdr);
@ -633,12 +635,25 @@ NTSTATUS cli_dcerpc_request(struct dcerpc_pipe *p,
pkt.in.request.stub_data = *stub_data_in;
pkt.in.request.auth_verifier = data_blob(NULL, 0);
status = dcerpc_push(&blob, mem_ctx, &pkt);
status = dcerpc_push(&blob_in, mem_ctx, &pkt);
if (!NT_STATUS_IS_OK(status)) {
return status;
}
status = dcerpc_raw_packet(p, mem_ctx, &blob, stub_data_out);
status = dcerpc_raw_packet(p, mem_ctx, &blob_in, &blob_out);
status = dcerpc_pull(&blob_out, mem_ctx, &pkt);
if (!NT_STATUS_IS_OK(status)) {
return status;
}
if (pkt.hdr.ptype != DCERPC_PKT_RESPONSE) {
status = NT_STATUS_UNSUCCESSFUL;
}
if (stub_data_out) {
*stub_data_out = pkt.out.response.stub_data;
}
return status;
}

View File

@ -36,7 +36,6 @@ static DATA_BLOB blob_lsa_open_policy_req(TALLOC_CTX *mem_ctx, BOOL sec_qos,
prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
/* Initialise input parameters */
if (sec_qos) {
init_lsa_sec_qos(&qos, 2, 1, 0);
init_q_open_pol(&q, '\\', 0, des_access, &qos);
@ -55,7 +54,7 @@ BOOL torture_rpc_lsa(int dummy)
{
NTSTATUS status;
struct dcerpc_pipe *p;
DATA_BLOB request;
DATA_BLOB request, response;
TALLOC_CTX *mem_ctx;
mem_ctx = talloc_init("torture_rpc_lsa");
@ -68,7 +67,7 @@ BOOL torture_rpc_lsa(int dummy)
request = blob_lsa_open_policy_req(mem_ctx, True,
SEC_RIGHTS_MAXIMUM_ALLOWED);
status = cli_dcerpc_request(p, LSA_OPENPOLICY, mem_ctx, &request, NULL);
status = cli_dcerpc_request(p, LSA_OPENPOLICY, mem_ctx, &request, &response);
if (!NT_STATUS_IS_OK(status)) {
d_printf("Failed to LSA_OPENPOLICY - %s\n", nt_errstr(status));
}