Memory leak in new rpc server infrastructure?
Jeremy Allison
jra at samba.org
Wed Oct 4 19:28:14 GMT 2006
On Wed, Oct 04, 2006 at 12:23:47PM -0700, Jeremy Allison wrote:
> On Wed, Oct 04, 2006 at 09:22:23PM +0200, Volker Lendecke wrote:
> > On Wed, Oct 04, 2006 at 09:14:21PM +0200, Jelmer Vernooij wrote:
> > > I'll have a look at this on friday and see if I can get it fixed in
> > > pidl. There shouldn't be a leak here though as it's allocated using
> > > talloc.
> >
> > It's not the blob from the autogenerated code that leaks,
> > it's the one from srv_pipe_hnd.c:662 that leaks, the
> > autogenerated code unconditionally overwrites that.
> >
> > The problem is that the "old" code assumes this prior
> > initialization.
>
> Yeah the "old" server code has already initialized this
> prs_struct with malloc'ed memory. The call to :
>
> prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx_
>
> needs to be changed to :
>
> prs_copy_data_in(&p->out_data.rdata, blob.data, blob.length);
>
> in the auto-generated code.
Jelmer,
How about this patch :
-------------- next part --------------
Index: lib/Parse/Pidl/Samba3/ServerNDR.pm
===================================================================
--- lib/Parse/Pidl/Samba3/ServerNDR.pm (revision 19059)
+++ lib/Parse/Pidl/Samba3/ServerNDR.pm (working copy)
@@ -138,7 +138,7 @@
pidl "}";
pidl "";
pidl "blob = ndr_push_blob(push);";
- pidl "if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {";
+ pidl "if (!prs_copy_data_in(&p->out_data.rdata, blob.data, blob.length)) {";
pidl "\ttalloc_free(mem_ctx);";
pidl "\treturn False;";
pidl "}";
More information about the samba-technical
mailing list