fix: parsing handling negative values for the ports and threads
This commit is contained in:
@ -47,7 +47,7 @@ e_scantype parse_type(const char *arg)
|
|||||||
for (size_t i = 0; i < 6; i++)
|
for (size_t i = 0; i < 6; i++)
|
||||||
if (!strcmp(arg, types_str[i]))
|
if (!strcmp(arg, types_str[i]))
|
||||||
return i;
|
return i;
|
||||||
dprintf(2, "ft_nmap: type: invalid argument: '%s'\n", arg);
|
dprintf(2, "ft_nmap: invalid argument to --scan: '%s'\n", arg);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -80,6 +80,10 @@ int parse_ports(const char *arg, uint16_t *p_start, uint16_t *p_end)
|
|||||||
arg, UINT16_MAX);
|
arg, UINT16_MAX);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
if (start < 0 || end < 0) {
|
||||||
|
dprintf(2, "ft_nmap: invalid port value: %d\n", start);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
*p_start = start;
|
*p_start = start;
|
||||||
*p_end = end;
|
*p_end = end;
|
||||||
return 0;
|
return 0;
|
||||||
@ -92,9 +96,13 @@ static int check_arg(e_flag flag, const char *arg)
|
|||||||
{
|
{
|
||||||
switch (flag) {
|
switch (flag) {
|
||||||
case FL_SPEEDUP: {
|
case FL_SPEEDUP: {
|
||||||
for (size_t i = 0; arg[i]; i++)
|
for (size_t i = 0; arg[i]; i++) {
|
||||||
if (!isdigit(arg[i]))
|
if (!isdigit(arg[i])) {
|
||||||
|
dprintf(2, "ft_nmap: invalid argument: %s\n",
|
||||||
|
arg);
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
int value = atoi(arg);
|
int value = atoi(arg);
|
||||||
if (value < 0 || value > 250) {
|
if (value < 0 || value > 250) {
|
||||||
dprintf(2,
|
dprintf(2,
|
||||||
@ -127,9 +135,9 @@ static int check_arg(e_flag flag, const char *arg)
|
|||||||
"Invalid argument\n");
|
"Invalid argument\n");
|
||||||
return -1;
|
return -1;
|
||||||
} else if (nb < 0 || nb > 255) {
|
} else if (nb < 0 || nb > 255) {
|
||||||
dprintf(
|
dprintf(2,
|
||||||
2,
|
"ft_nmap: invalid argument: '%s': out "
|
||||||
"ft_nmap: invalid argument: '%s': out of range: 0 "
|
"of range: 0 "
|
||||||
"<= value <= 255\n",
|
"<= value <= 255\n",
|
||||||
arg);
|
arg);
|
||||||
return -1;
|
return -1;
|
||||||
@ -142,9 +150,9 @@ static int check_arg(e_flag flag, const char *arg)
|
|||||||
dprintf(2, "ft_nmap: cannot set max_retries to 0\n");
|
dprintf(2, "ft_nmap: cannot set max_retries to 0\n");
|
||||||
return -1;
|
return -1;
|
||||||
} else if (nb < 0 || nb > 255) {
|
} else if (nb < 0 || nb > 255) {
|
||||||
dprintf(
|
dprintf(2,
|
||||||
2,
|
"ft_nmap: invalid argument: '%s': out "
|
||||||
"ft_nmap: invalid argument: '%s': out of range: 0 "
|
"of range: 0 "
|
||||||
"<= value <= 255\n",
|
"<= value <= 255\n",
|
||||||
arg);
|
arg);
|
||||||
return -1;
|
return -1;
|
||||||
@ -233,6 +241,12 @@ int parsing(struct scan *general, const struct option_lst *options)
|
|||||||
if (parse_ports(get_option_arg(options, FL_PORTS), &general->port_start,
|
if (parse_ports(get_option_arg(options, FL_PORTS), &general->port_start,
|
||||||
&general->port_end))
|
&general->port_end))
|
||||||
return -1;
|
return -1;
|
||||||
|
if (general->port_start <= 0 || general->port_end <= 0) {
|
||||||
|
dprintf(2, "ft_nmap: invalid port value: %d\n",
|
||||||
|
general->port_start <= 0 ? general->port_start
|
||||||
|
: general->port_end);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
general->type = parse_type(get_option_arg(options, FL_TYPE));
|
general->type = parse_type(get_option_arg(options, FL_TYPE));
|
||||||
if ((int)general->type == -1)
|
if ((int)general->type == -1)
|
||||||
return -1;
|
return -1;
|
||||||
@ -243,7 +257,8 @@ int parsing(struct scan *general, const struct option_lst *options)
|
|||||||
const char *nb_threads_str = get_option_arg(options, FL_SPEEDUP);
|
const char *nb_threads_str = get_option_arg(options, FL_SPEEDUP);
|
||||||
uint8_t nb_threads = nb_threads_str ? atoi(nb_threads_str) : 1;
|
uint8_t nb_threads = nb_threads_str ? atoi(nb_threads_str) : 1;
|
||||||
if (general->port_end - general->port_start + 1 < nb_threads) {
|
if (general->port_end - general->port_start + 1 < nb_threads) {
|
||||||
dprintf(2, "ft_nmap: number of threads to use must be superior "
|
dprintf(2, "ft_nmap: number of threads to use must be "
|
||||||
|
"superior "
|
||||||
"or equals to the ports range\n");
|
"or equals to the ports range\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user