diff options
Diffstat (limited to 'contrib/tcpdump/print-ah.c')
-rw-r--r-- | contrib/tcpdump/print-ah.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/contrib/tcpdump/print-ah.c b/contrib/tcpdump/print-ah.c index 0badf48233bf..bec6f88f67d0 100644 --- a/contrib/tcpdump/print-ah.c +++ b/contrib/tcpdump/print-ah.c @@ -21,40 +21,40 @@ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ -#define NETDISSECT_REWORKED +/* \summary: IPSEC Authentication Header printer */ + #ifdef HAVE_CONFIG_H #include "config.h" #endif -#include <tcpdump-stdinc.h> +#include <netdissect-stdinc.h> #include "ah.h" -#include "interface.h" +#include "netdissect.h" #include "extract.h" int ah_print(netdissect_options *ndo, register const u_char *bp) { register const struct ah *ah; - register const u_char *ep; int sumlen; - uint32_t spi; ah = (const struct ah *)bp; - ep = ndo->ndo_snapend; /* 'ep' points to the end of available data. */ ND_TCHECK(*ah); sumlen = ah->ah_len << 2; - spi = EXTRACT_32BITS(&ah->ah_spi); - ND_PRINT((ndo, "AH(spi=0x%08x", spi)); + ND_PRINT((ndo, "AH(spi=0x%08x", EXTRACT_32BITS(&ah->ah_spi))); if (ndo->ndo_vflag) ND_PRINT((ndo, ",sumlen=%d", sumlen)); + ND_TCHECK_32BITS(ah + 1); ND_PRINT((ndo, ",seq=0x%x", EXTRACT_32BITS(ah + 1))); - if (bp + sizeof(struct ah) + sumlen > ep) - ND_PRINT((ndo, "[truncated]")); + if (!ND_TTEST2(*bp, sizeof(struct ah) + sumlen)) { + ND_PRINT((ndo, "[truncated]):")); + return -1; + } ND_PRINT((ndo, "): ")); return sizeof(struct ah) + sumlen; |