aboutsummaryrefslogtreecommitdiffstats
path: root/unmaintained/dsniff/04_multiple_intf.patch
diff options
context:
space:
mode:
Diffstat (limited to 'unmaintained/dsniff/04_multiple_intf.patch')
-rw-r--r--unmaintained/dsniff/04_multiple_intf.patch52
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. */