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/librpc/rpc/dcerpc.c | 3 ++- source4/librpc/rpc/dcerpc_smb.c | 2 +- source4/librpc/rpc/dcerpc_tcp.c | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) (limited to 'source4/librpc/rpc') diff --git a/source4/librpc/rpc/dcerpc.c b/source4/librpc/rpc/dcerpc.c index 352db37d2b..d41eebbf2f 100644 --- a/source4/librpc/rpc/dcerpc.c +++ b/source4/librpc/rpc/dcerpc.c @@ -781,7 +781,8 @@ static void dcerpc_request_recv_data(struct dcerpc_pipe *p, length = pkt.u.response.stub_and_verifier.length; if (length > 0) { - req->payload.data = talloc_realloc(req->payload.data, + req->payload.data = talloc_realloc(req, + req->payload.data, req->payload.length + length); if (!req->payload.data) { req->status = NT_STATUS_NO_MEMORY; diff --git a/source4/librpc/rpc/dcerpc_smb.c b/source4/librpc/rpc/dcerpc_smb.c index 09c5f3772c..7000bcd20d 100644 --- a/source4/librpc/rpc/dcerpc_smb.c +++ b/source4/librpc/rpc/dcerpc_smb.c @@ -92,7 +92,7 @@ static void smb_read_callback(struct smbcli_request *req) } /* initiate another read request, as we only got part of a fragment */ - state->data.data = talloc_realloc(state->data.data, frag_length); + state->data.data = talloc_realloc(state, state->data.data, frag_length); io->readx.in.mincnt = MIN(state->p->srv_max_xmit_frag, frag_length - state->received); diff --git a/source4/librpc/rpc/dcerpc_tcp.c b/source4/librpc/rpc/dcerpc_tcp.c index acf3d58262..6940c7705d 100644 --- a/source4/librpc/rpc/dcerpc_tcp.c +++ b/source4/librpc/rpc/dcerpc_tcp.c @@ -141,7 +141,7 @@ static void tcp_process_recv(struct dcerpc_pipe *p) } frag_length = dcerpc_get_frag_length(&tcp->recv.data); - tcp->recv.data.data = talloc_realloc(tcp->recv.data.data, + tcp->recv.data.data = talloc_realloc(tcp, tcp->recv.data.data, frag_length); if (tcp->recv.data.data == NULL) { tcp_sock_dead(p, NT_STATUS_NO_MEMORY); -- cgit