From af5e5175215145fb36bb28357894c41abd3bca84 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Tue, 10 Oct 2006 07:52:31 +0000 Subject: r19219: Fix a memleak in the generated srv_code. Fix a warning. Implement the rng_fault_state return check. After this (and Jeremy's fix) all Samba3-developers should do a 'make idl' and do a complete rebuild. Volker (This used to be commit 0c0a861c8b5b4c44d290f8db0d4c5e95260140ca) --- source4/pidl/lib/Parse/Pidl/Samba3/ServerNDR.pm | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'source4/pidl/lib/Parse/Pidl/Samba3') diff --git a/source4/pidl/lib/Parse/Pidl/Samba3/ServerNDR.pm b/source4/pidl/lib/Parse/Pidl/Samba3/ServerNDR.pm index 02fd1884a2..a7c81e4e2b 100644 --- a/source4/pidl/lib/Parse/Pidl/Samba3/ServerNDR.pm +++ b/source4/pidl/lib/Parse/Pidl/Samba3/ServerNDR.pm @@ -70,8 +70,10 @@ sub ParseFunction($$) pidl "}"; pidl ""; pidl "pull = ndr_pull_init_blob(&blob, mem_ctx);"; - pidl "if (pull == NULL)"; + pidl "if (pull == NULL) {"; + pidl "\ttalloc_free(mem_ctx);"; pidl "\treturn False;"; + pidl "}"; pidl ""; pidl "pull->flags |= LIBNDR_FLAG_REF_ALLOC;"; pidl "status = ndr_pull_$fn->{NAME}(pull, NDR_IN, &r);"; @@ -121,6 +123,12 @@ sub ParseFunction($$) pidl_hdr "$proto"; pidl "$ret;"; + pidl ""; + pidl "if (p->rng_fault_state) {"; + pidl "\ttalloc_free(mem_ctx);"; + pidl "\t/* Return True here, srv_pipe_hnd.c will take care */"; + pidl "\treturn True;"; + pidl "}"; pidl ""; pidl "if (DEBUGLEVEL >= 10)"; pidl "\tNDR_PRINT_OUT_DEBUG($fn->{NAME}, &r);"; @@ -138,7 +146,7 @@ sub ParseFunction($$) pidl "}"; pidl ""; pidl "blob = ndr_push_blob(push);"; - pidl "if (!prs_copy_data_in(&p->out_data.rdata, blob.data, (uint32)blob.length)) {"; + pidl "if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {"; pidl "\ttalloc_free(mem_ctx);"; pidl "\treturn False;"; pidl "}"; -- cgit