X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/3db38df8ed9dcd8191438bb69e2ddbda6d90ed61..a8abce5c5e2dce2ba6dbccd5d3829da104b80f9c:/print-isakmp.c diff --git a/print-isakmp.c b/print-isakmp.c index b13aff11..8c3c0806 100644 --- a/print-isakmp.c +++ b/print-isakmp.c @@ -741,9 +741,11 @@ static const char *etypestr[] = { static int iszero(const u_char *p, size_t l) { - while (l--) { - if (*p++) + while (l != 0) { + if (*p) return 0; + p++; + l--; } return 1; } @@ -780,14 +782,18 @@ cookie_record(const cookie_t *in, const u_char *bp2) switch (IP_V(ip)) { case 4: cookiecache[ninitiator].version = 4; - UNALIGNED_MEMCPY(&cookiecache[ninitiator].iaddr.in4, &ip->ip_src, sizeof(nd_ipv4)); - UNALIGNED_MEMCPY(&cookiecache[ninitiator].raddr.in4, &ip->ip_dst, sizeof(nd_ipv4)); + UNALIGNED_MEMCPY(&cookiecache[ninitiator].iaddr.in4, + ip->ip_src, sizeof(nd_ipv4)); + UNALIGNED_MEMCPY(&cookiecache[ninitiator].raddr.in4, + ip->ip_dst, sizeof(nd_ipv4)); break; case 6: ip6 = (const struct ip6_hdr *)bp2; cookiecache[ninitiator].version = 6; - UNALIGNED_MEMCPY(&cookiecache[ninitiator].iaddr.in6, &ip6->ip6_src, sizeof(nd_ipv6)); - UNALIGNED_MEMCPY(&cookiecache[ninitiator].raddr.in6, &ip6->ip6_dst, sizeof(nd_ipv6)); + UNALIGNED_MEMCPY(&cookiecache[ninitiator].iaddr.in6, + ip6->ip6_src, sizeof(nd_ipv6)); + UNALIGNED_MEMCPY(&cookiecache[ninitiator].raddr.in6, + ip6->ip6_dst, sizeof(nd_ipv6)); break; default: return; @@ -810,10 +816,10 @@ cookie_sidecheck(int i, const u_char *bp2, int initiator) if (cookiecache[i].version != 4) return 0; if (initiator) { - if (UNALIGNED_MEMCMP(&ip->ip_src, &cookiecache[i].iaddr.in4, sizeof(nd_ipv4)) == 0) + if (UNALIGNED_MEMCMP(ip->ip_src, &cookiecache[i].iaddr.in4, sizeof(nd_ipv4)) == 0) return 1; } else { - if (UNALIGNED_MEMCMP(&ip->ip_src, &cookiecache[i].raddr.in4, sizeof(nd_ipv4)) == 0) + if (UNALIGNED_MEMCMP(ip->ip_src, &cookiecache[i].raddr.in4, sizeof(nd_ipv4)) == 0) return 1; } break; @@ -822,10 +828,10 @@ cookie_sidecheck(int i, const u_char *bp2, int initiator) return 0; ip6 = (const struct ip6_hdr *)bp2; if (initiator) { - if (UNALIGNED_MEMCMP(&ip6->ip6_src, &cookiecache[i].iaddr.in6, sizeof(nd_ipv6)) == 0) + if (UNALIGNED_MEMCMP(ip6->ip6_src, &cookiecache[i].iaddr.in6, sizeof(nd_ipv6)) == 0) return 1; } else { - if (UNALIGNED_MEMCMP(&ip6->ip6_src, &cookiecache[i].raddr.in6, sizeof(nd_ipv6)) == 0) + if (UNALIGNED_MEMCMP(ip6->ip6_src, &cookiecache[i].raddr.in6, sizeof(nd_ipv6)) == 0) return 1; } break; @@ -1392,7 +1398,7 @@ ikev1_id_print(netdissect_options *ndo, u_char tpay _U_, u_int i; ND_PRINT(" len=%u ", len); for (i = 0; i < len; i++) - safeputchar(ndo, EXTRACT_U_1(data + i)); + fn_print_char(ndo, EXTRACT_U_1(data + i)); len = 0; break; } @@ -2644,7 +2650,7 @@ ikev2_e_print(netdissect_options *ndo, int depth) { const u_char *dat; - volatile u_int dlen; + u_int dlen; #ifdef HAVE_LIBCRYPTO uint8_t np; #endif @@ -2746,7 +2752,7 @@ ike_sub0_print(netdissect_options *ndo, return cp; trunc: - ND_PRINT(" [|isakmp]"); + nd_print_trunc(ndo); return NULL; } @@ -2914,7 +2920,7 @@ ikev2_sub0_print(netdissect_options *ndo, const struct isakmp *base, return cp; trunc: - ND_PRINT(" [|isakmp]"); + nd_print_trunc(ndo); return NULL; } @@ -3026,6 +3032,7 @@ isakmp_print(netdissect_options *ndo, const u_char *ep; u_int major, minor; + ndo->ndo_protocol = "isakmp"; #ifdef HAVE_LIBCRYPTO /* initialize SAs */ if (ndo->ndo_sa_list_head == NULL) { @@ -3038,7 +3045,7 @@ isakmp_print(netdissect_options *ndo, ep = ndo->ndo_snapend; if ((const struct isakmp *)ep < p + 1) { - ND_PRINT("[|isakmp]"); + nd_print_trunc(ndo); return; } @@ -3081,6 +3088,7 @@ isakmp_rfc3948_print(netdissect_options *ndo, const u_char *bp, u_int length, const u_char *bp2) { + ndo->ndo_protocol = "isakmp_rfc3948"; ND_TCHECK_1(bp); if(length == 1 && EXTRACT_U_1(bp)==0xff) { ND_PRINT("isakmp-nat-keep-alive"); @@ -3117,18 +3125,11 @@ isakmp_rfc3948_print(netdissect_options *ndo, length -= advance + padlen; nh = enh & 0xff; - ip_print_inner(ndo, bp, length, nh, bp2); + ip_inner_print(ndo, bp, length, nh, bp2); return; } trunc: - ND_PRINT("[|isakmp]"); + nd_print_trunc(ndo); return; } - -/* - * Local Variables: - * c-style: whitesmith - * c-basic-offset: 8 - * End: - */