openbsd-ports/security/despoof/patches/patch-despoof_c
mjc 6e9709b13b make program use LIBNET_ERRBUF_SIZE instead of having
libnet write errors to un-malloc()ed char *

bump PKGNAME

ok naddy@
2005-03-15 01:37:05 +00:00

63 lines
2.2 KiB
Plaintext

$OpenBSD: patch-despoof_c,v 1.3 2005/03/15 01:37:06 mjc Exp $
--- despoof.c.orig Tue Jul 25 07:51:24 2000
+++ despoof.c Mon Mar 14 10:51:17 2005
@@ -34,7 +34,7 @@ struct bpf_program pcapfilter;
struct in_addr net, mask;
pcap_t *pd;
char pcap_err[PCAP_ERRBUF_SIZE];
-u_char *ebuf;
+u_char ebuf[LIBNET_ERRBUF_SIZE];
char *dev;
struct libnet_link_int *l;
int num_of_questions, link_offset, verbose, target_answers, unexpected, inquery;
@@ -150,7 +150,7 @@ void grab_packet(u_char *data1, struct p
if (targetaddr == ip->ip_src.s_addr)
{
- if (((inquery == 1) && (icmp->icmp_type == ICMP_ECHOREPLY)) || ((inquery == 2) && (icmp->icmp_type == ICMP_TIMESTAMPREPLY)) || ((inquery == 3) && (sport == ntohs(tcphdr->th_dport))))
+ if (((inquery == 1) && (icmp->icmp_type == ICMP_ECHOREPLY)) || ((inquery == 2) && (icmp->icmp_type == ICMP_TSTAMPREPLY)) || ((inquery == 3) && (sport == ntohs(tcphdr->th_dport))))
{
if (ttlval == ip->ip_ttl)
{
@@ -285,7 +285,7 @@ void usage(char *prog)
fprintf(stderr," -a set ACK flag on TCP packets\n");
fprintf(stderr," -h this help screen\n");
fprintf(stderr," -v verbose\n");
- fprintf(stderr," -d device to grab local IP or sniff from, default is eth0\n");
+ fprintf(stderr," -d device to grab local IP or sniff from\n");
fprintf(stderr," -l local port to bind to, default is 80\n");
fprintf(stderr," -p target port to send to, default is 80\n");
fprintf(stderr," -i inquery packet type to send/receive, types include the following:\n");
@@ -306,12 +306,12 @@ int main(int argc, char **argv)
extern int optind;
extern int optopt;
extern int opterr;
- char ch;
+ int ch;
int spoof = 0, setdev = 0, timeout = 10, ttl = 0;
u_long dst_ip = 0;
pid_t pid;
- dev = "eth0"; /* default */
+ dev = NULL;
verbose = 0;
prog = argv[0];
sport = 80;
@@ -408,6 +408,16 @@ int main(int argc, char **argv)
fprintf(stderr, "=== and spoof your source IP address at the same time.\n");
usage(prog);
exit(-1);
+ }
+
+ if (dev == NULL)
+ {
+ dev = pcap_lookupdev(pcap_err);
+ if (dev == NULL)
+ {
+ fprintf(stderr, "=== No devices found.\n");
+ exit(-1);
+ }
}
if(!spoof)