Nmap Development mailing list archives
Re: Compile error on netbsd
From: Jay Fink <jay.fink () gmail com>
Date: Tue, 25 Aug 2009 08:36:59 -0400
Bingo - it is in the netbsd pkgsrc tree as one of the patches as well;
here is the relevant info from netbsd's pkgsrc patch, I can try to
work into the mainline if you'd like. There is another one as well
which looks even easier.
--- tcpip.cc.orig 2008-09-04 14:41:59.000000000 +0000
+++ tcpip.cc
@@ -2890,12 +2890,10 @@ int sd;
ifr = (struct ifreq *) buf;
if (ifc.ifc_len == 0)
fatal("%s: SIOCGIFCONF claims you have no network
interfaces!\n", __func__);
-#if HAVE_SOCKADDR_SA_LEN
- /* len = MAX(sizeof(struct sockaddr), ifr->ifr_addr.sa_len);*/
- len = ifr->ifr_addr.sa_len + sizeof(ifr->ifr_name);
-#else
len = sizeof(struct ifreq);
- /* len = sizeof(SA); */
+#if HAVE_SOCKADDR_SA_LEN
+ if (ifr->ifr_addr.sa_len > sizeof(ifr->ifr_ifru))
+ len += (ifr->ifr_addr.sa_len - sizeof(ifr->ifr_ifru));
#endif
/* Debugging code
@@ -2914,10 +2912,13 @@ int sd;
printf("ifr = %X\n",(unsigned)(*(char **)&ifr));
*/
- /* On some platforms (such as FreeBSD), the length of each ifr changes
- based on the sockaddr type used, so we get the next length now */
+ /* On platforms where struct sockaddr has an sa_len member, if
+ ifr_ddr.sa_len is larger then sizeof ifr_ifru, then the actual
+ data extends beyond the end of ifr_ifru. */
+ len = sizeof(struct ifreq);
#if HAVE_SOCKADDR_SA_LEN
- len = ifr->ifr_addr.sa_len + sizeof(ifr->ifr_name);
+ if (ifr->ifr_addr.sa_len > sizeof(ifr->ifr_ifru))
+ len += (ifr->ifr_addr.sa_len - sizeof(ifr->ifr_ifru));
#endif
/* skip any device with no name */
On Mon, Aug 24, 2009 at 11:55 PM, David Fifield<david () bamsoftware com> wrote:
On Mon, Aug 24, 2009 at 08:11:23PM -0400, Jay Fink wrote:Got an interesting compile error on a NetBSD5 snapshot: tcpip.cc: In function 'interface_info* getinterfaces_siocgifconf(int*)': tcpip.cc:2948: error: pointer of type 'void *' used in arithmetic gmake[1]: *** [tcpip.o] Error 1 gmake[1]: Leaving directory `/home/jrf/nmap' gmake: *** [all] Error 2Can you find out the definition of struct ifconf? Particularly the type of the ifc_buf member. Perhaps it's a void pointer instead of a char pointer like on Linux. It should be in <net/if.h>. David Fifield
_______________________________________________ Sent through the nmap-dev mailing list http://cgi.insecure.org/mailman/listinfo/nmap-dev Archived at http://SecLists.Org
Current thread:
- Compile error on netbsd Jay Fink (Aug 24)
- Re: Compile error on netbsd David Fifield (Aug 24)
- Re: Compile error on netbsd Jay Fink (Aug 25)
- Re: Compile error on netbsd Jay Fink (Aug 26)
- Re: Compile error on netbsd Jay Fink (Aug 26)
- Re: Compile error on netbsd Jay Fink (Aug 27)
- Re: Compile error on netbsd Jay Fink (Aug 28)
- Re: Compile error on netbsd David Fifield (Aug 28)
- Re: Compile error on netbsd Jay Fink (Aug 28)
- Re: Compile error on netbsd Jay Fink (Aug 31)
- Re: Compile error on netbsd David Fifield (Aug 31)
- Re: Compile error on netbsd Jay Fink (Aug 31)
- Re: Compile error on netbsd David Fifield (Aug 31)
- Re: Compile error on netbsd Jay Fink (Aug 25)
- Re: Compile error on netbsd David Fifield (Aug 24)
