diff options
Diffstat (limited to 'unmaintained/dsniff/04_multiple_intf.patch')
-rw-r--r-- | unmaintained/dsniff/04_multiple_intf.patch | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/unmaintained/dsniff/04_multiple_intf.patch b/unmaintained/dsniff/04_multiple_intf.patch new file mode 100644 index 0000000000..24857c7cc1 --- /dev/null +++ b/unmaintained/dsniff/04_multiple_intf.patch @@ -0,0 +1,52 @@ +Author: Steve Kemp <skx@debian.org> +Description: Work with multiple interfaces, Closes #242369. +--- a/arp.c 2011-06-19 17:14:13.607999387 -0500 ++++ b/arp.c 2011-06-19 17:15:04.587999376 -0500 +@@ -39,7 +39,7 @@ + + #ifdef BSD + int +-arp_cache_lookup(in_addr_t ip, struct ether_addr *ether) ++arp_cache_lookup(in_addr_t ip, struct ether_addr *ether, const char* linf) + { + int mib[6]; + size_t len; +@@ -91,7 +91,7 @@ + #endif + + int +-arp_cache_lookup(in_addr_t ip, struct ether_addr *ether) ++arp_cache_lookup(in_addr_t ip, struct ether_addr *ether, const char* lif) + { + int sock; + struct arpreq ar; +@@ -99,7 +99,7 @@ + + memset((char *)&ar, 0, sizeof(ar)); + #ifdef __linux__ +- strncpy(ar.arp_dev, "eth0", sizeof(ar.arp_dev)); /* XXX - *sigh* */ ++ strncpy(ar.arp_dev, lif, strlen(lif)); + #endif + sin = (struct sockaddr_in *)&ar.arp_pa; + sin->sin_family = AF_INET; +--- a/arp.h 2011-06-19 17:14:13.003999387 -0500 ++++ b/arp.h 2011-06-19 17:15:04.587999376 -0500 +@@ -11,6 +11,6 @@ + #ifndef _ARP_H_ + #define _ARP_H_ + +-int arp_cache_lookup(in_addr_t ip, struct ether_addr *ether); ++int arp_cache_lookup(in_addr_t ip, struct ether_addr *ether, const char* linf); + + #endif /* _ARP_H_ */ +--- a/arpspoof.c 2011-06-19 17:14:13.311999387 -0500 ++++ b/arpspoof.c 2011-06-19 17:15:04.591999376 -0500 +@@ -113,7 +113,7 @@ + int i = 0; + + do { +- if (arp_cache_lookup(ip, mac) == 0) ++ if (arp_cache_lookup(ip, mac, intf) == 0) + return (1); + #ifdef __linux__ + /* XXX - force the kernel to arp. feh. */ |