s4: cifsdd: Allocate the event context off NULL, not talloc_autofree_context().
authorJeremy Allison <jra@samba.org>
Thu, 11 May 2017 23:10:31 +0000 (16:10 -0700)
committerRalph Boehme <slow@samba.org>
Sat, 13 May 2017 14:50:13 +0000 (16:50 +0200)
Ensure it's freed on exit paths.

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
source4/client/cifsdd.c

index 980948a1d6be1561739b41da0bf79ee59d44e285..7ab59cd49e20e84bde40126f275040a631c2e4bd 100644 (file)
@@ -551,6 +551,7 @@ int main(int argc, const char ** argv)
        int i;
        const char ** dd_args;
        struct tevent_context *ev;
+       int rc;
 
        poptContext pctx;
        struct poptOption poptions[] = {
@@ -601,7 +602,7 @@ int main(int argc, const char ** argv)
                }
        }
 
-       ev = s4_event_context_init(talloc_autofree_context());
+       ev = s4_event_context_init(NULL);
 
        gensec_init();
        dump_args();
@@ -609,22 +610,27 @@ int main(int argc, const char ** argv)
        if (check_arg_numeric("ibs") == 0 || check_arg_numeric("obs") == 0) {
                fprintf(stderr, "%s: block sizes must be greater that zero\n",
                                PROGNAME);
+               talloc_free(ev);
                exit(SYNTAX_EXIT_CODE);
        }
 
        if (check_arg_pathname("if") == NULL) {
                fprintf(stderr, "%s: missing input filename\n", PROGNAME);
+               talloc_free(ev);
                exit(SYNTAX_EXIT_CODE);
        }
 
        if (check_arg_pathname("of") == NULL) {
                fprintf(stderr, "%s: missing output filename\n", PROGNAME);
+               talloc_free(ev);
                exit(SYNTAX_EXIT_CODE);
        }
 
        CatchSignal(SIGINT, dd_handle_signal);
        CatchSignal(SIGUSR1, dd_handle_signal);
-       return(copy_files(ev, cmdline_lp_ctx));
+       rc = copy_files(ev, cmdline_lp_ctx);
+       talloc_free(ev);
+       return rc;
 }
 
 /* vim: set sw=8 sts=8 ts=8 tw=79 : */