From: Guy Harris Date: Mon, 14 May 2018 08:52:54 +0000 (-0700) Subject: Make the hex-dumping routines for addresses take a uint8_t * argument. X-Git-Tag: tcpdump-4.99-bp~1191 X-Git-Url: https://git.tcpdump.org/tcpdump/commitdiff_plain/db3f9f277f4283318a760791dac2bed9507b4793 Make the hex-dumping routines for addresses take a uint8_t * argument. Hopefully, that will convince Coverity that the result of dereferencing those pointers will have a value between 0x00 and 0xff, and therefore that shifting that result right by 4 bits will yield a value between 0x0 and 0xf, and therefore that this result can safely be used as an index into the 16-element hex[] array. I guess Coverity wants us to realize that there really *are* C implementations out there with non-8-bit char and unsigned char values, even though getting tcpdump to work on them will probably be a highly entertaining exercise (not to mention that the only one I know of that's actually being *used* are the Unisys Clearpath Dorado series, and they're one's complement, which is yet *another* place where the port could be entertaining...). --- diff --git a/addrtoname.c b/addrtoname.c index 808ea57b..011d3d71 100644 --- a/addrtoname.c +++ b/addrtoname.c @@ -563,7 +563,7 @@ lookup_protoid(netdissect_options *ndo, const u_char *pi) } const char * -etheraddr_string(netdissect_options *ndo, const u_char *ep) +etheraddr_string(netdissect_options *ndo, const uint8_t *ep) { int i; char *cp; @@ -610,7 +610,7 @@ etheraddr_string(netdissect_options *ndo, const u_char *ep) } const char * -le64addr_string(netdissect_options *ndo, const u_char *ep) +le64addr_string(netdissect_options *ndo, const uint8_t *ep) { const unsigned int len = 8; u_int i; @@ -641,7 +641,7 @@ le64addr_string(netdissect_options *ndo, const u_char *ep) } const char * -linkaddr_string(netdissect_options *ndo, const u_char *ep, +linkaddr_string(netdissect_options *ndo, const uint8_t *ep, const unsigned int type, const unsigned int len) { u_int i; @@ -678,7 +678,7 @@ linkaddr_string(netdissect_options *ndo, const u_char *ep, #define ISONSAP_MAX_LENGTH 20 const char * -isonsap_string(netdissect_options *ndo, const u_char *nsap, +isonsap_string(netdissect_options *ndo, const uint8_t *nsap, u_int nsap_length) { u_int nsap_idx; diff --git a/addrtoname.h b/addrtoname.h index a127b4e8..97b72000 100644 --- a/addrtoname.h +++ b/addrtoname.h @@ -39,12 +39,12 @@ enum { #define BUFSIZE 128 -extern const char *linkaddr_string(netdissect_options *, const u_char *, const unsigned int, const unsigned int); -extern const char *etheraddr_string(netdissect_options *, const u_char *); -extern const char *le64addr_string(netdissect_options *, const u_char *); +extern const char *linkaddr_string(netdissect_options *, const uint8_t *, const unsigned int, const unsigned int); +extern const char *etheraddr_string(netdissect_options *, const uint8_t *); +extern const char *le64addr_string(netdissect_options *, const uint8_t *); extern const char *tcpport_string(netdissect_options *, u_short); extern const char *udpport_string(netdissect_options *, u_short); -extern const char *isonsap_string(netdissect_options *, const u_char *, u_int); +extern const char *isonsap_string(netdissect_options *, const uint8_t *, u_int); extern const char *dnaddr_string(netdissect_options *, u_short); extern const char *ipxsap_string(netdissect_options *, u_short); extern const char *ipaddr_string(netdissect_options *, const u_char *);