Hello all, I received the patch below (touched up so it applies to a recent version of clamav). Could you please consider it for inclusion? It appears to do the right thing for this, namely, making i386 assumptions only happen on i386.
Thanks, -- -------------------------------------------------------------------------- | Stephen Gran | new, adj.: Different color from | | [EMAIL PROTECTED] | previous model. | | http://www.lobefin.net/~steve | | --------------------------------------------------------------------------
--- libclamav/upx.c.old 2005-06-23 16:03:12.000000000 -0400
+++ libclamav/upx.c 2005-08-04 08:33:17.000000000 -0400
@@ -193,7 +193,7 @@
static int doubleebx(char *src, int32_t *myebx, int *scur, int ssize)
{
int32_t oldebx = *myebx;
-#if WORDS_BIGENDIAN == 1
+#ifndef __i386__
char *pt;
int32_t shift, i = 0;
#endif
@@ -202,7 +202,7 @@
if ( !(oldebx & 0x7fffffff)) {
if (*scur<0 || ssize-*scur<4)
return -1;
-#if WORDS_BIGENDIAN == 0
+#ifndef __i386__
oldebx = *(int*)(src+*scur);
#else
oldebx = 0;
--- libclamav/others.c.old 2005-07-24 19:30:32.000000000 -0400
+++ libclamav/others.c 2005-08-04 08:32:16.000000000 -0400
@@ -573,8 +573,8 @@
{
int32_t ret;
-#if WORDS_BIGENDIAN == 0
- ret = *(int32_t *) buff;
+#if WORDS_BIGENDIAN == 0 && defined(__GNUC__)
+ ret = ((struct { int32_t x; } __attribute__((packed)) *) buff)->x;
#else
ret = buff[0] & 0xff;
ret |= (buff[1] & 0xff) << 8;
signature.asc
Description: Digital signature
_______________________________________________ http://lurker.clamav.net/list/clamav-devel.html
