From e8b523758959c1854689d71c7a4686c631e5501c Mon Sep 17 00:00:00 2001 From: Guy Harris Date: Sun, 21 Feb 2010 00:27:00 -0800 Subject: Don't directly fetch multi-byte integers from packets. Use the EXTRACT_ macros to extract multi-byte integral values from packets, rather than just dereferencing pointers into the packet; there is no guarantee that the packet data will be aligned on the right boundary, and there is no guarantee that, if they're not, a direct access will work correctly. --- print-token.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'print-token.c') diff --git a/print-token.c b/print-token.c index 04defa99..6a1b95da 100644 --- a/print-token.c +++ b/print-token.c @@ -39,6 +39,7 @@ static const char rcsid[] _U_ = #include #include "interface.h" +#include "extract.h" #include "addrtoname.h" #include "ethertype.h" @@ -135,10 +136,10 @@ token_print(const u_char *p, u_int length, u_int caplen) printf(" [%d:%d]", RING_NUMBER(trp, seg), BRIDGE_NUMBER(trp, seg)); } else { - printf("rt = %x", ntohs(trp->token_rcf)); + printf("rt = %x", EXTRACT_16BITS(&trp->token_rcf)); for (seg = 0; seg < SEGMENT_COUNT(trp); seg++) - printf(":%x", ntohs(trp->token_rseg[seg])); + printf(":%x", EXTRACT_16BITS(&trp->token_rseg[seg])); } printf(" (%s) ", largest_frame[LARGEST_FRAME(trp)]); } else { -- cgit v1.2.1