1
0
mirror of https://github.com/nmap/nmap.git synced 2026-01-31 10:39:02 +00:00
Commit Graph

29 Commits

Author SHA1 Message Date
dmiller
85dd7e6ac1 Fix a potential buffer overrun due to sscanf using the wrong field width 2016-07-27 20:11:27 +00:00
dmiller
312cff5ac5 Fix 'INTERFACES: NONE FOUND' for real. See also: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=821913 2016-04-25 05:20:56 +00:00
dmiller
0f602cbd38 Fix address detection on Solaris. Fixes #124 2015-05-23 13:22:29 +00:00
dmiller
73275cc872 dnet: Fix hw address getting on AIX 2014-09-09 21:19:08 +00:00
henri
4a261dd5f2 Updated libdnet to not SIOCIFNETMASK before SIOCIFADDR on OpenBSD. This was
reported to break on -current as of May 2013. [Giovanni Bechis]
2013-05-17 21:38:08 +00:00
david
0674925f73 Skip over entire ifreq struct in NEXTIFR.
On platforms supporting sa_len, NEXTIFR would skip over sa_len bytes
starting at the beginning of ifr_addr, and assume that was the end of
the struct. (The idea being that a large address such as a sockaddr_in6
could overflow the nominal struct boundary.) This logic was wrong when
there was something else in the union bigger than sa_len; we would
increment into somewhere in the middle of the same struct.

This exhibited itself on NetBSD, where struct ifreq has a
sockaddr_storage member in its internal union:
struct	ifreq {
	char	ifr_name[IFNAMSIZ];		/* if name, e.g. "en0" */
	union {
		struct	sockaddr ifru_addr;
		struct	sockaddr ifru_dstaddr;
		struct	sockaddr ifru_broadaddr;
		struct	sockaddr_storage ifru_space;

No, we skip over sa_len bytes, or to the nominal end of the struct,
whichever is larger.

Unix Network Programming gets this wrong too; in figure 17.8 they do
ptr += sizeof(ifr->ifr_name) + max(sizeof(struct sockaddr), ifr->ifr_addr.sa_len);
2012-09-10 01:17:28 +00:00
david
7a9e7c502e Add a missing IFF_IPMP #ifdef guard. 2012-08-26 20:44:32 +00:00
david
ae2f887af1 Ignore IPMP interfaces in SIOCGLIFCONF intf_loop.
This is a (hopefully temporary) workaround for these virtual interfaces
on Solaris. They don't work for Nmap because they don't allow packet
sniffing, but you can use one of the physical interfaces they're
composed of.
2012-05-24 02:56:08 +00:00
david
4c5022b100 Fix the fd6 condition for SIOCGLIFFLAGS. 2012-05-13 01:20:56 +00:00
david
7cfee5944c Don't let Solaris IPMP devices appear as Ethernet. 2012-05-12 23:27:49 +00:00
david
cc0f2e1e54 Don't use LIFC_UNDER_IPMP if it's not defined. 2012-05-10 20:45:30 +00:00
david
49aafa4a38 Use LIFC_UNDER_IPMP when enumerating Solaris interfaces.
An IPMP interface is a special kind of interface made up of other
interfaces. The other interfaces are hidden by default unless this flag
is passed to ioctl(SIOCGLIFCONF). This allows me to scan over an IPMP
interface in a simple setup.
2012-05-07 21:41:57 +00:00
david
e819beaaae Make changes for IPv6-only interfaces on Solaris.
First try SIOCGLIFFLAGS with an IPv4 socket, then again with an IPv6 socket if that fails. Use that same socket for the other ioctl queries.

Avoid adding an IPv6 alias address that is the same as an IPv6 primary address. This is the same as an existing check in the IPv4 case.

Fix a loop exit boundary condition check.
2012-04-22 02:13:16 +00:00
david
7cd9a0f2d2 Make some #ifdef guards actually use the symbol they're guarding. 2012-04-20 23:57:43 +00:00
david
dbf79dafaa SIOCGLIFCONF-based implementation of intf_loop for Solaris 10.
The SIOCG*L*IFCONF interface is mostly like SIOCGIFCONF except that it
uses a sockaddr_storage-based structure that allows handling IPv6 interfaces.
2011-09-30 00:42:45 +00:00
david
ddb4829b2b Use SIOCGIFNETMASK6 to get IPv6 interface netmasks.
This is used when SIOCGIFNETMASK_IN6 isn't available.
2011-09-28 06:55:48 +00:00
david
8d964ad4e9 Consider IFF_LOOPBACK before IFF_BROADCAST.
The IPv6 loopback interface on AIX has both IFF_BROADCAST and IFF_LOOPBACK set. Checking IFF_BROADCAST first erroneously makes it appear as an Ethernet device.
2011-09-26 22:26:50 +00:00
david
032caee6ac o Made the interface gathering loop work on Linux when an interface
index is more than two digits in /proc/sys/if_inet6. Joe McEachern
  tracked down the problem and provided the fix.
2011-09-25 19:14:33 +00:00
david
70d2105b9f Use if_nametoindex instead of SIOCGIFINDEX.
The latter isn't available on OS X.
2011-09-17 06:40:41 +00:00
david
4f454a29d2 Add the intf_entry.intf_index member.
This is the operating system's interface index, as used by
if_indextoname and sockaddr_sin6.sin6_scope_id.
2011-08-30 23:55:07 +00:00
david
12f4742f0f Add intf_get_index to libdnet-stripped.
This function gets an interface from an internal interface number, such
as a sockaddr_in6.sin6_scope_id.
2011-08-30 17:01:50 +00:00
david
41dadaedb7 Use socklen_t as the type in arguments to getsockname and getsockopt to
avoid a "pointer targets differ in signedness" warning. Add a check for
socklen_t in configure.in; if it's not present, typedef it to int.
2009-08-07 00:11:57 +00:00
josh
9c374417eb Fixed a formatting mistake in libdnet-stripped/src/intf.c and updated
NMAP_MODIFICATIONS to reflect a bug fix.
2009-07-02 20:33:38 +00:00
josh
294b15ce81 Fixed two memory leaks and a case where an open file may not be closed. 2009-07-02 03:36:43 +00:00
kris
d23556c513 Upgrading shipped libdnet to 1.12 2008-09-19 06:12:25 +00:00
fyodor
5a9fea3b39 portability fixes, fixed UDP phantom port bug, fixed --version-intensity crash, changed mass_dns to give warning rather than error if cannot find dns servers 2006-06-10 21:23:27 +00:00
fyodor
bdf2caa2a4 vcproj for nmap 2005-08-08 05:48:49 +00:00
fyodor
555c986ac3 Whew -- big reorganization to allow ethernet sends of IP packets 2005-07-19 05:07:51 +00:00
fyodor
4d2beed7c3 libdnet stripped and integrated, ARP ping scan starting to work pretty well 2005-04-30 05:12:29 +00:00