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++)
|
||||
if (!strcmp(arg, types_str[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;
|
||||
}
|
||||
|
||||
@ -80,6 +80,10 @@ int parse_ports(const char *arg, uint16_t *p_start, uint16_t *p_end)
|
||||
arg, UINT16_MAX);
|
||||
return -1;
|
||||
}
|
||||
if (start < 0 || end < 0) {
|
||||
dprintf(2, "ft_nmap: invalid port value: %d\n", start);
|
||||
return -1;
|
||||
}
|
||||
*p_start = start;
|
||||
*p_end = end;
|
||||
return 0;
|
||||
@ -92,9 +96,13 @@ static int check_arg(e_flag flag, const char *arg)
|
||||
{
|
||||
switch (flag) {
|
||||
case FL_SPEEDUP: {
|
||||
for (size_t i = 0; arg[i]; i++)
|
||||
if (!isdigit(arg[i]))
|
||||
for (size_t i = 0; arg[i]; i++) {
|
||||
if (!isdigit(arg[i])) {
|
||||
dprintf(2, "ft_nmap: invalid argument: %s\n",
|
||||
arg);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
int value = atoi(arg);
|
||||
if (value < 0 || value > 250) {
|
||||
dprintf(2,
|
||||
@ -127,9 +135,9 @@ static int check_arg(e_flag flag, const char *arg)
|
||||
"Invalid argument\n");
|
||||
return -1;
|
||||
} else if (nb < 0 || nb > 255) {
|
||||
dprintf(
|
||||
2,
|
||||
"ft_nmap: invalid argument: '%s': out of range: 0 "
|
||||
dprintf(2,
|
||||
"ft_nmap: invalid argument: '%s': out "
|
||||
"of range: 0 "
|
||||
"<= value <= 255\n",
|
||||
arg);
|
||||
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");
|
||||
return -1;
|
||||
} else if (nb < 0 || nb > 255) {
|
||||
dprintf(
|
||||
2,
|
||||
"ft_nmap: invalid argument: '%s': out of range: 0 "
|
||||
dprintf(2,
|
||||
"ft_nmap: invalid argument: '%s': out "
|
||||
"of range: 0 "
|
||||
"<= value <= 255\n",
|
||||
arg);
|
||||
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,
|
||||
&general->port_end))
|
||||
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));
|
||||
if ((int)general->type == -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);
|
||||
uint8_t nb_threads = nb_threads_str ? atoi(nb_threads_str) : 1;
|
||||
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");
|
||||
return -1;
|
||||
}
|
||||
|
Reference in New Issue
Block a user