From: Guy Harris Date: Fri, 17 Jan 2014 00:48:46 +0000 (-0800) Subject: Use EXTRACT_nBITS even when just testing against zero. X-Git-Tag: tcpdump-4.6.0~268 X-Git-Url: https://git.tcpdump.org/tcpdump/commitdiff_plain/8f6bca398ba7d2ed1ae084ff1643e6c7c8de9196 Use EXTRACT_nBITS even when just testing against zero. *All* references to possibly-unaligned multi-byte fields have to be done in an unaligned-safe fashion. --- diff --git a/print-bootp.c b/print-bootp.c index 58fd02dd..1594a398 100644 --- a/print-bootp.c +++ b/print-bootp.c @@ -92,9 +92,9 @@ bootp_print(register const u_char *cp, u_int length) /* Only print interesting fields */ if (bp->bp_hops) printf(", hops %d", bp->bp_hops); - if (bp->bp_xid) + if (EXTRACT_32BITS(&bp->bp_xid)) printf(", xid 0x%x", EXTRACT_32BITS(&bp->bp_xid)); - if (bp->bp_secs) + if (EXTRACT_16BITS(&bp->bp_secs)) printf(", secs %d", EXTRACT_16BITS(&bp->bp_secs)); printf(", Flags [%s]", @@ -104,22 +104,22 @@ bootp_print(register const u_char *cp, u_int length) /* Client's ip address */ TCHECK(bp->bp_ciaddr); - if (bp->bp_ciaddr.s_addr) + if (EXTRACT_32BITS(&bp->bp_ciaddr.s_addr)) printf("\n\t Client-IP %s", ipaddr_string(&bp->bp_ciaddr)); /* 'your' ip address (bootp client) */ TCHECK(bp->bp_yiaddr); - if (bp->bp_yiaddr.s_addr) + if (EXTRACT_32BITS(&bp->bp_yiaddr.s_addr)) printf("\n\t Your-IP %s", ipaddr_string(&bp->bp_yiaddr)); /* Server's ip address */ TCHECK(bp->bp_siaddr); - if (bp->bp_siaddr.s_addr) + if (EXTRACT_32BITS(&bp->bp_siaddr.s_addr)) printf("\n\t Server-IP %s", ipaddr_string(&bp->bp_siaddr)); /* Gateway's ip address */ TCHECK(bp->bp_giaddr); - if (bp->bp_giaddr.s_addr) + if (EXTRACT_32BITS(&bp->bp_giaddr.s_addr)) printf("\n\t Gateway-IP %s", ipaddr_string(&bp->bp_giaddr)); /* Client's Ethernet address */