summaryrefslogtreecommitdiff
path: root/source4/rpc_server/dcerpc_server.c
diff options
context:
space:
mode:
Diffstat (limited to 'source4/rpc_server/dcerpc_server.c')
-rw-r--r--source4/rpc_server/dcerpc_server.c19
1 files changed, 7 insertions, 12 deletions
diff --git a/source4/rpc_server/dcerpc_server.c b/source4/rpc_server/dcerpc_server.c
index 81715f038b..7fa7a7aa8b 100644
--- a/source4/rpc_server/dcerpc_server.c
+++ b/source4/rpc_server/dcerpc_server.c
@@ -513,16 +513,15 @@ static void dce_partial_advance(struct dcesrv_state *dce, uint32 offset)
DATA_BLOB blob;
if (dce->partial_input.length == offset) {
- talloc_free(dce->mem_ctx, dce->partial_input.data);
+ free(dce->partial_input.data);
dce->partial_input = data_blob(NULL, 0);
return;
}
blob = dce->partial_input;
- dce->partial_input = data_blob_talloc(dce->mem_ctx,
- blob.data + offset,
- blob.length - offset);
- talloc_free(dce->mem_ctx, blob.data);
+ dce->partial_input = data_blob(blob.data + offset,
+ blob.length - offset);
+ free(blob.data);
}
/*
@@ -567,7 +566,7 @@ NTSTATUS dcesrv_input_process(struct dcesrv_state *dce)
return status;
}
- dce_partial_advance(dce, ndr->offset);
+ dce_partial_advance(dce, blob.length);
/* see if this is a continued packet */
if (!(call->pkt.pfc_flags & DCERPC_PFC_FLAG_FIRST)) {
@@ -651,14 +650,10 @@ NTSTATUS dcesrv_input_process(struct dcesrv_state *dce)
*/
NTSTATUS dcesrv_input(struct dcesrv_state *dce, const DATA_BLOB *data)
{
- struct ndr_pull *ndr;
- TALLOC_CTX *mem_ctx;
NTSTATUS status;
- struct dcesrv_call_state *call;
- dce->partial_input.data = talloc_realloc(dce->mem_ctx,
- dce->partial_input.data,
- dce->partial_input.length + data->length);
+ dce->partial_input.data = Realloc(dce->partial_input.data,
+ dce->partial_input.length + data->length);
if (!dce->partial_input.data) {
return NT_STATUS_NO_MEMORY;
}