Nmap Development mailing list archives
Re: [PATCH] Fix IPv6 scanning against link-local addresses
From: Kris Katterjohn <katterjohn () gmail com>
Date: Tue, 20 May 2008 00:26:02 -0500
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Kris Katterjohn wrote:
I had a hunch that the struct sockaddr_in6 sin6_scope_id member was the way to handle this, and it certainly seems to be. If the zone ID passed to Nmap is numeric, that number is just stored in that member. If the ID is not fully numeric, it is assumed to be an interface name. I added the ifindex member to struct interface_info and I look it up with getInterfaceByName().
D'oh! It turns out that this is already taken care of by getaddrinfo(), so that makes it a lot simpler. I was right about sin6_scope_id, but I didn't need to do the parsing and interface index lookups. Since it is so simple, I went ahead and committed the fix. I've attached a copy of the patch for review and the curious. I've tested it on Windows XP and Linux. Both numeric indexes and interface names still work on Linux. Thanks, Kris Katterjohn -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iQIVAwUBSDJg5v9K37xXYl36AQLWWQ//TaA7mnhzB/MqaDldN55sknof86E2xLXk Sncz2UEYm0uBnNYObQiawbrygPjK3W0Jk2ikE5Kj7rzrBdqg4zXOhrxKqpUyP4CR kHmBXFOxXBHdoPBvk+K5FCY0+2VmiCwogwqHtDz+j9T83vMD/i9AO8ypjeqgwvfN U2C8bsW8hoEGF83H3AIGK3FDKW0tr05VFNiy6yhIiA6In+Ag3S/DRmcToOzOg4mv t+nqbJx5f0/g4vJHz/khTzux68gewWVc11T7WXBRfmIQzPXoI/v8129TgCDAnk4q dIUIxasCF0t7A/TF9Wl80obe2wbKttobxiw6EezTHZCVhsvuKf4iscpwB+JSajzB rzzE3S1o1SKOHC1OAlSqH+tY8vDcTzYVN99RwP9OfYkVPFpAB7v+1TEWQs85c5vM m/3Gt+JljupyjNDR+S0lI2Vzc8EQhR9jhIYuJunSPXMb/oJbvH0ItR/MHmbegVD4 YuLIgP3M7N9vifpdLz+dHFK5nR1rvbxWB6EWZ3UEmSjrWbVyWBjbPzc1dHij+d2e jwmdpAd9v1cYbx7vavg4zln1PPAzKE/RBYWrKj4+psFXbx2VNhuisehWyJ2kWZKA fi521GVQQgOimrGyZdxTN6VqjaTDUFj/wAwMpJhwa1BFgNHkUuJ3+66k6MRYs/jC 22muYfloYCI= =DSbo -----END PGP SIGNATURE-----
Index: TargetGroup.cc =================================================================== --- TargetGroup.cc (revision 7549) +++ TargetGroup.cc (revision 7550) @@ -296,7 +296,7 @@ } assert(result->ai_addrlen == sizeof(struct sockaddr_in6)); struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *) result->ai_addr; - memcpy(ip6.s6_addr, sin6->sin6_addr.s6_addr, 16); + memcpy(&ip6, sin6, sizeof(struct sockaddr_in6)); ipsleft = 1; freeaddrinfo(result); #else // HAVE_IPV6 @@ -443,7 +443,8 @@ #ifdef SIN_LEN sin6->sin6_len = *sslen; #endif /* SIN_LEN */ - memcpy(sin6->sin6_addr.s6_addr, ip6.s6_addr, 16); + memcpy(sin6->sin6_addr.s6_addr, ip6.sin6_addr.s6_addr, 16); + sin6->sin6_scope_id = ip6.sin6_scope_id; #else fatal("IPV6 not supported on this platform"); #endif // HAVE_IPV6 Index: TargetGroup.h =================================================================== --- TargetGroup.h (revision 7549) +++ TargetGroup.h (revision 7550) @@ -143,7 +143,7 @@ void Initialize(); #if HAVE_IPV6 - struct in6_addr ip6; + struct sockaddr_in6 ip6; #endif /* These 4 are used for the '/mask' style of specifying target
_______________________________________________ Sent through the nmap-dev mailing list http://cgi.insecure.org/mailman/listinfo/nmap-dev Archived at http://SecLists.Org
Current thread:
- [PATCH] Fix IPv6 scanning against link-local addresses Kris Katterjohn (May 19)
- Re: [PATCH] Fix IPv6 scanning against link-local addresses Kris Katterjohn (May 19)