X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=command.c;h=deb21a6fc2ace4df2fcc2fd55852d0ce7c56f121;hp=9abe04a341f94520a3720167e6610f1940e9fb24;hb=36bc7580a5ddee8f6e46bccfea7519291f372f0f;hpb=00e4d4da1b2c00da139b09d3ed4ab9ad9fba2691 diff --git a/command.c b/command.c index 9abe04a3..deb21a6f 100644 --- a/command.c +++ b/command.c @@ -192,7 +192,7 @@ static int check_sender_args(int argc, char * const * argv, struct sender_comman case SENDER_ALLOW: if (argc != 4 && argc != 5) return -E_COMMAND_SYNTAX; - if (!inet_pton(AF_INET, argv[3], &scd->addr)) + if (!is_valid_ipv4_address(argv[3])) return -E_COMMAND_SYNTAX; scd->netmask = 32; if (argc == 5) { @@ -200,19 +200,13 @@ static int check_sender_args(int argc, char * const * argv, struct sender_comman 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: - if (argc != 4 && argc != 5) - return -E_COMMAND_SYNTAX; - if (!inet_pton(AF_INET, argv[3], &scd->addr)) + if (argc != 4 || parse_url(argv[3], scd->host, + sizeof(scd->host), &scd->port) == NULL) return -E_COMMAND_SYNTAX; - scd->port = -1; - if (argc == 5) { - scd->port = atoi(argv[4]); - if (scd->port < 0 || scd->port > 65535) - return -E_COMMAND_SYNTAX; - } break; default: return -E_COMMAND_SYNTAX; @@ -254,7 +248,7 @@ int com_sender(int fd, int argc, char * const * argv) usleep(100 * 1000); continue; } - mmd->sender_cmd_data = scd; + memcpy(&mmd->sender_cmd_data, &scd, sizeof(scd)); mutex_unlock(mmd_mutex); break; }