[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:06:58 UTC 2010


The following commit has been merged in the debian/unstable branch:
commit ec41017bbaf25a85c69b50e2b05becc6de27e3bf
Author: Török Edvin <edwin at clamav.net>
Date:   Tue Oct 6 17:32:38 2009 +0300

    WiP

diff --git a/libclamav/bytecode.c b/libclamav/bytecode.c
index 71484b7..a866cc9 100644
--- a/libclamav/bytecode.c
+++ b/libclamav/bytecode.c
@@ -430,14 +430,18 @@ static int parseHeader(struct cli_bc *bc, unsigned char *buffer)
 
 static int parseLSig(struct cli_bc *bc, unsigned char *buffer)
 {
-    if (buffer[0] != 'L') {
-	cli_errmsg("Invalid logical signature header: %c\n", buffer[0]);
-	return CL_EMALFDB;
-    }
-    bc->lsig = NULL;
-    if (!buffer[1])
-	return CL_SUCCESS;
-    bc->lsig = cli_strdup(buffer);
+    const char *prefix;
+    char *vnames, *vend = strchr(buffer, ';');
+    if (vend) {
+	bc->lsig = cli_strdup(buffer);
+    } else {
+	/* Not a logical signature, but we still have a virusname */
+	bc->lsig = NULL;
+    }
+    *vend++ = '\0';
+    prefix = buffer;
+    vnames = strchr(vend, '{');
+
     return CL_SUCCESS;
 }
 
diff --git a/libclamav/bytecode.h b/libclamav/bytecode.h
index a10a133..2d64653 100644
--- a/libclamav/bytecode.h
+++ b/libclamav/bytecode.h
@@ -58,6 +58,9 @@ struct cli_bc {
   uint16_t start_tid;
   struct bitset_tag *uses_apis;
   char *lsig;
+  char *vnameprefix;
+  char **vnames;
+  unsigned vnames_cnt;
 };
 
 struct cli_all_bc {
diff --git a/libclamav/bytecode_api.h b/libclamav/bytecode_api.h
index 88c44ad..8ab8ac7 100644
--- a/libclamav/bytecode_api.h
+++ b/libclamav/bytecode_api.h
@@ -24,10 +24,12 @@
 
 #ifdef __CLAMBC__
 #include "bytecode_execs.h"
+//#include "bytecode_pe.h"
 #endif
 
 #ifndef __CLAMBC__
 #include "execs.h"
+#include "pe.h"
 #endif
 
 struct foo {
@@ -46,8 +48,9 @@ enum BytecodeKind {
 
 extern const uint32_t __clambc_match_counts[64];
 extern const struct cli_exe_info __clambc_exeinfo;
+extern const struct cli_pe_hook_data __clambc_pedata;
 
-const uint8_t __clambc_kind;
+const uint16_t __clambc_kind;
 
 uint32_t test0(struct foo*, uint32_t);
 uint32_t test1(uint32_t, uint32_t);
diff --git a/libclamav/bytecode_api_decl.c b/libclamav/bytecode_api_decl.c
index 5e40100..15c8b50 100644
--- a/libclamav/bytecode_api_decl.c
+++ b/libclamav/bytecode_api_decl.c
@@ -36,47 +36,51 @@ uint32_t cli_bcapi_debug_print_uint(struct cli_bc_ctx *ctx, uint32_t, uint32_t);
 
 const struct cli_apiglobal cli_globals[] = {
 /* Bytecode globals BEGIN */
-	{"__clambc_match_counts", GLOBAL_MATCH_COUNTS, 72,
+	{"__clambc_match_counts", GLOBAL_MATCH_COUNTS, 73,
 	 ((char*)&((struct cli_bc_ctx*)0)->hooks.match_counts - (char*)NULL)},
-	{"__clambc_exeinfo", GLOBAL_EXEINFO, 69,
+	{"__clambc_exeinfo", GLOBAL_EXEINFO, 70,
 	 ((char*)&((struct cli_bc_ctx*)0)->hooks.exeinfo - (char*)NULL)},
-	{"__clambc_kind", GLOBAL_KIND, 8,
-	 ((char*)&((struct cli_bc_ctx*)0)->hooks.kind - (char*)NULL)}
+	{"__clambc_kind", GLOBAL_KIND, 16,
+	 ((char*)&((struct cli_bc_ctx*)0)->hooks.kind - (char*)NULL)},
+	{"__clambc_pedata", GLOBAL_PEDATA, 69,
+	 ((char*)&((struct cli_bc_ctx*)0)->hooks.pedata - (char*)NULL)}
 /* Bytecode globals END */
 };
 const unsigned cli_apicall_maxglobal = _LAST_GLOBAL-1;
-static uint16_t cli_tmp0[]={70, 32, 32, 16};
-static uint16_t cli_tmp1[]={71};
-static uint16_t cli_tmp2[]={32, 32, 32, 32, 32, 32, 32, 32, 32};
-static uint16_t cli_tmp3[]={32};
-static uint16_t cli_tmp4[]={32, 32, 32};
-static uint16_t cli_tmp5[]={32, 65, 32};
-static uint16_t cli_tmp6[]={32, 76, 32};
-static uint16_t cli_tmp7[]={77};
-static uint16_t cli_tmp8[]={76};
+static uint16_t cli_tmp0[]={};
+static uint16_t cli_tmp1[]={71, 32, 32, 16};
+static uint16_t cli_tmp2[]={72};
+static uint16_t cli_tmp3[]={32, 32, 32, 32, 32, 32, 32, 32, 32};
+static uint16_t cli_tmp4[]={32};
+static uint16_t cli_tmp5[]={32, 32, 32};
+static uint16_t cli_tmp6[]={32, 65, 32};
+static uint16_t cli_tmp7[]={32, 77, 32};
+static uint16_t cli_tmp8[]={78};
+static uint16_t cli_tmp9[]={77};
 
 const struct cli_bc_type cli_apicall_types[]={
-	{DStructType, cli_tmp0, 4, 0, 0},
-	{DPointerType, cli_tmp1, 1, 0, 0},
-	{DStructType, cli_tmp2, 9, 0, 0},
-	{DArrayType, cli_tmp3, 64, 0, 0},
-	{DFunctionType, cli_tmp4, 3, 0, 0},
+	{, cli_tmp0, , 0, 0},
+	{DStructType, cli_tmp1, 4, 0, 0},
+	{DPointerType, cli_tmp2, 1, 0, 0},
+	{DStructType, cli_tmp3, 9, 0, 0},
+	{DArrayType, cli_tmp4, 64, 0, 0},
 	{DFunctionType, cli_tmp5, 3, 0, 0},
 	{DFunctionType, cli_tmp6, 3, 0, 0},
-	{DPointerType, cli_tmp7, 1, 0, 0},
-	{DStructType, cli_tmp8, 1, 0, 0}
+	{DFunctionType, cli_tmp7, 3, 0, 0},
+	{DPointerType, cli_tmp8, 1, 0, 0},
+	{DStructType, cli_tmp9, 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", 6, 0, 1},
-	{"test1", 4, 0, 0},
-	{"read", 5, 1, 1},
-	{"seek", 4, 1, 0},
-	{"setvirusname", 5, 2, 1},
-	{"debug_print_str", 5, 3, 1},
-	{"debug_print_uint", 4, 2, 0}
+	{"test0", 7, 0, 1},
+	{"test1", 5, 0, 0},
+	{"read", 6, 1, 1},
+	{"seek", 5, 1, 0},
+	{"setvirusname", 6, 2, 1},
+	{"debug_print_str", 6, 3, 1},
+	{"debug_print_uint", 5, 2, 0}
 /* Bytecode APIcalls END */
 };
 const cli_apicall_int2 cli_apicalls0[] = {
diff --git a/libclamav/bytecode_hooks.h b/libclamav/bytecode_hooks.h
index a068dc2..0fbe8c7 100644
--- a/libclamav/bytecode_hooks.h
+++ b/libclamav/bytecode_hooks.h
@@ -24,8 +24,8 @@
 
 struct cli_bc_hooks {
 	 const uint32_t* match_counts;
-	 const struct cli_exe_info *exeinfo;
-	 const struct cli_pe_hook_data *pedata;
-	 const uint8_t kind;
+	 const struct cli_exe_info exeinfo;
+	 const uint16_t kind;
+	 const cli_pe_hook_data pedata;
 };
 #endif
diff --git a/libclamav/clambc.h b/libclamav/clambc.h
index 623b688..12e9545 100644
--- a/libclamav/clambc.h
+++ b/libclamav/clambc.h
@@ -101,6 +101,7 @@ enum bc_global {
   _FIRST_GLOBAL = 0x8000,
   GLOBAL_MATCH_COUNTS = 0x8000,
   GLOBAL_KIND,
+  GLOBAL_VIRUSNAMES,
   GLOBAL_EXEINFO,
   _LAST_GLOBAL
 };
diff --git a/unit_tests/input/apicalls.cbc b/unit_tests/input/apicalls.cbc
index 50f571c..b87ced2 100644
--- a/unit_tests/input/apicalls.cbc
+++ b/unit_tests/input/apicalls.cbc
@@ -1,5 +1,5 @@
 ClamBCaa`|``````|`afafp`clamcoincidencejb
-L
+
 Tedacb`bb`bb`b
 Eabaaabbed|afdgefcgdgac``
 G``
diff --git a/unit_tests/input/apicalls2.cbc b/unit_tests/input/apicalls2.cbc
index 22ea04b..7f574d7 100644
--- a/unit_tests/input/apicalls2.cbc
+++ b/unit_tests/input/apicalls2.cbc
@@ -1,5 +1,5 @@
 ClamBCaa`|``````|`ajafp`clamcoincidencejb
-L
+
 Tedcabidebidacb`bbidb`bacb`bb`bb`bebed
 Eababaabgd|afdgefcgdg`c``abbhd|afdgefcgdgac``
 G``
diff --git a/unit_tests/input/arith.cbc b/unit_tests/input/arith.cbc
index c8e0184..855f638 100644
--- a/unit_tests/input/arith.cbc
+++ b/unit_tests/input/arith.cbc
@@ -1,5 +1,5 @@
 ClamBCaa`|``````|`aebbep`clamcoincidencejb
-L
+
 Ted
 E``
 G``
diff --git a/unit_tests/input/div0.cbc b/unit_tests/input/div0.cbc
index 1f8ea38..b52778a 100644
--- a/unit_tests/input/div0.cbc
+++ b/unit_tests/input/div0.cbc
@@ -1,5 +1,5 @@
 ClamBCaa`|``````|`aeabp`clamcoincidencejb
-L
+
 Ted
 E``
 G``
diff --git a/unit_tests/input/lsig.cbc b/unit_tests/input/lsig.cbc
index b976040..1aa040d 100644
--- a/unit_tests/input/lsig.cbc
+++ b/unit_tests/input/lsig.cbc
@@ -1,11 +1,9 @@
-ClamBCaa`|``````|`bbaabp`clamcoincidencejb
-L;Target:0;((0|1|2)=42,2);aabb;ffffffff;aaccee;f00d
-Tedebaeeb`eebodebndebmdebadebcdacb`bbadb`bdb`db`bdakahdagahdaiahdaeah
-Eaeaaaebld|amcgefdgfgifbgegcgnfafmfef``
-Gd```hanbaeBafBafBbfBbf@`b`eBffBffBffBffBffBffBffBff@`baeBffB`cB`cBdf@`bodBafBafBcfBcfBefBef@`bndBdeBbgBofBjfBafBnfBnbBfdBodBod@`bad@@`bad at Aa`bad at Ab`bad at Ac`bad at Ad`bcdAcD```h`bcdAbD```h`bcd at D```h`bcdAaD```h`
-A`b`bLacb`baa`Fafac
-Bb`b`gbAj`aaaaeab`b`AbdTaaaaaaab
-B```b`abTcab`b at d
+ClamBCaa`|``````|`alaap`clamcoincidencejb
+Trojan.Foo/A/B;Target:0;((0|1|2)=42,2);aabb;ffffffff;aaccee;f00d
+Tedebkdebjdebadebcdacb`bbadb`bdb`db`bdabah
+Eaeaaaebid|amcgefdgfgifbgegcgnfafmfef``
+Gd```hahbkdBad@`bkdBbd@`bad@@`bad at Aa`bcdAcD```h`bcdAbD```h`bcd at D```h`bcdAaD```h`
+A`b`bLaeb`baaaabadb`bFahac
+Bb`b`gbAd`aaaaiab`b`AbdTaaaaabaa
+Baaabeab`b`AbdbadacoaabAb`Ac`b`badabbaeac at dTcab`b at d
 BTcab`b at dE
-A``Laab`bFabaa
-Bb`b`abbaeAi`@dTdaE
diff --git a/unit_tests/input/retmagic.cbc b/unit_tests/input/retmagic.cbc
index a6ee6e0..5160166 100644
--- a/unit_tests/input/retmagic.cbc
+++ b/unit_tests/input/retmagic.cbc
@@ -1,5 +1,5 @@
 ClamBCaa`|``````|`aeaap`clamcoincidencejb
-L
+
 Ted
 E``
 G``

-- 
Debian repository for ClamAV



More information about the Pkg-clamav-commits mailing list