checked in 3_8 and HEAD branch - tx, /hannes
On Fri, Jan 07, 2005 at 07:45:32PM +0100, [EMAIL PROTECTED] wrote: | | Hi, | There is a bug in egp_print fonction from print-egp.c | tcpdump don't print correct egp packet smaller than 32bytes, because their | size was inferior to egp struct size. | Here you'll find the patch. | I have posted it on sourceforge. But i don't know how sf patch submitting | system works. | So I send it to this mailing list. | I hope it's the appropriate place... | Does the patch will be integrated to the next version of tcpdump? | | Nicolas FERRERO | | | diff -urN tcpdump-3.8.3/interface.h tcpdump/interface.h | --- tcpdump-3.8.3/interface.h 2004-03-17 20:47:48.000000000 +0100 | +++ tcpdump/interface.h 2004-12-23 03:48:12.796318448 +0100 | @@ -216,7 +216,7 @@ | extern void default_print(const u_char *, u_int); | extern void default_print_unaligned(const u_char *, u_int); | extern void dvmrp_print(const u_char *, u_int); | -extern void egp_print(const u_char *); | +extern void egp_print(const u_char *, u_int); | extern u_int enc_if_print(const struct pcap_pkthdr *, const u_char *); | extern u_int pflog_if_print(const struct pcap_pkthdr *, const u_char *); | extern u_int arcnet_if_print(const struct pcap_pkthdr *, const u_char *); | diff -urN tcpdump-3.8.3/print-egp.c tcpdump/print-egp.c | --- tcpdump-3.8.3/print-egp.c 2003-11-16 09:51:18.000000000 +0100 | +++ tcpdump/print-egp.c 2004-12-23 04:51:21.991273256 +0100 | @@ -214,7 +214,7 @@ | } | | void | -egp_print(register const u_int8_t *bp) | +egp_print(register const u_int8_t *bp, register u_int length) | { | register const struct egp_packet *egp; | register int status; | @@ -222,7 +222,7 @@ | register int type; | | egp = (struct egp_packet *)bp; | - if (!TTEST(*egp)) { | + if (!TTEST2(*egp, length)) { | printf("[|egp]"); | return; | } | diff -urN tcpdump-3.8.3/print-ip.c tcpdump/print-ip.c | --- tcpdump-3.8.3/print-ip.c 2004-03-24 10:01:39.000000000 +0100 | +++ tcpdump/print-ip.c 2004-12-23 03:47:18.108632240 +0100 | @@ -551,7 +551,7 @@ | break; | | case IPPROTO_EGP: | - egp_print(cp); | + egp_print(cp, len); | break; | | case IPPROTO_OSPF: | | | | | | - | This is the tcpdump-workers list. | Visit https://lists.sandelman.ca/ to unsubscribe. | - This is the tcpdump-workers list. Visit https://lists.sandelman.ca/ to unsubscribe.