X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/f7606784dba04b65edbd2f1582465aab2266ce7f..dcca20dd391f15c5c63d3b033fb7d7749bb1d8cd:/print-snmp.c diff --git a/print-snmp.c b/print-snmp.c index a729ea0a..7a033278 100644 --- a/print-snmp.c +++ b/print-snmp.c @@ -438,9 +438,9 @@ asn1_parse(netdissect_options *ndo, * +---+---+---+---+---+---+---+---+ * 7 6 5 4 3 2 1 0 */ - id = EXTRACT_8BITS(p) & ASN_ID_BITS; /* lower 5 bits, range 00-1f */ + id = EXTRACT_U_1(p) & ASN_ID_BITS; /* lower 5 bits, range 00-1f */ #ifdef notdef - form = (EXTRACT_8BITS(p) & 0xe0) >> 5; /* move upper 3 bits to lower 3 */ + form = (EXTRACT_U_1(p) & 0xe0) >> 5; /* move upper 3 bits to lower 3 */ class = form >> 1; /* bits 7&6 -> bits 1&0, range 0-3 */ form &= 0x1; /* bit 5 -> bit 0, range 0-1 */ #else @@ -465,7 +465,7 @@ asn1_parse(netdissect_options *ndo, */ id = 0; ND_TCHECK(*p); - while (*p & ASN_BIT8) { + while (EXTRACT_U_1(p) & ASN_BIT8) { if (len < 1) { ND_PRINT((ndo, "[Xtagfield?]")); return -1; @@ -481,7 +481,7 @@ asn1_parse(netdissect_options *ndo, return -1; } ND_TCHECK(*p); - elem->id = id = (id << 7) | *p; + elem->id = id = (id << 7) | EXTRACT_U_1(p); --len; ++hdr; ++p; @@ -501,8 +501,10 @@ asn1_parse(netdissect_options *ndo, return -1; } ND_TCHECK2(*p, noct); - for (; noct-- > 0; len--, hdr++) - elem->asnlen = (elem->asnlen << ASN_SHIFT8) | *p++; + for (; noct-- > 0; len--, hdr++) { + elem->asnlen = (elem->asnlen << ASN_SHIFT8) | EXTRACT_U_1(p); + p++; + } } if (len < elem->asnlen) { ND_PRINT((ndo, "[len%dasnlen)); @@ -544,7 +546,7 @@ asn1_parse(netdissect_options *ndo, if (*p & ASN_BIT8) /* negative */ data = -1; for (i = elem->asnlen; i-- > 0; p++) - data = (data << ASN_SHIFT8) | *p; + data = (data << ASN_SHIFT8) | EXTRACT_U_1(p); elem->data.integer = data; break; } @@ -581,7 +583,7 @@ asn1_parse(netdissect_options *ndo, elem->type = BE_UNS; data = 0; for (i = elem->asnlen; i-- > 0; p++) - data = (data << 8) + *p; + data = (data << 8) + EXTRACT_U_1(p); elem->data.uns = data; break; } @@ -591,7 +593,7 @@ asn1_parse(netdissect_options *ndo, elem->type = BE_UNS64; data64 = 0; for (i = elem->asnlen; i-- > 0; p++) - data64 = (data64 << 8) + *p; + data64 = (data64 << 8) + EXTRACT_U_1(p); elem->data.uns64 = data64; break; } @@ -680,7 +682,7 @@ asn1_print_octets(netdissect_options *ndo, struct be *elem) ND_TCHECK2(*p, asnlen); for (i = asnlen; i-- > 0; p++) - ND_PRINT((ndo, "_%.2x", *p)); + ND_PRINT((ndo, "_%.2x", EXTRACT_U_1(p))); return 0; trunc: @@ -710,7 +712,7 @@ asn1_print_string(netdissect_options *ndo, struct be *elem) ND_PRINT((ndo, "\"")); } else { for (i = asnlen; i-- > 0; p++) { - ND_PRINT((ndo, first ? "%.2x" : "_%.2x", *p)); + ND_PRINT((ndo, first ? "%.2x" : "_%.2x", EXTRACT_U_1(p))); first = 0; } } @@ -823,7 +825,7 @@ asn1_print(netdissect_options *ndo, p = (const u_char *)elem->data.raw; ND_TCHECK2(*p, asnlen); for (i = asnlen; i-- != 0; p++) { - ND_PRINT((ndo, (i == asnlen-1) ? "%u" : ".%u", *p)); + ND_PRINT((ndo, (i == asnlen-1) ? "%u" : ".%u", EXTRACT_U_1(p))); } break;