[Pkg-clamav-commits] [SCM] Debian repository for ClamAV branch, debian/unstable, updated. debian/0.95+dfsg-1-6156-g094ec9b
aCaB
acab at clamav.net
Sun Apr 4 01:16:09 UTC 2010
The following commit has been merged in the debian/unstable branch:
commit 510c3097dba166e891c3ef84c108410d483c327f
Author: aCaB <acab at clamav.net>
Date: Fri Jan 22 11:50:54 2010 +0100
bb#1778
diff --git a/ChangeLog b/ChangeLog
index 3e84066..d865865 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Fri Jan 22 11:49:07 CET 2010 (acab)
+-----------------------------------
+ * libclamav: fix shifts >= width (bb#1778)
+
Thu Jan 21 23:01:34 CET 2010 (tk)
---------------------------------
* sigtool: create digitally signed .info files
diff --git a/libclamav/disasm.c b/libclamav/disasm.c
index 57ed698..5ac062b 100644
--- a/libclamav/disasm.c
+++ b/libclamav/disasm.c
@@ -1545,8 +1545,10 @@ static const uint8_t *disasm_x86(const uint8_t *command, unsigned int len, struc
GETBYTE(b);
shiftme+=b<<(i*8);
}
- shiftme<<=((8-mod)*8);
- s->args[reversed].arg.marg.disp=shiftme>>((8-mod)*8);
+ if(mod) {
+ shiftme<<=((8-mod)*8);
+ s->args[reversed].arg.marg.disp=shiftme>>((8-mod)*8);
+ } else s->args[reversed].arg.marg.disp=0;
} else {
if (mod==0 && rm==6) {
s->args[reversed].arg.marg.r1=REG_INVALID;
diff --git a/libclamav/others.h b/libclamav/others.h
index 3ac787c..2a66360 100644
--- a/libclamav/others.h
+++ b/libclamav/others.h
@@ -380,8 +380,10 @@ static inline void cli_writeint32(char *offset, uint32_t value)
#endif
/* used by: spin, yc (C) aCaB */
-#define CLI_ROL(a,b) a = ( a << (b % (sizeof(a)<<3) )) | (a >> ( (sizeof(a)<<3) - (b % (sizeof(a)<<3 )) ) )
-#define CLI_ROR(a,b) a = ( a >> (b % (sizeof(a)<<3) )) | (a << ( (sizeof(a)<<3) - (b % (sizeof(a)<<3 )) ) )
+#define __SHIFTBITS(a) (sizeof(a)<<3)
+#define __SHIFTMASK(a) (__SHIFTBITS(a)-1)
+#define CLI_ROL(a,b) a = ( a << (b & __SHIFTMASK(a)) ) | ( a >> ((__SHIFTBITS(a) - b) & __SHIFTMASK(a)) )
+#define CLI_ROR(a,b) a = ( a >> (b & __SHIFTMASK(a)) ) | ( a << ((__SHIFTBITS(a) - b) & __SHIFTMASK(a))
/* Implementation independent sign-extended signed right shift */
#ifdef HAVE_SAR
--
Debian repository for ClamAV
More information about the Pkg-clamav-commits
mailing list