aboutsummaryrefslogtreecommitdiffstats
path: root/wiretap
diff options
context:
space:
mode:
authorJeff Morriss <jeff.morriss@ulticom.com>2008-07-09 20:16:24 +0000
committerJeff Morriss <jeff.morriss@ulticom.com>2008-07-09 20:16:24 +0000
commit9bd70e0d1d060b6f0b1760c207301705ed48f13b (patch)
tree6150b289b7cf169e6c49d2a2453652cd1b9384c1 /wiretap
parent34e3e26d071c66c18895ce30ac5c195c3e957a37 (diff)
Don't cast a char[] into a guint32/64: the array may not be aligned correctly. This fixes a warning on Solaris/SPARC.
svn path=/trunk/; revision=25692
Diffstat (limited to 'wiretap')
-rw-r--r--wiretap/pcapng.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/wiretap/pcapng.c b/wiretap/pcapng.c
index d1b187c714..6541218753 100644
--- a/wiretap/pcapng.c
+++ b/wiretap/pcapng.c
@@ -555,7 +555,10 @@ pcapng_read_if_descr_block(FILE_T fh, pcapng_block_header_t *bh, pcapng_t *pn,
break;
case(8): /* if_speed */
if(oh.option_length == 8) {
- wblock->data.if_descr.if_speed = *((guint64 *)option_content);
+ /* Don't cast a char[] into a guint64--the
+ * char[] may not be aligned correctly.
+ */
+ memcpy(&wblock->data.if_descr.if_speed, option_content, sizeof(guint64));
if(pn->byte_swapped)
wblock->data.if_descr.if_speed = BSWAP64(wblock->data.if_descr.if_speed);
pcapng_debug1("pcapng_read_if_descr_block: if_speed %" G_GINT64_MODIFIER "u (bps)", wblock->data.if_descr.if_speed);
@@ -708,7 +711,10 @@ pcapng_read_packet_block(FILE_T fh, pcapng_block_header_t *bh, pcapng_t *pn, wta
break;
case(2): /* pack_flags / epb_flags */
if(oh.option_length == 4) {
- wblock->data.packet.pack_flags = *((guint32 *)option_content);
+ /* Don't cast a char[] into a guint32--the
+ * char[] may not be aligned correctly.
+ */
+ memcpy(&wblock->data.packet.pack_flags, option_content, sizeof(guint32));
if(pn->byte_swapped)
wblock->data.packet.pack_flags = BSWAP32(wblock->data.packet.pack_flags);
pcapng_debug1("pcapng_read_if_descr_block: pack_flags %u (ignored)", wblock->data.packet.pack_flags);