diff options
-rw-r--r-- | source3/rpcclient/rpcclient.c | 34 |
1 files changed, 18 insertions, 16 deletions
diff --git a/source3/rpcclient/rpcclient.c b/source3/rpcclient/rpcclient.c index 56dd4d1854..91cf722120 100644 --- a/source3/rpcclient/rpcclient.c +++ b/source3/rpcclient/rpcclient.c @@ -121,7 +121,7 @@ static uint32 do_cmd(struct cmd_set *cmd_entry, char *cmd) char *p = cmd, **argv = NULL; uint32 result; pstring buf; - int argc = 0, i; + int argc = 1, i; next_token(&p, buf, " ", sizeof(buf)); @@ -142,15 +142,16 @@ static uint32 do_cmd(struct cmd_set *cmd_entry, char *cmd) /* Create argument list */ argv = (char **)malloc(sizeof(char *) * argc); + if (!argv) { fprintf(stderr, "out of memoryx\n"); return 0; } - argc = 1; p = cmd; next_token(&p, buf, " ", sizeof(buf)); argv[0] = strdup(buf); + argc = 1; goto again; } @@ -200,7 +201,7 @@ static uint32 process_cmd(char *cmd) } done: - if (!found) { + if (!found && buf[0]) { printf("command not found: %s\n", buf); return 0; } @@ -210,7 +211,6 @@ static uint32 process_cmd(char *cmd) } return result; - } /* Print usage information */ @@ -238,7 +238,7 @@ static void usage(char *pname) BOOL got_pass = False; BOOL have_ip = False; int opt; - pstring cmdstr, servicesf = CONFIGFILE; + pstring cmdstr = "", servicesf = CONFIGFILE; extern FILE *dbf; setlinebuf(stdout); @@ -248,13 +248,22 @@ static void usage(char *pname) #ifdef HAVE_LIBREADLINE /* Allow conditional parsing of the ~/.inputrc file. */ - rl_readline_name = "smbclient"; + rl_readline_name = "rpcclient"; #endif DEBUGLEVEL = 2; - TimeInit(); + /* Load smb.conf file */ + + if (!lp_load(servicesf,True,False,False)) { + fprintf(stderr, "Can't load %s\n", servicesf); + } + + codepage_initialise(lp_client_code_page()); charset_initialise(); + load_interfaces(); + + TimeInit(); /* Parse options */ @@ -308,15 +317,6 @@ static void usage(char *pname) } } - /* Load smb.conf file */ - - if (!lp_load(servicesf,True,False,False)) { - fprintf(stderr, "Can't load %s\n", servicesf); - } - - codepage_initialise(lp_client_code_page()); - load_interfaces(); - /* Load command lists */ add_command_set(rpcclient_commands); @@ -343,6 +343,8 @@ static void usage(char *pname) while(1) { pstring prompt, cmd; uint32 result; + + ZERO_STRUCT(cmd); slprintf(prompt, sizeof(prompt) - 1, "rpcclient> "); |