Fix type checking.

0.96
Török Edvin 16 years ago
parent 616616060d
commit 479fa7135c
  1. 4
      libclamav/bytecode.c
  2. 5
      libclamav/c++/bytecode2llvm.cpp
  3. 4
      unit_tests/input/apicalls.cbc

@ -502,7 +502,7 @@ static int parseTypes(struct cli_bc *bc, unsigned char *buffer)
break;
case 2:
case 3:
ty->kind = (t == 2) ? DStructType : DPackedStructType;
ty->kind = (t == 2) ? DPackedStructType : DStructType;
ty->size = ty->align = 0;/* TODO:calculate size/align of structs */
parseType(bc, ty, buffer, &offset, len, &ok);
if (!ok) {
@ -554,7 +554,7 @@ static int parseTypes(struct cli_bc *bc, unsigned char *buffer)
static int types_equal(const struct cli_bc *bc, uint16_t *apity2ty, uint16_t tid, uint16_t apitid)
{
unsigned i;
const struct cli_bc_type *ty = &bc->types[tid - 64];
const struct cli_bc_type *ty = &bc->types[tid - 65];
const struct cli_bc_type *apity = &cli_apicall_types[apitid];
/* If we've already verified type equality, return.
* Since we need to check equality of recursive types, we assume types are

@ -324,6 +324,11 @@ public:
++I;
}
for (unsigned i=func->numArgs;i<func->numValues;i++) {
if (!func->types[i]) {
//instructions without return value, like store
Values[i] = 0;
continue;
}
Values[i] = Builder.CreateAlloca(mapType(func->types[i]));
}
numLocals = func->numLocals;

@ -1,5 +1,5 @@
ClamBCaa`|`````|`agafp`clamcoincidencejb
Tedebfdacb`bb`bb`b
ClamBCaa`|`````|`afafp`clamcoincidencejb
Tedacb`bb`bb`b
Eabaaabbed|b`acflfifoebfcfaf`gifoedgefcgdgac``
A`b`bLacb`baab`bFadaa
Bb`b``bbabHonnkm``odHm``oonnkdaaaadab`b`Hhgfedcbadb`babnaaaDm``odDmjnmdTcab`babE

Loading…
Cancel
Save