mirror of
https://github.com/nmap/nmap.git
synced 2026-05-13 08:46:45 +00:00
Check ipv6 route flags and sscanf count as well.
This commit is contained in:
parent
95b634d28c
commit
06dcb1c138
1 changed files with 10 additions and 4 deletions
|
|
@ -212,10 +212,10 @@ route_loop(route_t *r, route_handler callback, void *arg)
|
|||
FILE *fp;
|
||||
struct route_entry entry;
|
||||
char buf[BUFSIZ];
|
||||
char ifbuf[16];
|
||||
int ret = 0;
|
||||
|
||||
if ((fp = fopen(PROC_ROUTE_FILE, "r")) != NULL) {
|
||||
char ifbuf[16];
|
||||
int i, iflags, refcnt, use, metric, mss, win, irtt;
|
||||
uint32_t mask;
|
||||
|
||||
|
|
@ -244,14 +244,17 @@ route_loop(route_t *r, route_handler callback, void *arg)
|
|||
}
|
||||
if (ret == 0 && (fp = fopen(PROC_IPV6_ROUTE_FILE, "r")) != NULL) {
|
||||
char s[33], d[8][5], n[8][5];
|
||||
int i, iflags;
|
||||
u_int slen, dlen;
|
||||
|
||||
while (fgets(buf, sizeof(buf), fp) != NULL) {
|
||||
sscanf(buf, "%04s%04s%04s%04s%04s%04s%04s%04s %02x "
|
||||
"%32s %02x %04s%04s%04s%04s%04s%04s%04s%04s ",
|
||||
i = sscanf(buf, "%04s%04s%04s%04s%04s%04s%04s%04s %02x "
|
||||
"%32s %02x %04s%04s%04s%04s%04s%04s%04s%04s "
|
||||
"%*x %*x %*x %x %15s",
|
||||
d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],
|
||||
&dlen, s, &slen,
|
||||
n[0], n[1], n[2], n[3], n[4], n[5], n[6], n[7]);
|
||||
n[0], n[1], n[2], n[3], n[4], n[5], n[6], n[7],
|
||||
&iflags, ifbuf);
|
||||
snprintf(buf, sizeof(buf), "%s:%s:%s:%s:%s:%s:%s:%s/%d",
|
||||
d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],
|
||||
dlen);
|
||||
|
|
@ -261,6 +264,9 @@ route_loop(route_t *r, route_handler callback, void *arg)
|
|||
IP6_ADDR_BITS);
|
||||
addr_aton(buf, &entry.route_gw);
|
||||
|
||||
if (i < 21 || !(iflags & RTF_UP))
|
||||
continue;
|
||||
|
||||
if ((ret = callback(&entry, arg)) != 0)
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue