diff options
author | Guy Harris <guy@alum.mit.edu> | 2020-01-19 19:55:38 -0800 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2020-01-19 19:55:38 -0800 |
commit | 306c2a0384af923a73bf234f3c8bc186ceff0b58 (patch) | |
tree | 0598390b879d6e9a76ff3b906989a920222d2654 /print-dhcp6.c | |
parent | 2cd0a90c24ccf01ad9a034d7d5a6a651c82a4785 (diff) | |
download | tcpdump-306c2a0384af923a73bf234f3c8bc186ceff0b58.tar.gz |
More bounds checking when fetching addresses and converting to strings.
Replace more calls to ipaddr_string()/ip6addr_string() with calls to
GET_IPADDR_STRING()/GET_IP6ADDR_STRING() macros performing bounds
checking.
Add similar bounds-checking inline functions and macros to wrap
linkaddr_string(), etheraddr_string(), and isonsap_string() and convert
calls to them to use the macros as well.
Shuffle the inline functions in addrtoname.h around a bit, so that the
inline functions, external declarations, and macros are all in the same
order.
Diffstat (limited to 'print-dhcp6.c')
-rw-r--r-- | print-dhcp6.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/print-dhcp6.c b/print-dhcp6.c index 590b9c50..0b40af81 100644 --- a/print-dhcp6.c +++ b/print-dhcp6.c @@ -371,7 +371,7 @@ dhcp6opt_print(netdissect_options *ndo, break; } tp = (const u_char *)(dh6o + 1); - ND_PRINT(" %s", ip6addr_string(ndo, tp)); + ND_PRINT(" %s", GET_IP6ADDR_STRING(tp)); ND_PRINT(" pltime:%u vltime:%u", GET_BE_U_4(tp + 16), GET_BE_U_4(tp + 20)); @@ -561,7 +561,7 @@ dhcp6opt_print(netdissect_options *ndo, } tp = (const u_char *)(dh6o + 1); for (i = 0; i < optlen; i += 16) - ND_PRINT(" %s", ip6addr_string(ndo, tp + i)); + ND_PRINT(" %s", GET_IP6ADDR_STRING(tp + i)); ND_PRINT(")"); break; case DH6OPT_SIP_SERVER_D: @@ -618,7 +618,7 @@ dhcp6opt_print(netdissect_options *ndo, break; } tp = (const u_char *)(dh6o + 1); - ND_PRINT(" %s/%u", ip6addr_string(ndo, tp + 9), + ND_PRINT(" %s/%u", GET_IP6ADDR_STRING(tp + 9), GET_U_1(tp + 8)); ND_PRINT(" pltime:%u vltime:%u", GET_BE_U_4(tp), @@ -670,7 +670,7 @@ dhcp6opt_print(netdissect_options *ndo, ND_PRINT(" type_%u", dh6_lq_query_type); break; } - ND_PRINT(" %s", ip6addr_string(ndo, tp + 1)); + ND_PRINT(" %s", GET_IP6ADDR_STRING(tp + 1)); if (optlen > 17) { /* there are query-options */ dhcp6opt_print(ndo, tp + 17, tp + optlen); @@ -691,7 +691,7 @@ dhcp6opt_print(netdissect_options *ndo, break; } tp = (const u_char *)(dh6o + 1); - ND_PRINT(" %s ", ip6addr_string(ndo, tp)); + ND_PRINT(" %s ", GET_IP6ADDR_STRING(tp)); /* * Print hex dump first 10 characters. */ @@ -720,7 +720,7 @@ dhcp6opt_print(netdissect_options *ndo, ND_PRINT(" ?"); break; } - ND_PRINT(" %s", ip6addr_string(ndo, tp)); + ND_PRINT(" %s", GET_IP6ADDR_STRING(tp)); break; case DH6OPT_NTP_SUBOPTION_SRV_FQDN: ND_PRINT(" "); @@ -828,9 +828,9 @@ dhcp6_print(netdissect_options *ndo, } else { /* relay messages */ ND_TCHECK_16(dh6relay->dh6relay_peeraddr); - ND_PRINT("linkaddr=%s", ip6addr_string(ndo, dh6relay->dh6relay_linkaddr)); + ND_PRINT("linkaddr=%s", GET_IP6ADDR_STRING(dh6relay->dh6relay_linkaddr)); - ND_PRINT(" peeraddr=%s", ip6addr_string(ndo, dh6relay->dh6relay_peeraddr)); + ND_PRINT(" peeraddr=%s", GET_IP6ADDR_STRING(dh6relay->dh6relay_peeraddr)); dhcp6opt_print(ndo, (const u_char *)(dh6relay + 1), ep); } |