diff --git a/libclamav/c++/bytecode2llvm.cpp b/libclamav/c++/bytecode2llvm.cpp index 2d90a79c4..e5b0cc220 100644 --- a/libclamav/c++/bytecode2llvm.cpp +++ b/libclamav/c++/bytecode2llvm.cpp @@ -532,9 +532,9 @@ public: globals.reserve(bc->num_globals); BitVector FakeGVs; - FakeGVs.resize(bc->num_globals+1); + FakeGVs.resize(bc->num_globals); globals.push_back(0); - for (unsigned i=0;inum_globals;i++) { + for (unsigned i=1;inum_globals;i++) { const Type *Ty = mapType(bc->globaltys[i]); // TODO: validate number of components against type_components @@ -543,7 +543,7 @@ public: if (isa(Ty)) { unsigned g = bc->globals[i][1]; if (GVoffsetMap.count(g)) { - FakeGVs.set(i+1); + FakeGVs.set(i); globals.push_back(0); continue; } @@ -611,7 +611,7 @@ public: Argument *Ctx = F->arg_begin(); struct cli_bc_ctx *N = 0; for (unsigned i=0;inum_globals;i++) { - if (!FakeGVs[i+1]) + if (!FakeGVs[i]) continue; unsigned g = bc->globals[i][1]; unsigned offset = GVoffsetMap[g]; diff --git a/unit_tests/input/apicalls.cbc b/unit_tests/input/apicalls.cbc index 5bb31b0d8..999cb2163 100644 --- a/unit_tests/input/apicalls.cbc +++ b/unit_tests/input/apicalls.cbc @@ -2,7 +2,7 @@ ClamBCaa`|``````|`agafp`clamcoincidencejb Tedaaa`aacb`bb`bb`b Eabaaabbfd|afdgefcgdgac`` -G`` +G`aa`@` A`b`bLacb`b`aa`b`b`Fadaa Bb`b`abbabHonnkm``odHm``oonnkdaaaaeab`b`Hhgfedcbadb`baboaaaDm``odDmjnmdTcab`babE Aab`bLabah`aa`b`b`Facaa diff --git a/unit_tests/input/apicalls2.cbc b/unit_tests/input/apicalls2.cbc index 6d795b849..ffa26de98 100644 --- a/unit_tests/input/apicalls2.cbc +++ b/unit_tests/input/apicalls2.cbc @@ -2,7 +2,7 @@ ClamBCaa`|``````|`akafp`clamcoincidencejb Tedcaabjdebjdaaa`aacb`bbjdb`baacb`bb`bb`bebed Eababaabhd|afdgefcgdg`c``abbid|afdgefcgdgac`` -G`` +G`aa`@` A`b`bLahbedabfd```b`b`aa`b`b`aa`b`b`Fajac Bbfdaadb`@d@d``fb`aab`bacabbabHonnkm``odHm``oonnkdaaadeab`bacHhgfedcbadTaaadaaab Bb`baeabbaa`Honnkmjnmdaaafeab`baeHhgfedcbadb`bagoaafDm``odDmjnmdTcab`bag diff --git a/unit_tests/input/arith.cbc b/unit_tests/input/arith.cbc index d1c491431..a9f0f5fc3 100644 --- a/unit_tests/input/arith.cbc +++ b/unit_tests/input/arith.cbc @@ -2,7 +2,7 @@ ClamBCaa`|``````|`afbbep`clamcoincidencejb Tedaaa` E`` -G`` +G`aa`@` A`b`bLbabb`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`Fbbbaa Bb`b``b`abb`baa`b`anb`bab`b`agb`bac`b`b`ab`bad`b`ajb`bae`b`aib`baf`b`amb`bag`b`afb`bah`b`adb`bai`b`acb`baj`b`ahb`bak`b`baab`bal`b`alb`bam`b`bbab`ban`b`aob`bao`b`aeb`bb`a`b`akb`bbaaa`aa`b`bbbaa`baaabb`bbcaa`bbaacb`bbdaa`bcaadb`bbeaa`bdaaeb`bbfaa`beaafb`bbgaa`bfaagb`bbhaa`bgaahb`bbiaa`bhaaib`bbjaa`biaajb`bbkaa`bjaakb`bblaa`bkaalb`bbmaa`blaamb`bbnaa`bmaanb`bboaa`bnaaob`bb`ba`boab`aTcab`bb`bE A`b`bLb`cah`aa`b`b`ah`aa`b`b`ah`aa`b`b`ah`aa`b`b`b`a`aa`b`b`b`a`aa`b`b`b`a`aa`b`b`b`a`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`d`aa`b`b`b`d`aa`b`b`b`d`aa`b`b`b`d`aa`b`b`Fbaebab diff --git a/unit_tests/input/div0.cbc b/unit_tests/input/div0.cbc index fb948a7e4..f416be4ff 100644 --- a/unit_tests/input/div0.cbc +++ b/unit_tests/input/div0.cbc @@ -2,7 +2,7 @@ ClamBCaa`|``````|`afabp`clamcoincidencejb Tedaaa` E`` -G`` +G`aa`@` A`b`bLaab`b`Fabaa Bb`b``baab@dTcab`b`E Aab`bLaab`b`b`b`Fabaa diff --git a/unit_tests/input/lsig.cbc b/unit_tests/input/lsig.cbc index 24a609dd5..9637599c0 100644 --- a/unit_tests/input/lsig.cbc +++ b/unit_tests/input/lsig.cbc @@ -2,7 +2,7 @@ ClamBCaa`|``c``a```|`bjaabp`clamcoincidencejb Trojan.Foo.{A,B};Target:1;(((0|1|2)=42,2)|(3=10));EP+0:aabb;ffff;aaccee;f00d;dead Tedebieebheebgeebfeebeeebdeebbeebaeebadebcdaaa`aacb`bbadb`bdb`db`bcajbadbcebadbcebadbcebadbcebadbcecaab`bdagahdaeahdajahdabbaddabahdakah Eafaaafb`e|amcgefdgfgifbgegcgnfafmfef`` -Gd```hbhabieBdeBbgBofBjfBafBnfBnbBfdBofBof@`bheBad@`bheBbd@`bge@Ab@Ac`b`aAa`b`aC``a`bfeBedB`eBkbB`cBjcBafBafBbfBbf@`beeBffBffBffBff@`beeBffB`cB`cBdf@`bdeBafBafBcfBcfBefBef@`beeBdfBefBafBdf@`bbe@Ag@@AhAa@AiAc@AjAb@AkAd`bad@Ab`bad@Ac`bad@Ag`bad@Ah`bad@Ai`bad@Aj`bad@Ak`bcdAdD```h`bcdAcD```h`bcdAbD```h`bcdAaD```h`bcd@D```h` +Gd```hbia`@`bieBdeBbgBofBjfBafBnfBnbBfdBofBof@`bheBad@`bheBbd@`bge@Ab@Ac`b`aAa`b`aC``a`bfeBedB`eBkbB`cBjcBafBafBbfBbf@`beeBffBffBffBff@`beeBffB`cB`cBdf@`bdeBafBafBcfBcfBefBef@`beeBdfBefBafBdf@`bbe@Ag@@AhAa@AiAc@AjAb@AkAd`bad@Ab`bad@Ac`bad@Ag`bad@Ah`bad@Ai`bad@Aj`bad@Ak`bcdAdD```h`bcdAcD```h`bcdAbD```h`bcdAaD```h`bcd@D```h` A`b`bLaeb`b`aa`aa`bad`b`b`Fahac Bb`b`gbBda`aaaagab`b`AadTaaaaaaab Baaabeab`b`AbdbadacoaabAm`An`b`badabbafac@dTcab`b@d diff --git a/unit_tests/input/retmagic.cbc b/unit_tests/input/retmagic.cbc index d0fb84372..41b5c616d 100644 --- a/unit_tests/input/retmagic.cbc +++ b/unit_tests/input/retmagic.cbc @@ -2,6 +2,6 @@ ClamBCaa`|``````|`afaap`clamcoincidencejb Tedaaa` E`` -G`` +G`aa`@` A`b`bL`Faaaa BTcab`bHm``odcbadE