[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:15:39 UTC 2010


The following commit has been merged in the debian/unstable branch:
commit b31f2e7a2db558c64380f7e4d8a4cb6d88b45c2c
Author: Török Edvin <edwin at clamav.net>
Date:   Tue Jan 19 19:58:15 2010 +0200

    Fix loading of apicall8 (disasm).
    
    must alloc room for numop+2,
    must validate only first element of an array type (it doesn't have more!),
    regenerate _api_decl.c using ifacegen.

diff --git a/libclamav/bytecode.c b/libclamav/bytecode.c
index c61c739..602bfc0 100644
--- a/libclamav/bytecode.c
+++ b/libclamav/bytecode.c
@@ -656,13 +656,18 @@ static int types_equal(const struct cli_bc *bc, uint16_t *apity2ty, uint16_t tid
 	 cli_dbgmsg("bytecode: type numElements mismatch: %u != %u\n", ty->numElements, apity->numElements);
 	 return 0;
      }
-    for (i=0;i<ty->numElements;i++) {
+     for (i=0;i<ty->numElements;i++) {
 	if (apity->containedTypes[i] < BC_START_TID) {
-	    if (ty->containedTypes[i] != apity->containedTypes[i])
+	    if (ty->containedTypes[i] != apity->containedTypes[i]) {
+		cli_dbgmsg("bytecode: contained type mismatch: %u != %u\n",
+			   ty->containedTypes[i], apity->containedTypes[i]);
 		return 0;
+	    }
 	} else if (!types_equal(bc, apity2ty, ty->containedTypes[i], apity->containedTypes[i] - BC_START_TID))
 	    return 0;
-    }
+	if (ty->kind == DArrayType)
+	    break;/* validated the contained type already */
+     }
     return 1;
 }
 
@@ -1092,7 +1097,7 @@ static int parseBB(struct cli_bc *bc, unsigned func, unsigned bb, unsigned char
 		if (ok) {
 		    inst.u.ops.numOps = numOp+2;
 		    inst.u.ops.opsizes = NULL;
-		    inst.u.ops.ops = cli_calloc(numOp, sizeof(*inst.u.ops.ops));
+		    inst.u.ops.ops = cli_calloc(numOp+2, sizeof(*inst.u.ops.ops));
 		    if (!inst.u.ops.ops) {
 			cli_errmsg("Out of memory allocating operands\n");
 			return CL_EMEM;
diff --git a/libclamav/bytecode_api_decl.c b/libclamav/bytecode_api_decl.c
index 1315d1b..7fbdd51 100644
--- a/libclamav/bytecode_api_decl.c
+++ b/libclamav/bytecode_api_decl.c
@@ -54,9 +54,9 @@ const struct cli_apiglobal cli_globals[] = {
 /* Bytecode globals BEGIN */
 	{"__clambc_kind", GLOBAL_KIND, 16,
 	 ((char*)&((struct cli_bc_ctx*)0)->hooks.kind - (char*)NULL)},
-	{"__clambc_match_counts", GLOBAL_MATCH_COUNTS, 83,
+	{"__clambc_match_counts", GLOBAL_MATCH_COUNTS, 84,
 	 ((char*)&((struct cli_bc_ctx*)0)->hooks.match_counts - (char*)NULL)},
-	{"__clambc_filesize", GLOBAL_FILESIZE, 82,
+	{"__clambc_filesize", GLOBAL_FILESIZE, 83,
 	 ((char*)&((struct cli_bc_ctx*)0)->hooks.filesize - (char*)NULL)},
 	{"__clambc_exeinfo", GLOBAL_EXEINFO, 79,
 	 ((char*)&((struct cli_bc_ctx*)0)->hooks.exeinfo - (char*)NULL)},
@@ -65,7 +65,7 @@ const struct cli_apiglobal cli_globals[] = {
 /* Bytecode globals END */
 };
 const unsigned cli_apicall_maxglobal = _LAST_GLOBAL-1;
-static uint16_t cli_tmp0[]={79, 77, 75, 72, 70, 32, 32, 32, 8, 65};
+static uint16_t cli_tmp0[]={79, 77, 75, 72, 70, 32, 32, 32, 32, 8, 65};
 static uint16_t cli_tmp1[]={71};
 static uint16_t cli_tmp2[]={32, 32};
 static uint16_t cli_tmp3[]={73};
@@ -75,25 +75,26 @@ static uint16_t cli_tmp6[]={76};
 static uint16_t cli_tmp7[]={16, 8, 8, 32, 32, 32, 32, 32, 32, 32, 32, 32, 16, 16, 16, 16, 16, 16, 32, 32, 32, 32, 16, 16, 32, 32, 32, 32, 32, 32, 74};
 static uint16_t cli_tmp8[]={78};
 static uint16_t cli_tmp9[]={32, 16, 16, 32, 32, 32, 16, 16};
-static uint16_t cli_tmp10[]={80, 32, 32, 16};
-static uint16_t cli_tmp11[]={81};
-static uint16_t cli_tmp12[]={32, 32, 32, 32, 32, 32, 32, 32, 32};
-static uint16_t cli_tmp13[]={32};
+static uint16_t cli_tmp10[]={81, 32, 32, 16, 80};
+static uint16_t cli_tmp11[]={8};
+static uint16_t cli_tmp12[]={82};
+static uint16_t cli_tmp13[]={32, 32, 32, 32, 32, 32, 32, 32, 32};
 static uint16_t cli_tmp14[]={32};
-static uint16_t cli_tmp15[]={32, 32, 32};
-static uint16_t cli_tmp16[]={32, 65, 32};
-static uint16_t cli_tmp17[]={32, 87, 32};
-static uint16_t cli_tmp18[]={88};
-static uint16_t cli_tmp19[]={16, 8, 8, 8, 90, 89};
-static uint16_t cli_tmp20[]={8};
-static uint16_t cli_tmp21[]={91};
-static uint16_t cli_tmp22[]={8};
-static uint16_t cli_tmp23[]={32, 93, 32};
-static uint16_t cli_tmp24[]={94};
-static uint16_t cli_tmp25[]={93};
+static uint16_t cli_tmp15[]={32};
+static uint16_t cli_tmp16[]={32, 32, 32};
+static uint16_t cli_tmp17[]={32, 65, 32};
+static uint16_t cli_tmp18[]={32, 88, 32};
+static uint16_t cli_tmp19[]={89};
+static uint16_t cli_tmp20[]={16, 8, 8, 8, 91, 90};
+static uint16_t cli_tmp21[]={8};
+static uint16_t cli_tmp22[]={92};
+static uint16_t cli_tmp23[]={8};
+static uint16_t cli_tmp24[]={32, 94, 32};
+static uint16_t cli_tmp25[]={95};
+static uint16_t cli_tmp26[]={94};
 
 const struct cli_bc_type cli_apicall_types[]={
-	{DStructType, cli_tmp0, 10, 0, 0},
+	{DStructType, cli_tmp0, 11, 0, 0},
 	{DPointerType, cli_tmp1, 1, 0, 0},
 	{DStructType, cli_tmp2, 2, 0, 0},
 	{DPointerType, cli_tmp3, 1, 0, 0},
@@ -103,43 +104,44 @@ const struct cli_bc_type cli_apicall_types[]={
 	{DStructType, cli_tmp7, 31, 0, 0},
 	{DPointerType, cli_tmp8, 1, 0, 0},
 	{DStructType, cli_tmp9, 8, 0, 0},
-	{DStructType, cli_tmp10, 4, 0, 0},
+	{DStructType, cli_tmp10, 5, 0, 0},
 	{DPointerType, cli_tmp11, 1, 0, 0},
-	{DStructType, cli_tmp12, 9, 0, 0},
-	{DArrayType, cli_tmp13, 1, 0, 0},
-	{DArrayType, cli_tmp14, 64, 0, 0},
-	{DFunctionType, cli_tmp15, 3, 0, 0},
+	{DPointerType, cli_tmp12, 1, 0, 0},
+	{DStructType, cli_tmp13, 9, 0, 0},
+	{DArrayType, cli_tmp14, 1, 0, 0},
+	{DArrayType, cli_tmp15, 64, 0, 0},
 	{DFunctionType, cli_tmp16, 3, 0, 0},
 	{DFunctionType, cli_tmp17, 3, 0, 0},
-	{DPointerType, cli_tmp18, 1, 0, 0},
-	{DStructType, cli_tmp19, 6, 0, 0},
-	{DArrayType, cli_tmp20, 29, 0, 0},
-	{DArrayType, cli_tmp21, 10, 0, 0},
+	{DFunctionType, cli_tmp18, 3, 0, 0},
+	{DPointerType, cli_tmp19, 1, 0, 0},
+	{DStructType, cli_tmp20, 6, 0, 0},
+	{DArrayType, cli_tmp21, 29, 0, 0},
 	{DArrayType, cli_tmp22, 3, 0, 0},
-	{DFunctionType, cli_tmp23, 3, 0, 0},
-	{DPointerType, cli_tmp24, 1, 0, 0},
-	{DStructType, cli_tmp25, 1, 0, 0}
+	{DArrayType, cli_tmp23, 10, 0, 0},
+	{DFunctionType, cli_tmp24, 3, 0, 0},
+	{DPointerType, cli_tmp25, 1, 0, 0},
+	{DStructType, cli_tmp26, 1, 0, 0}
 };
 
 const unsigned cli_apicall_maxtypes=sizeof(cli_apicall_types)/sizeof(cli_apicall_types[0]);
 const struct cli_apicall cli_apicalls[]={
 /* Bytecode APIcalls BEGIN */
-	{"test0", 23, 0, 1},
-	{"test1", 15, 0, 0},
-	{"read", 16, 1, 1},
-	{"write", 16, 2, 1},
-	{"seek", 15, 1, 0},
-	{"setvirusname", 16, 3, 1},
-	{"debug_print_str", 16, 4, 1},
-	{"debug_print_uint", 15, 2, 0},
-	{"disasm_x86", 17, 5, 1},
-	{"trace_directory", 16, 6, 1},
-	{"trace_scope", 16, 7, 1},
-	{"trace_source", 16, 8, 1},
-	{"trace_op", 16, 9, 1},
-	{"trace_value", 16, 10, 1},
-	{"trace_ptr", 16, 11, 1},
-	{"pe_rawaddr", 15, 3, 0}
+	{"test0", 24, 0, 1},
+	{"test1", 16, 0, 0},
+	{"read", 17, 1, 1},
+	{"write", 17, 2, 1},
+	{"seek", 16, 1, 0},
+	{"setvirusname", 17, 3, 1},
+	{"debug_print_str", 17, 4, 1},
+	{"debug_print_uint", 16, 2, 0},
+	{"disasm_x86", 18, 5, 1},
+	{"trace_directory", 17, 6, 1},
+	{"trace_scope", 17, 7, 1},
+	{"trace_source", 17, 8, 1},
+	{"trace_op", 17, 9, 1},
+	{"trace_value", 17, 10, 1},
+	{"trace_ptr", 17, 11, 1},
+	{"pe_rawaddr", 16, 3, 0}
 /* Bytecode APIcalls END */
 };
 const cli_apicall_int2 cli_apicalls0[] = {

-- 
Debian repository for ClamAV



More information about the Pkg-clamav-commits mailing list