ports/security/openvas8-libraries/files/patch-misc-pcap.c
Jose Alonso Cardenas Marquez 29c543f285 - Rename openvas ports for reflect 8 version in name. I'll add openvas9 ports
and I'll take maintainership of them
2017-08-03 22:21:37 +00:00

52 lines
1.7 KiB
C

--- misc/pcap.c.orig 2015-08-03 10:14:29 UTC
+++ misc/pcap.c
@@ -631,13 +631,12 @@ getinterfaces (int *howmany)
static struct interface_info mydevs[1024];
int numinterfaces = 0;
int sd;
- int len;
+ size_t n;
char *p;
char buf[10240];
struct ifconf ifc;
struct ifreq *ifr;
struct sockaddr_in *sin;
- char *bufp;
/* Dummy socket for ioctl. */
sd = socket (AF_INET, SOCK_DGRAM, 0);
@@ -655,12 +654,8 @@ getinterfaces (int *howmany)
log_legacy_write
("getinterfaces: SIOCGIFCONF claims you have no network interfaces!");
- len = sizeof (struct ifmap);
-
- for (bufp = buf; bufp && *bufp && (bufp < (buf + ifc.ifc_len));
- bufp += sizeof (ifr->ifr_name) + len)
+ for (ifr = (struct ifreq *) buf; (char *) ifr < buf + ifc.ifc_len; )
{
- ifr = (struct ifreq *) bufp;
sin = (struct sockaddr_in *) &ifr->ifr_addr;
memcpy (&(mydevs[numinterfaces].addr), (char *) &(sin->sin_addr),
sizeof (struct in_addr));
@@ -670,6 +665,7 @@ getinterfaces (int *howmany)
strncpy (mydevs[numinterfaces].name, ifr->ifr_name, 63);
mydevs[numinterfaces].name[63] = '\0';
numinterfaces++;
+ mydevs[numinterfaces].name[0] = '\0';
if (numinterfaces == 1023)
{
log_legacy_write
@@ -677,7 +673,11 @@ getinterfaces (int *howmany)
" Things may not work right.");
break;
}
- mydevs[numinterfaces].name[0] = '\0';
+ n = offsetof(struct ifreq, ifr_addr) + ifr->ifr_addr.sa_len;
+ if (n < sizeof(*ifr))
+ ifr++;
+ else
+ ifr = (struct ifreq *)((char *)ifr + n);
}
// If output parameter given, set value