[Pkg-clamav-commits] [SCM] Debian repository for ClamAV branch, debian/unstable, updated. debian/0.95+dfsg-1-6156-g094ec9b

Török Edvin edwin at clamav.net
Sun Apr 4 01:25:50 UTC 2010


The following commit has been merged in the debian/unstable branch:
commit 6ea339aeab6eafd10d98bcdecb368db5aedac1a0
Author: Török Edvin <edwin at clamav.net>
Date:   Wed Mar 24 15:27:15 2010 +0200

    Fix bswap.

diff --git a/libclamav/bytecode.c b/libclamav/bytecode.c
index 719b942..a569f11 100644
--- a/libclamav/bytecode.c
+++ b/libclamav/bytecode.c
@@ -1731,13 +1731,9 @@ static int cli_bytecode_prepare_interpreter(struct cli_bc *bc)
 		    /* TODO */
 		    break;
 		case OP_BC_BSWAP16:
-		    /*TODO */
-		    break;
 		case OP_BC_BSWAP32:
-		    /*TODO */
-		    break;
 		case OP_BC_BSWAP64:
-		    /*TODO */
+		    MAP(inst->u.unaryop);
 		    break;
 		case OP_BC_PTRDIFF32:
 		    /*TODO */
diff --git a/libclamav/c++/bytecode2llvm.cpp b/libclamav/c++/bytecode2llvm.cpp
index 16e19f9..2fba384 100644
--- a/libclamav/c++/bytecode2llvm.cpp
+++ b/libclamav/c++/bytecode2llvm.cpp
@@ -1235,6 +1235,7 @@ public:
 			case OP_BC_MEMSET:
 			{
 			    Value *Dst = convertOperand(func, inst, inst->u.three[0]);
+			    Dst = Builder.CreatePointerCast(Dst, PointerType::getUnqual(Type::getInt8Ty(Context)));
 			    Value *Val = convertOperand(func, Type::getInt8Ty(Context), inst->u.three[1]);
 			    Value *Len = convertOperand(func, Type::getInt32Ty(Context), inst->u.three[2]);
 			    CallInst *c = Builder.CreateCall4(CF->FMemset, Dst, Val, Len,
@@ -1246,7 +1247,9 @@ public:
 			case OP_BC_MEMCPY:
 			{
 			    Value *Dst = convertOperand(func, inst, inst->u.three[0]);
+			    Dst = Builder.CreatePointerCast(Dst, PointerType::getUnqual(Type::getInt8Ty(Context)));
 			    Value *Src = convertOperand(func, inst, inst->u.three[1]);
+			    Src = Builder.CreatePointerCast(Src, PointerType::getUnqual(Type::getInt8Ty(Context)));
 			    Value *Len = convertOperand(func, Type::getInt32Ty(Context), inst->u.three[2]);
 			    CallInst *c = Builder.CreateCall4(CF->FMemcpy, Dst, Src, Len,
 								ConstantInt::get(Type::getInt32Ty(Context), 1));
@@ -1257,7 +1260,9 @@ public:
 			case OP_BC_MEMMOVE:
 			{
 			    Value *Dst = convertOperand(func, inst, inst->u.three[0]);
+			    Dst = Builder.CreatePointerCast(Dst, PointerType::getUnqual(Type::getInt8Ty(Context)));
 			    Value *Src = convertOperand(func, inst, inst->u.three[1]);
+			    Src = Builder.CreatePointerCast(Dst, PointerType::getUnqual(Type::getInt8Ty(Context)));
 			    Value *Len = convertOperand(func, Type::getInt32Ty(Context), inst->u.three[2]);
 			    CallInst *c = Builder.CreateCall4(CF->FMemmove, Dst, Src, Len,
 								ConstantInt::get(Type::getInt32Ty(Context), 1));
@@ -1268,7 +1273,9 @@ public:
 			case OP_BC_MEMCMP:
 			{
 			    Value *Dst = convertOperand(func, inst, inst->u.three[0]);
+			    Dst = Builder.CreatePointerCast(Dst, PointerType::getUnqual(Type::getInt8Ty(Context)));
 			    Value *Src = convertOperand(func, inst, inst->u.three[1]);
+			    Src = Builder.CreatePointerCast(Dst, PointerType::getUnqual(Type::getInt8Ty(Context)));
 			    Value *Len = convertOperand(func, EE->getTargetData()->getIntPtrType(Context), inst->u.three[2]);
 			    CallInst *c = Builder.CreateCall3(CF->FRealmemcmp, Dst, Src, Len);
 			    c->setTailCall(true);
diff --git a/unit_tests/check_bytecode.c b/unit_tests/check_bytecode.c
index 1fe5aa6..c350fc7 100644
--- a/unit_tests/check_bytecode.c
+++ b/unit_tests/check_bytecode.c
@@ -210,6 +210,15 @@ START_TEST (test_pdf)
 }
 END_TEST
 
+START_TEST (test_bswap)
+{
+    cl_init(CL_INIT_DEFAULT);
+    if (have_clamjit)
+	runtest("input/bswap.cbc", 0xbeef, 0, 0, NULL, NULL, NULL, NULL);
+//    runtest("input/bswap.cbc", 0xbeef, 0, 1, NULL, NULL, NULL, NULL);
+}
+END_TEST
+
 Suite *test_bytecode_suite(void)
 {
     Suite *s = suite_create("bytecode");
@@ -225,5 +234,6 @@ Suite *test_bytecode_suite(void)
     tcase_add_test(tc_cli_arith, test_inf);
     tcase_add_test(tc_cli_arith, test_matchwithread);
     tcase_add_test(tc_cli_arith, test_pdf);
+    tcase_add_test(tc_cli_arith, test_bswap);
     return s;
 }
diff --git a/unit_tests/input/bswap.cbc b/unit_tests/input/bswap.cbc
new file mode 100644
index 0000000..bc10aeb
--- /dev/null
+++ b/unit_tests/input/bswap.cbc
@@ -0,0 +1,22 @@
+ClamBCafhalbajjkd|afefdfggifnf```````|bhacflfafmfbfcfmb`cnbac`cmbacdcmbgfffdfbcafbfafbc``b`aaap`clamcoincidencejb:132
+
+Tedebodebaddadb`bebgdaaaaaaaa`aabb`ab`aaabb`bb`baae`badbadb`bb`baae`badahb`bb`bdb`aah
+E``
+G`ac`@`bod at AaAbAcAdAeAfAgAhAiAjAkAlAmAnAo`bad at Aa`
+A`b`bLbebb`bab`bab`bab`aabgdabcd`bgdabcd`````b`a`aa`````b`a`aa```b`b`aa`````b`b`aa```aa`b`b```aa`````b`b`aa```ah`aa`b`b`b`b`Fbjbak
+Bbcdaedbbhdad at dbcdagdbbhdaf@d``ibadAb`B`ad``hbaf at aB`adb`aajgbadaaaklb``bbajacTaaakaaab
+Bb`aacnbajTbaab
+Bb`aanbbacanaaaoeab`aanC``ab``bbEamjnmd`Taaaoacaj
+Bb`bbaagbaeaabbalb``bbbaaabTaabbaadae
+Bb`babobbaaTbaae
+Bb`bbeabbabbeaaabfaeab`bbeaG``a`b`cd``bbEbmjnmd`Taabfaafaj
+Baabhalbb`bbiaoabhaHbadcfehgdHhgfedcbad``fbbiaagaabkalb``bbbiaaaTaabkaagah
+Bb`baaobbiaTbaah
+Bb`bbnabbaabnaaaboaeab`bbnaHhgfedcbad``bbEdmjnmd`Taaboaaiaj
+BahbabgbafaabbbfaahbabBhgab`bbcboabbbEemjnmdDonnkdTcab`bbcb
+Bb`bbdbbb`bdbTcab`bbdbE
+Sifnfdg`befnfdgbgig`gofifnfdghbibSkgScfhfafbg`bbfegffkeacfcme`bmc`bkgS`clbaclbbclbcclbdclbeclbfclbgclbhclbiclbac`clbacaclbacbclbaccclbacdclbacecSmgkcScfhfafbg`bbfegffbckeacfcmekc
+egifnfdgccbcoedg`bhgkcSmfefmfcgefdghbfbbfegffbclb`b`clb`bcgifjgefofffhbbfegffbcibibkcSifff`bhbcflfifoebgefafdfifnfdgacfchbfbbfegffib`babmc`b`chgac`c`cibSbgefdgegbgnf`b`chgdfefafdfackc
+hg`bmc`bcflfifoebgefafdfifnfdgccbchbfbbfegffibkcSifff`bhbhg`babmc`b`chg`ccc`cbc`cac`c`cibSbgefdgegbgnf`b`chgdfefafdfbckcShg`bmc`boeoebfegiflfdgifnfoebfcgggaf`gccbchbhgibkc
+ifff`bhbhg`babmc`b`chg`c`c`cac`cbc`cccibSbgefdgegbgnf`b`chgdfefafdfcckcScflfifoeggbgifdgefifnfdgccbchbfbbfegffbclb`b`chgacbcccdcecfcgchcibkcSifff`bhbcflfifoebgefafdfifnfdgccbchbfbbfegffbcib`babmc`b`chgacbcccdcecfcgchcib
+bgefdgegbgnf`b`chgdfefafdfdckcSifff`bhbbfegffbcke`cme`babmc`b`chggchcibSbgefdgegbgnf`b`chgdfefafdfeckcSbgefdgegbgnf`b`chgbfefefffkcSmgSS
\ No newline at end of file

-- 
Debian repository for ClamAV



More information about the Pkg-clamav-commits mailing list