From ef5323efe6c03aaa50eac0949bf95999b91fe05b Mon Sep 17 00:00:00 2001 From: Francois-Xavier Le Bail Date: Wed, 29 Dec 2021 14:38:08 +0100 Subject: Update the ND_LCHECK*() macros to ND_ICHECK*() macros ICHECK like Invalid-Check. Reminder: If the checked expression is true an error message is printed and a 'goto invalid' is executed. This change adds the parameter 'operator'. Before this change, '<' comparison was hard coded. We can do now: ND_ICHECK_U(length, <, HEADER_LEN); ND_ICHECK_U(length, ==, 24); ND_ICHECK_U(length, !=, 8); ND_ICHECK_ZU(length, <, sizeof(struct my_struct)); ND_ICHECKMSG_U("message length", msg_tlen, <, 4); ... (Any comparison operator) Remark: The change of names from ND_LCHECK*() to ND_ICHECK*() is because something else than a length(L) can be checked. Moreover: Place the 'message' parameter at the beginning of ND_ICHECKMSG_U() and ND_ICHECKMSG_ZU() paramaters lists. --- print-gre.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) (limited to 'print-gre.c') diff --git a/print-gre.c b/print-gre.c index a28edf5c..136fb69d 100644 --- a/print-gre.c +++ b/print-gre.c @@ -83,7 +83,7 @@ gre_print(netdissect_options *ndo, const u_char *bp, u_int length) ndo->ndo_protocol = "gre"; nd_print_protocol_caps(ndo); - ND_LCHECK_U(length, 2); + ND_ICHECK_U(length, <, 2); vers = GET_BE_U_2(bp) & GRE_VERS_MASK; ND_PRINT("v%u",vers); @@ -110,7 +110,7 @@ gre_print_0(netdissect_options *ndo, const u_char *bp, u_int length) u_int len = length; uint16_t flags, prot; - ND_LCHECK_U(len, 2); + ND_ICHECK_U(len, <, 2); flags = GET_BE_U_2(bp); if (ndo->ndo_vflag) ND_PRINT(", Flags [%s]", @@ -119,7 +119,7 @@ gre_print_0(netdissect_options *ndo, const u_char *bp, u_int length) len -= 2; bp += 2; - ND_LCHECK_U(len, 2); + ND_ICHECK_U(len, <, 2); prot = GET_BE_U_2(bp); len -= 2; bp += 2; @@ -127,28 +127,28 @@ gre_print_0(netdissect_options *ndo, const u_char *bp, u_int length) if ((flags & GRE_CP) | (flags & GRE_RP)) { uint16_t sum; - ND_LCHECK_U(len, 2); + ND_ICHECK_U(len, <, 2); sum = GET_BE_U_2(bp); if (ndo->ndo_vflag) ND_PRINT(", sum 0x%x", sum); bp += 2; len -= 2; - ND_LCHECK_U(len, 2); + ND_ICHECK_U(len, <, 2); ND_PRINT(", off 0x%x", GET_BE_U_2(bp)); bp += 2; len -= 2; } if (flags & GRE_KP) { - ND_LCHECK_U(len, 4); + ND_ICHECK_U(len, <, 4); ND_PRINT(", key=0x%x", GET_BE_U_4(bp)); bp += 4; len -= 4; } if (flags & GRE_SP) { - ND_LCHECK_U(len, 4); + ND_ICHECK_U(len, <, 4); ND_PRINT(", seq %u", GET_BE_U_4(bp)); bp += 4; len -= 4; @@ -160,7 +160,7 @@ gre_print_0(netdissect_options *ndo, const u_char *bp, u_int length) uint8_t sreoff; uint8_t srelen; - ND_LCHECK_U(len, 4); + ND_ICHECK_U(len, <, 4); af = GET_BE_U_2(bp); sreoff = GET_U_1(bp + 2); srelen = GET_U_1(bp + 3); @@ -173,7 +173,7 @@ gre_print_0(netdissect_options *ndo, const u_char *bp, u_int length) if (!gre_sre_print(ndo, af, sreoff, srelen, bp, len)) goto invalid; - ND_LCHECK_U(len, srelen); + ND_ICHECK_U(len, <, srelen); bp += srelen; len -= srelen; } @@ -227,7 +227,7 @@ gre_print_1(netdissect_options *ndo, const u_char *bp, u_int length) u_int len = length; uint16_t flags, prot; - ND_LCHECK_U(len, 2); + ND_ICHECK_U(len, <, 2); flags = GET_BE_U_2(bp); len -= 2; bp += 2; @@ -236,7 +236,7 @@ gre_print_1(netdissect_options *ndo, const u_char *bp, u_int length) ND_PRINT(", Flags [%s]", bittok2str(gre_flag_values,"none",flags)); - ND_LCHECK_U(len, 2); + ND_ICHECK_U(len, <, 2); prot = GET_BE_U_2(bp); len -= 2; bp += 2; @@ -245,7 +245,7 @@ gre_print_1(netdissect_options *ndo, const u_char *bp, u_int length) if (flags & GRE_KP) { uint32_t k; - ND_LCHECK_U(len, 4); + ND_ICHECK_U(len, <, 4); k = GET_BE_U_4(bp); ND_PRINT(", call %u", k & 0xffff); len -= 4; @@ -253,14 +253,14 @@ gre_print_1(netdissect_options *ndo, const u_char *bp, u_int length) } if (flags & GRE_SP) { - ND_LCHECK_U(len, 4); + ND_ICHECK_U(len, <, 4); ND_PRINT(", seq %u", GET_BE_U_4(bp)); bp += 4; len -= 4; } if (flags & GRE_AP) { - ND_LCHECK_U(len, 4); + ND_ICHECK_U(len, <, 4); ND_PRINT(", ack %u", GET_BE_U_4(bp)); bp += 4; len -= 4; @@ -342,7 +342,7 @@ gre_sre_ip_print(netdissect_options *ndo, uint8_t sreoff, uint8_t srelen, } while (srelen != 0) { - ND_LCHECK_U(len, 4); + ND_ICHECK_U(len, <, 4); ND_TCHECK_LEN(bp, sizeof(nd_ipv4)); addrtostr(bp, buf, sizeof(buf)); @@ -379,7 +379,7 @@ gre_sre_asn_print(netdissect_options *ndo, uint8_t sreoff, uint8_t srelen, } while (srelen != 0) { - ND_LCHECK_U(len, 2); + ND_ICHECK_U(len, <, 2); ND_PRINT(" %s%x", ((bp - up) == sreoff) ? "*" : "", GET_BE_U_2(bp)); -- cgit v1.2.1