X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/f085c93f59fb2332e09f3da20eef5fb2bbd04431..0f328b4aa16b0b47f05a85c440ce1d07719e3cac:/print-snmp.c diff --git a/print-snmp.c b/print-snmp.c index b9490f28..1e098dbd 100644 --- a/print-snmp.c +++ b/print-snmp.c @@ -429,7 +429,7 @@ asn1_parse(netdissect_options *ndo, ND_PRINT((ndo, "[nothing to parse]")); return -1; } - ND_TCHECK(*p); + ND_TCHECK_1(p); /* * it would be nice to use a bit field, but you can't depend on them. @@ -444,8 +444,8 @@ asn1_parse(netdissect_options *ndo, class = form >> 1; /* bits 7&6 -> bits 1&0, range 0-3 */ form &= 0x1; /* bit 5 -> bit 0, range 0-1 */ #else - form = (u_char)(*p & ASN_FORM_BITS) >> ASN_FORM_SHIFT; - class = (u_char)(*p & ASN_CLASS_BITS) >> ASN_CLASS_SHIFT; + form = (u_char)(EXTRACT_U_1(p) & ASN_FORM_BITS) >> ASN_FORM_SHIFT; + class = (u_char)(EXTRACT_U_1(p) & ASN_CLASS_BITS) >> ASN_CLASS_SHIFT; #endif elem->form = form; elem->class = class; @@ -464,23 +464,23 @@ asn1_parse(netdissect_options *ndo, * that won't fit in 32 bits. */ id = 0; - ND_TCHECK(*p); - while (*p & ASN_BIT8) { + ND_TCHECK_1(p); + while (EXTRACT_U_1(p) & ASN_BIT8) { if (len < 1) { ND_PRINT((ndo, "[Xtagfield?]")); return -1; } - id = (id << 7) | (*p & ~ASN_BIT8); + id = (id << 7) | (EXTRACT_U_1(p) & ~ASN_BIT8); len--; hdr++; p++; - ND_TCHECK(*p); + ND_TCHECK_1(p); } if (len < 1) { ND_PRINT((ndo, "[Xtagfield?]")); return -1; } - ND_TCHECK(*p); + ND_TCHECK_1(p); elem->id = id = (id << 7) | EXTRACT_U_1(p); --len; ++hdr; @@ -490,8 +490,8 @@ asn1_parse(netdissect_options *ndo, ND_PRINT((ndo, "[no asnlen]")); return -1; } - ND_TCHECK(*p); - elem->asnlen = *p; + ND_TCHECK_1(p); + elem->asnlen = EXTRACT_U_1(p); p++; len--; hdr++; if (elem->asnlen & ASN_BIT8) { uint32_t noct = elem->asnlen % ASN_BIT8; @@ -543,7 +543,7 @@ asn1_parse(netdissect_options *ndo, ND_PRINT((ndo, "[asnlen=0]")); return -1; } - if (*p & ASN_BIT8) /* negative */ + if (EXTRACT_U_1(p) & ASN_BIT8) /* negative */ data = -1; for (i = elem->asnlen; i-- > 0; p++) data = (data << ASN_SHIFT8) | EXTRACT_U_1(p); @@ -701,7 +701,7 @@ asn1_print_string(netdissect_options *ndo, struct be *elem) p = elem->data.str; ND_TCHECK2(*p, asnlen); for (i = asnlen; printable && i-- > 0; p++) - printable = ND_ISPRINT(*p); + printable = ND_ISPRINT(EXTRACT_U_1(p)); p = elem->data.str; if (printable) { ND_PRINT((ndo, "\"")); @@ -770,9 +770,9 @@ asn1_print(netdissect_options *ndo, } for (; i-- > 0; p++) { - ND_TCHECK(*p); - o = (o << ASN_SHIFT7) + (*p & ~ASN_BIT8); - if (*p & ASN_LONGLEN) + ND_TCHECK_1(p); + o = (o << ASN_SHIFT7) + (EXTRACT_U_1(p) & ~ASN_BIT8); + if (EXTRACT_U_1(p) & ASN_LONGLEN) continue; /* @@ -922,9 +922,9 @@ smi_decode_oid(netdissect_options *ndo, unsigned int firstval; for (*oidlen = 0; i-- > 0; p++) { - ND_TCHECK(*p); - o = (o << ASN_SHIFT7) + (*p & ~ASN_BIT8); - if (*p & ASN_LONGLEN) + ND_TCHECK_1(p); + o = (o << ASN_SHIFT7) + (EXTRACT_U_1(p) & ~ASN_BIT8); + if (EXTRACT_U_1(p) & ASN_LONGLEN) continue; /* @@ -1798,7 +1798,7 @@ v3msg_print(netdissect_options *ndo, ND_PRINT((ndo, "[msgFlags size %d]", elem.asnlen)); return; } - flags = elem.data.str[0]; + flags = EXTRACT_U_1(elem.data.str); if (flags != 0x00 && flags != 0x01 && flags != 0x03 && flags != 0x04 && flags != 0x05 && flags != 0x07) { ND_PRINT((ndo, "[msgFlags=0x%02X]", flags));