X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/3824a6c0417a551961d1a1bf4f94f10eff736afc..e66df58c88b4f953198826f444b7dbe1c8acdf6b:/print-vrrp.c diff --git a/print-vrrp.c b/print-vrrp.c index a93caa27..8b733d22 100644 --- a/print-vrrp.c +++ b/print-vrrp.c @@ -23,6 +23,10 @@ * FOR A PARTICULAR PURPOSE. */ +#ifndef lint +static const char rcsid[] _U_ = + "@(#) $Header: /tcpdump/master/tcpdump/print-vrrp.c,v 1.10 2005-05-06 07:56:54 guy Exp $"; +#endif #ifdef HAVE_CONFIG_H #include "config.h" @@ -37,10 +41,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 +110,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 +134,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("\""); } }