r19219: Fix a memleak in the generated srv_code.
authorVolker Lendecke <vlendec@samba.org>
Tue, 10 Oct 2006 07:52:31 +0000 (07:52 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 19:20:55 +0000 (14:20 -0500)
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

index 02fd1884a240e88c44e060ee968528ded8410025..a7c81e4e2b4e2e98f2ecd5c0d4d5c84b7784d8a2 100644 (file)
@@ -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 "}";