diff options
author | Michael Adam <obnox@samba.org> | 2007-11-28 15:24:18 +0100 |
---|---|---|
committer | Michael Adam <obnox@samba.org> | 2007-11-28 15:24:53 +0100 |
commit | ddcaaae4fff9ebb0de9f61599ec3fe058d8deaa4 (patch) | |
tree | 1cf78592c23de14cefab2956d1c487b6331e140f | |
parent | 3daafc5662825228219e986a9fa570824b2104a8 (diff) | |
download | samba-ddcaaae4fff9ebb0de9f61599ec3fe058d8deaa4.tar.gz samba-ddcaaae4fff9ebb0de9f61599ec3fe058d8deaa4.tar.bz2 samba-ddcaaae4fff9ebb0de9f61599ec3fe058d8deaa4.zip |
Give rpcclient a talloc stackframe.
Michael
(This used to be commit 3330394d2d5d58576d9ddb52f60a3e27f31d5198)
-rw-r--r-- | source3/rpcclient/rpcclient.c | 35 |
1 files changed, 23 insertions, 12 deletions
diff --git a/source3/rpcclient/rpcclient.c b/source3/rpcclient/rpcclient.c index 9f59ea6f8c..d24a97c89e 100644 --- a/source3/rpcclient/rpcclient.c +++ b/source3/rpcclient/rpcclient.c @@ -721,13 +721,15 @@ out_free: int opt; static char *cmdstr = NULL; const char *server; - struct cli_state *cli; + struct cli_state *cli = NULL; static char *opt_ipaddr=NULL; struct cmd_set **cmd_set; struct sockaddr_storage server_ss; NTSTATUS nt_status; static int opt_port = 0; fstring new_workgroup; + int result = 0; + TALLOC_CTX *frame = talloc_stackframe(); /* make sure the vars that get altered (4th field) are in a fixed location or certain compilers complain */ @@ -760,7 +762,7 @@ out_free: if (argc == 1) { poptPrintHelp(pc, stderr, 0); - return 0; + goto done; } while((opt = poptGetNextOpt(pc)) != -1) { @@ -772,7 +774,8 @@ out_free: AI_NUMERICHOST)) { fprintf(stderr, "%s not a valid IP address\n", opt_ipaddr); - return 1; + result = 1; + goto done; } } } @@ -784,15 +787,18 @@ out_free: if (!server || poptGetArg(pc)) { poptPrintHelp(pc, stderr, 0); - return 1; + result = 1; + goto done; } poptFreeContext(pc); load_interfaces(); - if (!init_names()) - return 1; + if (!init_names()) { + result = 1; + goto done; + } /* save the workgroup... @@ -838,7 +844,8 @@ out_free: if (!NT_STATUS_IS_OK(nt_status)) { DEBUG(0,("Cannot connect to server. Error was %s\n", nt_errstr(nt_status))); - return 1; + result = 1; + goto done; } #if 0 /* COMMENT OUT FOR TESTING */ @@ -863,7 +870,8 @@ out_free: if (cmdstr && cmdstr[0]) { char *cmd; char *p = cmdstr; - int result = 0; + + result = 0; while((cmd=next_command(&p)) != NULL) { NTSTATUS cmd_result = process_cmd(cli, cmd); @@ -871,8 +879,7 @@ out_free: result = NT_STATUS_IS_ERR(cmd_result); } - cli_shutdown(cli); - return result; + goto done; } /* Loop around accepting commands */ @@ -889,6 +896,10 @@ out_free: process_cmd(cli, line); } - cli_shutdown(cli); - return 0; +done: + if (cli != NULL) { + cli_shutdown(cli); + } + TALLOC_FREE(frame); + return result; } |