X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/3824a6c0417a551961d1a1bf4f94f10eff736afc..39d15607cad1b4b463794c1a67873f6182dc52f7:/print-vrrp.c diff --git a/print-vrrp.c b/print-vrrp.c index a93caa27..f0414d9f 100644 --- a/print-vrrp.c +++ b/print-vrrp.c @@ -23,7 +23,6 @@ * FOR A PARTICULAR PURPOSE. */ - #ifdef HAVE_CONFIG_H #include "config.h" #endif @@ -37,10 +36,6 @@ #include "extract.h" #include "addrtoname.h" -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-vrrp.c,v 1.8 2003-11-15 00:39:44 guy Exp $"; -#endif /* * RFC 2338: * 0 1 2 3 @@ -110,9 +105,15 @@ vrrp_print(register const u_char *bp, register u_int len, int ttl) int i; char c; - if (TTEST2(bp[0], len) && in_cksum((const u_short*)bp, len, 0)) - printf(", (bad vrrp cksum %x)", - EXTRACT_16BITS(&bp[6])); + if (TTEST2(bp[0], len)) { + struct cksum_vec vec[1]; + + vec[0].ptr = bp; + vec[0].len = len; + if (in_cksum(vec, 1)) + printf(", (bad vrrp cksum %x)", + EXTRACT_16BITS(&bp[6])); + } printf(", addrs"); if (naddrs > 1) printf("(%d)", naddrs); @@ -128,7 +129,10 @@ vrrp_print(register const u_char *bp, register u_int len, int ttl) if (auth_type == VRRP_AUTH_SIMPLE) { /* simple text password */ TCHECK(bp[7]); printf(" auth \""); - fn_printn(bp, 8, NULL); + if (fn_printn(bp, 8, snapend)) { + printf("\""); + goto trunc; + } printf("\""); } }