X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=command.c;h=90c4b60846c5c6cade80316f57bef742fdc7e716;hp=f8b5e4ee50f47af295c2e4d2689d30fc031eb44f;hb=672e27768e31a6eaa6854d4fc75ee6885db9abd8;hpb=03d45daad787b8f2ced3070e80c4550bf4b02931 diff --git a/command.c b/command.c index f8b5e4ee..90c4b608 100644 --- a/command.c +++ b/command.c @@ -367,6 +367,7 @@ int com_stat(struct rc4_context *rc4c, int argc, char * const * argv) parser_friendly = 1; continue; } + return -E_COMMAND_SYNTAX; } if (i != argc) return -E_COMMAND_SYNTAX; @@ -824,10 +825,14 @@ __noreturn void handle_connect(int fd, const char *peername) if (ret < 0) goto err_out; /* valid command and sufficient perms */ - argc = split_args(command, &argv, "\n"); + ret = create_argv(command, "\n", &argv); + if (ret < 0) + goto err_out; + argc = ret; PARA_NOTICE_LOG("calling com_%s() for %s@%s\n", cmd->name, u->name, peername); ret = cmd->handler(&rc4c, argc, argv); + free_argv(argv); mutex_lock(mmd_mutex); mmd->num_commands++; mutex_unlock(mmd_mutex); @@ -839,7 +844,6 @@ net_err: PARA_NOTICE_LOG("%s\n", para_strerror(-ret)); out: free(command); - free(argv); mutex_lock(mmd_mutex); if (cmd && (cmd->perms & AFS_WRITE) && ret >= 0) mmd->events++;