X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/61c422a88caefe986c2bc0a7f2f3028f696fa5cd..195a4cfd9de46b47ac6794930e19e38ed263b05f:/smbutil.c diff --git a/smbutil.c b/smbutil.c index 9d4dac0d..253721db 100644 --- a/smbutil.c +++ b/smbutil.c @@ -103,7 +103,7 @@ interpret_long_date(const u_char *p) time_t ret; /* this gives us seconds since jan 1st 1601 (approx) */ - d = (EXTRACT_LE_U_4(p + 4) * 256.0 + p[3]) * (1.0e-7 * (1 << 24)); + d = (EXTRACT_LE_U_4(p + 4) * 256.0 + EXTRACT_U_1(p + 3)) * (1.0e-7 * (1 << 24)); /* now adjust by 369 years to make the secs since 1970 */ d -= 369.0 * 365.25 * 24 * 60 * 60; @@ -150,7 +150,7 @@ name_interpret(netdissect_options *ndo, *out = 0; return(0); } - *out = ((in[0] - 'A') << 4) + (in[1] - 'A'); + *out = ((EXTRACT_U_1(in) - 'A') << 4) + (EXTRACT_U_1(in + 1) - 'A'); in += 2; out++; } @@ -178,7 +178,7 @@ name_ptr(netdissect_options *ndo, return(NULL); /* name goes past the end of the buffer */ ND_TCHECK_1(p); - c = *p; + c = EXTRACT_U_1(p); /* XXX - this should use the same code that the DNS dissector does */ if ((c & 0xC0) == 0xC0) { @@ -231,7 +231,7 @@ name_len(netdissect_options *ndo, if (s >= maxbuf) return(-1); /* name goes past the end of the buffer */ ND_TCHECK_1(s); - c = *s; + c = EXTRACT_U_1(s); if ((c & 0xC0) == 0xC0) return(2); while (*s) { @@ -282,7 +282,7 @@ smb_print_data(netdissect_options *ndo, const unsigned char *buf, int len) return; ND_PRINT((ndo, "[%03X] ", i)); for (i = 0; i < len; /*nothing*/) { - ND_TCHECK(buf[i]); + ND_TCHECK_1(buf + i); ND_PRINT((ndo, "%02X ", EXTRACT_U_1(buf + i) & 0xff)); i++; if (i%8 == 0) @@ -354,7 +354,7 @@ unistr(netdissect_options *ndo, * Skip padding that puts the string on an even boundary. */ if (((s - startbuf) % 2) != 0) { - ND_TCHECK(s[0]); + ND_TCHECK_1(s); s++; } } @@ -366,7 +366,7 @@ unistr(netdissect_options *ndo, sp = s; if (!use_unicode) { for (;;) { - ND_TCHECK(sp[0]); + ND_TCHECK_1(sp); *len += 1; if (EXTRACT_U_1(sp) == 0) break; @@ -391,11 +391,11 @@ unistr(netdissect_options *ndo, } if (!use_unicode) { while (strsize != 0) { - ND_TCHECK(s[0]); + ND_TCHECK_1(s); if (l >= MAX_UNISTR_SIZE) break; if (ND_ISPRINT(EXTRACT_U_1(s))) - buf[l] = s[0]; + buf[l] = EXTRACT_U_1(s); else { if (EXTRACT_U_1(s) == 0) break; @@ -410,9 +410,9 @@ unistr(netdissect_options *ndo, ND_TCHECK_2(s); if (l >= MAX_UNISTR_SIZE) break; - if (s[1] == 0 && ND_ISPRINT(EXTRACT_U_1(s))) { + if (EXTRACT_U_1(s + 1) == 0 && ND_ISPRINT(EXTRACT_U_1(s))) { /* It's a printable ASCII character */ - buf[l] = s[0]; + buf[l] = EXTRACT_U_1(s); } else { /* It's a non-ASCII character or a non-printable ASCII character */ if (EXTRACT_U_1(s) == 0 && EXTRACT_U_1(s + 1) == 0) @@ -444,7 +444,7 @@ smb_fdata1(netdissect_options *ndo, while (*fmt && buf