X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=command.c;h=f61ea57220d2be440728883564734e460f4c110c;hp=229ec5c6fcbdfcc6c015ef41e082db2ff3a90f23;hb=4e3d8370476eee8537d8dc325d588fca43928098;hpb=a7f31bd369e5eda15361bef5aee2529bdb6eb89e diff --git a/command.c b/command.c index 229ec5c6..f61ea572 100644 --- a/command.c +++ b/command.c @@ -185,17 +185,9 @@ static int check_sender_args(int argc, char * const * argv, struct sender_comman break; case SENDER_DENY: case SENDER_ALLOW: - if (argc != 4 && argc != 5) + if (argc != 4 || parse_cidr(argv[3], scd->host, + sizeof(scd->host), &scd->netmask) == NULL) return -E_COMMAND_SYNTAX; - if (!is_valid_ipv4_address(argv[3])) - return -E_COMMAND_SYNTAX; - scd->netmask = 32; - if (argc == 5) { - scd->netmask = atoi(argv[4]); - if (scd->netmask < 0 || scd->netmask > 32) - return -E_COMMAND_SYNTAX; - } - strncpy(scd->host, argv[3], sizeof(scd->host)); break; case SENDER_ADD: case SENDER_DELETE: @@ -315,8 +307,13 @@ int com_stat(int fd, int argc, char * const * argv) para_sigaction(SIGUSR1, dummy); - if (argc > 1) - num = atoi(argv[1]); + if (argc > 2) + return -E_COMMAND_SYNTAX; + if (argc > 1) { + ret = para_atoi32(argv[1], &num); + if (ret < 0) + goto out; + } for (;;) { mmd_dup(nmmd); @@ -791,8 +788,6 @@ __noreturn void handle_connect(int fd, const char *peername) ret = cmd->handler(fd, argc, argv); mutex_lock(mmd_mutex); mmd->num_commands++; - free(mmd->afd.afhi.info_string); - free(mmd->afd.afhi.chunk_table); mutex_unlock(mmd_mutex); if (ret >= 0) goto out;