From 5b44130afad1bb1764d986de3ef0e8e04b0e7357 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Mon, 27 Sep 2004 01:36:19 +0000 Subject: r2671: we're getting too many errors caused by the talloc_realloc() API not taking a context (so when you pass a NULL pointer you end up with memory in a top level context). Fixed it by changing the API to take a context. The context is only used if the pointer you are reallocing is NULL. (This used to be commit 8dc23821c9f54b2f13049b5e608a0cafb81aa540) --- source4/rpc_server/dcerpc_server.c | 5 +++-- source4/rpc_server/epmapper/rpc_epmapper.c | 7 ++++--- 2 files changed, 7 insertions(+), 5 deletions(-) (limited to 'source4/rpc_server') diff --git a/source4/rpc_server/dcerpc_server.c b/source4/rpc_server/dcerpc_server.c index 46029ce8dc..5ab434baed 100644 --- a/source4/rpc_server/dcerpc_server.c +++ b/source4/rpc_server/dcerpc_server.c @@ -819,7 +819,7 @@ NTSTATUS dcesrv_input_process(struct dcesrv_connection *dce_conn) } call->pkt.u.request.stub_and_verifier.data = - talloc_realloc(call->pkt.u.request.stub_and_verifier.data, alloc_size); + talloc_realloc(call, call->pkt.u.request.stub_and_verifier.data, alloc_size); if (!call->pkt.u.request.stub_and_verifier.data) { return dcesrv_fault(call2, DCERPC_FAULT_OTHER); } @@ -874,7 +874,8 @@ NTSTATUS dcesrv_input(struct dcesrv_connection *dce_conn, const DATA_BLOB *data) { NTSTATUS status; - dce_conn->partial_input.data = talloc_realloc(dce_conn->partial_input.data, + dce_conn->partial_input.data = talloc_realloc(dce_conn, + dce_conn->partial_input.data, dce_conn->partial_input.length + data->length); if (!dce_conn->partial_input.data) { return NT_STATUS_NO_MEMORY; diff --git a/source4/rpc_server/epmapper/rpc_epmapper.c b/source4/rpc_server/epmapper/rpc_epmapper.c index 37f1c372e0..54a996e82a 100644 --- a/source4/rpc_server/epmapper/rpc_epmapper.c +++ b/source4/rpc_server/epmapper/rpc_epmapper.c @@ -123,13 +123,14 @@ static uint32_t build_ep_list(TALLOC_CTX *mem_ctx, struct dcesrv_endpoint *d; uint32_t total = 0; - (*eps) = talloc(mem_ctx, 0); - + *eps = NULL; + for (d=endpoint_list; d; d=d->next) { struct dcesrv_if_list *iface; for (iface=d->interface_list;iface;iface=iface->next) { - (*eps) = talloc_realloc_p(*eps, + (*eps) = talloc_realloc_p(mem_ctx, + *eps, struct dcesrv_ep_iface, total + 1); if (!*eps) { -- cgit