From ec51ff71c6bb8d2c66e1bb7c649e75ac983e1c89 Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Sun, 6 Apr 2008 23:02:54 +0000 Subject: [PATCH] 1. stop doing unaligned memory accesses - htons() on a pointer to some arbitrary point... 2. use int not long - long will be 64bit on 64bit platforms, but 32bit almost everywhere (yes in theory it may not - but in practice, it won't - long though will vary). SVN revision: 34211 --- legacy/efreet/src/lib/efreet_mime.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/legacy/efreet/src/lib/efreet_mime.c b/legacy/efreet/src/lib/efreet_mime.c index eedd2daee7..fb58e400b4 100644 --- a/legacy/efreet/src/lib/efreet_mime.c +++ b/legacy/efreet/src/lib/efreet_mime.c @@ -921,6 +921,8 @@ efreet_mime_shared_mimeinfo_magic_parse(char *data, int size) } else { + short tshort; + if (!mime) continue; if (!entry) { @@ -952,7 +954,9 @@ efreet_mime_shared_mimeinfo_magic_parse(char *data, int size) case '=': ptr++; - entry->value_len = ntohs(*((short*)(ptr))); + + memcpy(&tshort, ptr, sizeof(short)); + entry->value_len = ntohs(tshort); ptr += 2; entry->value = NEW(1, entry->value_len); @@ -1002,12 +1006,12 @@ efreet_mime_shared_mimeinfo_magic_parse(char *data, int size) } else if (entry->word_size == 4) { - ((long*)entry->value)[j] = - ntohl(((long*)entry->value)[j]); + ((int*)entry->value)[j] = + ntohl(((int*)entry->value)[j]); if (entry->mask) - ((long*)entry->mask)[j] = - ntohl(((long*)entry->mask)[j]); + ((int*)entry->mask)[j] = + ntohl(((int*)entry->mask)[j]); } } }