[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:16:02 UTC 2010
The following commit has been merged in the debian/unstable branch:
commit 2d45ef06168fd3a6ba6700027efc9cc0654151fd
Author: Török Edvin <edwin at clamav.net>
Date: Wed Jan 20 20:04:01 2010 +0200
Support for malloc in bytecode. Fix crash with mismatched api/flevel versions.
diff --git a/libclamav/bytecode.c b/libclamav/bytecode.c
index 602bfc0..690f758 100644
--- a/libclamav/bytecode.c
+++ b/libclamav/bytecode.c
@@ -64,6 +64,7 @@ struct cli_bc_ctx *cli_bytecode_context_alloc(void)
ctx->directory = "";
ctx->line = 0;
ctx->col = 0;
+ ctx->mpool = NULL;
return ctx;
}
@@ -104,6 +105,14 @@ static int cli_bytecode_context_reset(struct cli_bc_ctx *ctx)
ctx->tempfile = NULL;
ctx->outfd = -1;
}
+#if USE_MPOOL
+ if (ctx->mpool) {
+ mpool_destroy(ctx->mpool);
+ ctx->mpool = NULL;
+ }
+#else
+ //TODO: implement for no-mmap case too
+#endif
return CL_SUCCESS;
}
@@ -1222,6 +1231,7 @@ int cli_bytecode_load(struct cli_bc *bc, FILE *f, struct cli_dbio *dbio)
enum parse_state state;
int rc;
+ memset(bc, 0, sizeof(*bc));
if (!f && !dbio) {
cli_errmsg("Unable to load bytecode (null file)\n");
return CL_ENULLARG;
diff --git a/libclamav/bytecode_api.c b/libclamav/bytecode_api.c
index 175dee0..03aae93 100644
--- a/libclamav/bytecode_api.c
+++ b/libclamav/bytecode_api.c
@@ -52,6 +52,11 @@ uint32_t cli_bcapi_test1(struct cli_bc_ctx *ctx, uint32_t a, uint32_t b)
return (a==0xf00dbeef && b==0xbeeff00d) ? 0x12345678 : 0x55;
}
+uint32_t cli_bcapi_test2(struct cli_bc_ctx *ctx, uint32_t a)
+{
+ return a == 0xf00d ? 0xd00f : 0x5555;
+}
+
int32_t cli_bcapi_read(struct cli_bc_ctx* ctx, uint8_t *data, int32_t size)
{
if (!ctx->fmap)
@@ -87,7 +92,7 @@ uint32_t cli_bcapi_debug_print_str(struct cli_bc_ctx *ctx, const uint8_t *str, u
return 0;
}
-uint32_t cli_bcapi_debug_print_uint(struct cli_bc_ctx *ctx, uint32_t a, uint32_t b)
+uint32_t cli_bcapi_debug_print_uint(struct cli_bc_ctx *ctx, uint32_t a)
{
cli_dbgmsg("bytecode debug: %u\n", a);
return 0;
@@ -254,7 +259,7 @@ uint32_t cli_bcapi_trace_ptr(struct cli_bc_ctx *ctx, const const uint8_t* ptr, u
return 0;
}
-uint32_t cli_bcapi_pe_rawaddr(struct cli_bc_ctx *ctx, uint32_t rva, uint32_t dummy)
+uint32_t cli_bcapi_pe_rawaddr(struct cli_bc_ctx *ctx, uint32_t rva)
{
uint32_t ret;
int err = 0;
@@ -313,7 +318,7 @@ int32_t cli_bcapi_file_find(struct cli_bc_ctx *ctx, const uint8_t* data, uint32_
return -1;
}
-int32_t cli_bcapi_file_byteat(struct cli_bc_ctx *ctx, uint32_t off, uint32_t dummy)
+int32_t cli_bcapi_file_byteat(struct cli_bc_ctx *ctx, uint32_t off)
{
unsigned char c;
if (!ctx->fmap)
@@ -322,3 +327,22 @@ int32_t cli_bcapi_file_byteat(struct cli_bc_ctx *ctx, uint32_t off, uint32_t dum
return -1;
return c;
}
+
+uint8_t* cli_bcapi_malloc(struct cli_bc_ctx *ctx, uint32_t size)
+{
+#if USE_MPOOL
+ if (!ctx->mpool) {
+ ctx->mpool = mpool_create();
+ if (!ctx->mpool) {
+ cli_dbgmsg("bytecode: mpool_create failed!\n");
+ return NULL;
+ }
+ }
+ return mpool_malloc(ctx->mpool, size);
+#else
+ /* TODO: implement using a list of pointers we allocated! */
+ cli_errmsg("cli_bcapi_malloc not implemented for systems without mmap yet!\n");
+ return NULL;
+#endif
+}
+
diff --git a/libclamav/bytecode_api.h b/libclamav/bytecode_api.h
index 9142253..d5192a6 100644
--- a/libclamav/bytecode_api.h
+++ b/libclamav/bytecode_api.h
@@ -141,10 +141,9 @@ uint32_t debug_print_str(const uint8_t *str, uint32_t len);
* Prints a number as a debug message.
*
* @param[in] a number to print
- * @param b unused
* @return 0
*/
-uint32_t debug_print_uint(uint32_t a, uint32_t b);
+uint32_t debug_print_uint(uint32_t a);
/**
* Disassembles starting from current file position, the specified amount of
@@ -176,7 +175,7 @@ uint32_t trace_ptr(const uint8_t* ptr, uint32_t dummy);
* @return absolute file offset mapped to the \p rva,
* or PE_INVALID_RVA if the \p rva is invalid.
*/
-uint32_t pe_rawaddr(uint32_t rva, uint32_t dummy);
+uint32_t pe_rawaddr(uint32_t rva);
/** Looks for the specified sequence of bytes in the current file.
* @param[in] data the sequence of bytes to look for
@@ -188,7 +187,15 @@ int32_t file_find(const uint8_t* data, uint32_t len);
* @param offset file offset
* @return byte at offset \p off in the current file, or -1 if offset is
* invalid */
-int32_t file_byteat(uint32_t offset, uint32_t dummy);
+int32_t file_byteat(uint32_t offset);
+
+/** Allocates memory. Currently this memory is freed automatically on exit
+ from the bytecode, and there is no way to free it sooner.
+ @param size amount of memory to allocate in bytes
+ @return pointer to allocated memory */
+void* malloc(uint32_t size);
+
+uint32_t test2(uint32_t a);
#endif
#endif
diff --git a/libclamav/bytecode_api_decl.c b/libclamav/bytecode_api_decl.c
index d084a32..27c3df2 100644
--- a/libclamav/bytecode_api_decl.c
+++ b/libclamav/bytecode_api_decl.c
@@ -40,7 +40,7 @@ int32_t cli_bcapi_write(struct cli_bc_ctx *ctx, uint8_t*, int32_t);
int32_t cli_bcapi_seek(struct cli_bc_ctx *ctx, int32_t, uint32_t);
uint32_t cli_bcapi_setvirusname(struct cli_bc_ctx *ctx, const const uint8_t*, uint32_t);
uint32_t cli_bcapi_debug_print_str(struct cli_bc_ctx *ctx, const const uint8_t*, uint32_t);
-uint32_t cli_bcapi_debug_print_uint(struct cli_bc_ctx *ctx, uint32_t, uint32_t);
+uint32_t cli_bcapi_debug_print_uint(struct cli_bc_ctx *ctx, uint32_t);
uint32_t cli_bcapi_disasm_x86(struct cli_bc_ctx *ctx, struct DISASM_RESULT*, uint32_t);
uint32_t cli_bcapi_trace_directory(struct cli_bc_ctx *ctx, const const uint8_t*, uint32_t);
uint32_t cli_bcapi_trace_scope(struct cli_bc_ctx *ctx, const const uint8_t*, uint32_t);
@@ -48,9 +48,11 @@ uint32_t cli_bcapi_trace_source(struct cli_bc_ctx *ctx, const const uint8_t*, ui
uint32_t cli_bcapi_trace_op(struct cli_bc_ctx *ctx, const const uint8_t*, uint32_t);
uint32_t cli_bcapi_trace_value(struct cli_bc_ctx *ctx, const const uint8_t*, uint32_t);
uint32_t cli_bcapi_trace_ptr(struct cli_bc_ctx *ctx, const const uint8_t*, uint32_t);
-uint32_t cli_bcapi_pe_rawaddr(struct cli_bc_ctx *ctx, uint32_t, uint32_t);
+uint32_t cli_bcapi_pe_rawaddr(struct cli_bc_ctx *ctx, uint32_t);
int32_t cli_bcapi_file_find(struct cli_bc_ctx *ctx, const const uint8_t*, uint32_t);
-int32_t cli_bcapi_file_byteat(struct cli_bc_ctx *ctx, uint32_t, uint32_t);
+int32_t cli_bcapi_file_byteat(struct cli_bc_ctx *ctx, uint32_t);
+uint8_t* cli_bcapi_malloc(struct cli_bc_ctx *ctx, uint32_t);
+uint32_t cli_bcapi_test2(struct cli_bc_ctx *ctx, uint32_t);
const struct cli_apiglobal cli_globals[] = {
/* Bytecode globals BEGIN */
@@ -83,17 +85,19 @@ 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};
-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};
+static uint16_t cli_tmp16[]={32, 32};
+static uint16_t cli_tmp17[]={65, 32};
+static uint16_t cli_tmp18[]={32, 65, 32};
+static uint16_t cli_tmp19[]={32, 89, 32};
+static uint16_t cli_tmp20[]={90};
+static uint16_t cli_tmp21[]={16, 8, 8, 8, 92, 91};
+static uint16_t cli_tmp22[]={8};
+static uint16_t cli_tmp23[]={93};
+static uint16_t cli_tmp24[]={8};
+static uint16_t cli_tmp25[]={32, 32, 32};
+static uint16_t cli_tmp26[]={32, 96, 32};
+static uint16_t cli_tmp27[]={97};
+static uint16_t cli_tmp28[]={96};
const struct cli_bc_type cli_apicall_types[]={
{DStructType, cli_tmp0, 11, 0, 0},
@@ -112,48 +116,49 @@ const struct cli_bc_type cli_apicall_types[]={
{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},
+ {DFunctionType, cli_tmp16, 2, 0, 0},
+ {DFunctionType, cli_tmp17, 2, 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},
- {DArrayType, cli_tmp23, 10, 0, 0},
- {DFunctionType, cli_tmp24, 3, 0, 0},
- {DPointerType, cli_tmp25, 1, 0, 0},
- {DStructType, cli_tmp26, 1, 0, 0}
+ {DFunctionType, cli_tmp19, 3, 0, 0},
+ {DPointerType, cli_tmp20, 1, 0, 0},
+ {DStructType, cli_tmp21, 6, 0, 0},
+ {DArrayType, cli_tmp22, 29, 0, 0},
+ {DArrayType, cli_tmp23, 3, 0, 0},
+ {DArrayType, cli_tmp24, 10, 0, 0},
+ {DFunctionType, cli_tmp25, 3, 0, 0},
+ {DFunctionType, cli_tmp26, 3, 0, 0},
+ {DPointerType, cli_tmp27, 1, 0, 0},
+ {DStructType, cli_tmp28, 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", 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},
- {"file_find", 17, 12, 1},
- {"file_byteat", 16, 4, 0}
+ {"test0", 26, 0, 1},
+ {"test1", 25, 0, 0},
+ {"read", 18, 1, 1},
+ {"write", 18, 2, 1},
+ {"seek", 25, 1, 0},
+ {"setvirusname", 18, 3, 1},
+ {"debug_print_str", 18, 4, 1},
+ {"debug_print_uint", 16, 0, 2},
+ {"disasm_x86", 19, 5, 1},
+ {"trace_directory", 18, 6, 1},
+ {"trace_scope", 18, 7, 1},
+ {"trace_source", 18, 8, 1},
+ {"trace_op", 18, 9, 1},
+ {"trace_value", 18, 10, 1},
+ {"trace_ptr", 18, 11, 1},
+ {"pe_rawaddr", 16, 1, 2},
+ {"file_find", 18, 12, 1},
+ {"file_byteat", 16, 2, 2},
+ {"malloc", 17, 0, 3},
+ {"test2", 16, 3, 2}
/* Bytecode APIcalls END */
};
const cli_apicall_int2 cli_apicalls0[] = {
(cli_apicall_int2)cli_bcapi_test1,
- (cli_apicall_int2)cli_bcapi_seek,
- (cli_apicall_int2)cli_bcapi_debug_print_uint,
- (cli_apicall_int2)cli_bcapi_pe_rawaddr,
- (cli_apicall_int2)cli_bcapi_file_byteat
+ (cli_apicall_int2)cli_bcapi_seek
};
const cli_apicall_pointer cli_apicalls1[] = {
(cli_apicall_pointer)cli_bcapi_test0,
@@ -170,4 +175,13 @@ const cli_apicall_pointer cli_apicalls1[] = {
(cli_apicall_pointer)cli_bcapi_trace_ptr,
(cli_apicall_pointer)cli_bcapi_file_find
};
+const cli_apicall_int1 cli_apicalls2[] = {
+ (cli_apicall_int1)cli_bcapi_debug_print_uint,
+ (cli_apicall_int1)cli_bcapi_pe_rawaddr,
+ (cli_apicall_int1)cli_bcapi_file_byteat,
+ (cli_apicall_int1)cli_bcapi_test2
+};
+const cli_apicall_malloclike cli_apicalls3[] = {
+ (cli_apicall_malloclike)cli_bcapi_malloc
+};
const unsigned cli_apicall_maxapi = sizeof(cli_apicalls)/sizeof(cli_apicalls[0]);
diff --git a/libclamav/bytecode_api_impl.h b/libclamav/bytecode_api_impl.h
index 96baed5..9385905 100644
--- a/libclamav/bytecode_api_impl.h
+++ b/libclamav/bytecode_api_impl.h
@@ -37,7 +37,7 @@ int32_t cli_bcapi_write(struct cli_bc_ctx *ctx, uint8_t*, int32_t);
int32_t cli_bcapi_seek(struct cli_bc_ctx *ctx, int32_t, uint32_t);
uint32_t cli_bcapi_setvirusname(struct cli_bc_ctx *ctx, const const uint8_t*, uint32_t);
uint32_t cli_bcapi_debug_print_str(struct cli_bc_ctx *ctx, const const uint8_t*, uint32_t);
-uint32_t cli_bcapi_debug_print_uint(struct cli_bc_ctx *ctx, uint32_t, uint32_t);
+uint32_t cli_bcapi_debug_print_uint(struct cli_bc_ctx *ctx, uint32_t);
uint32_t cli_bcapi_disasm_x86(struct cli_bc_ctx *ctx, struct DISASM_RESULT*, uint32_t);
uint32_t cli_bcapi_trace_directory(struct cli_bc_ctx *ctx, const const uint8_t*, uint32_t);
uint32_t cli_bcapi_trace_scope(struct cli_bc_ctx *ctx, const const uint8_t*, uint32_t);
@@ -45,8 +45,10 @@ uint32_t cli_bcapi_trace_source(struct cli_bc_ctx *ctx, const const uint8_t*, ui
uint32_t cli_bcapi_trace_op(struct cli_bc_ctx *ctx, const const uint8_t*, uint32_t);
uint32_t cli_bcapi_trace_value(struct cli_bc_ctx *ctx, const const uint8_t*, uint32_t);
uint32_t cli_bcapi_trace_ptr(struct cli_bc_ctx *ctx, const const uint8_t*, uint32_t);
-uint32_t cli_bcapi_pe_rawaddr(struct cli_bc_ctx *ctx, uint32_t, uint32_t);
+uint32_t cli_bcapi_pe_rawaddr(struct cli_bc_ctx *ctx, uint32_t);
int32_t cli_bcapi_file_find(struct cli_bc_ctx *ctx, const const uint8_t*, uint32_t);
-int32_t cli_bcapi_file_byteat(struct cli_bc_ctx *ctx, uint32_t, uint32_t);
+int32_t cli_bcapi_file_byteat(struct cli_bc_ctx *ctx, uint32_t);
+uint8_t* cli_bcapi_malloc(struct cli_bc_ctx *ctx, uint32_t);
+uint32_t cli_bcapi_test2(struct cli_bc_ctx *ctx, uint32_t);
#endif
diff --git a/libclamav/bytecode_priv.h b/libclamav/bytecode_priv.h
index 75a9dcf..8cda9af 100644
--- a/libclamav/bytecode_priv.h
+++ b/libclamav/bytecode_priv.h
@@ -28,6 +28,7 @@
#include "execs.h"
#include "bytecode_hooks.h"
#include "fmap.h"
+#include "mpool.h"
typedef uint32_t operand_t;
typedef uint16_t bbid_t;
@@ -144,6 +145,7 @@ struct cli_bc_ctx {
uint32_t scopeid;
unsigned line;
unsigned col;
+ mpool_t *mpool;
};
struct cli_all_bc;
int cli_vm_execute(const struct cli_bc *bc, struct cli_bc_ctx *ctx, const struct cli_bc_func *func, const struct cli_bc_inst *inst);
diff --git a/libclamav/bytecode_vm.c b/libclamav/bytecode_vm.c
index aeb2626..e6d5551 100644
--- a/libclamav/bytecode_vm.c
+++ b/libclamav/bytecode_vm.c
@@ -589,6 +589,22 @@ int cli_vm_execute(const struct cli_bc *bc, struct cli_bc_ctx *ctx, const struct
res = cli_apicalls1[api->idx](p, u);
break;*/
}
+ case 2: {
+ int32_t a;
+ READ32(a, inst->u.ops.ops[0]);
+ res = cli_apicalls2[api->idx](ctx, a);
+ break;
+ }
+ case 3: {
+ cli_errmsg("bytecode: type 3 apicalls not yet implemented!\n");
+ stop = CL_EBYTECODE;
+ /* void *p;
+ uint32_t u;
+ p = ...;
+ u = READ32(v, inst->u.ops.ops[1]);
+ res = cli_apicalls1[api->idx](p, u);
+ break;*/
+ }
}
WRITE32(inst->dest, res);
break;
diff --git a/libclamav/c++/bytecode2llvm.cpp b/libclamav/c++/bytecode2llvm.cpp
index ff315f8..aa6df15 100644
--- a/libclamav/c++/bytecode2llvm.cpp
+++ b/libclamav/c++/bytecode2llvm.cpp
@@ -1304,6 +1304,12 @@ int cli_bytecode_prepare_jit(struct cli_all_bc *bcs)
case 1:
dest = (void*)(intptr_t)cli_apicalls1[api->idx];
break;
+ case 2:
+ dest = (void*)(intptr_t)cli_apicalls2[api->idx];
+ break;
+ case 3:
+ dest = (void*)(intptr_t)cli_apicalls3[api->idx];
+ break;
default:
llvm_unreachable("invalid api type");
}
diff --git a/libclamav/clambc.h b/libclamav/clambc.h
index cfafc25..0e5ef72 100644
--- a/libclamav/clambc.h
+++ b/libclamav/clambc.h
@@ -28,7 +28,7 @@ struct bytecode_metadata {
char *targetExclude;
};
-#define BC_FUNC_LEVEL 4
+#define BC_FUNC_LEVEL 5
#define BC_HEADER "ClamBC"
enum bc_opcode {
diff --git a/libclamav/type_desc.h b/libclamav/type_desc.h
index f320d58..6614b1b 100644
--- a/libclamav/type_desc.h
+++ b/libclamav/type_desc.h
@@ -43,6 +43,8 @@ struct cli_bc_type {
typedef uint32_t (*cli_apicall_int2)(struct cli_bc_ctx *, uint32_t, uint32_t);
typedef uint32_t (*cli_apicall_pointer)(struct cli_bc_ctx *, void*, uint32_t);
+typedef uint32_t (*cli_apicall_int1)(struct cli_bc_ctx *, uint32_t);
+typedef void* (*cli_apicall_malloclike)(struct cli_bc_ctx *, uint32_t);
struct cli_apicall {
const char *name;
@@ -69,6 +71,8 @@ extern const struct cli_apiglobal cli_globals[];
extern const struct cli_apicall cli_apicalls[];
extern const cli_apicall_int2 cli_apicalls0[];
extern const cli_apicall_pointer cli_apicalls1[];
+extern const cli_apicall_int1 cli_apicalls2[];
+extern const cli_apicall_malloclike cli_apicalls3[];
extern const unsigned cli_apicall_maxapi;
extern const unsigned cli_apicall_maxglobal;
diff --git a/unit_tests/input/apicalls.cbc b/unit_tests/input/apicalls.cbc
index 09fe754..f41bb16 100644
--- a/unit_tests/input/apicalls.cbc
+++ b/unit_tests/input/apicalls.cbc
@@ -1,4 +1,4 @@
-ClamBCad`|``````|`agafp`clamcoincidencejb:82
+ClamBCae`|``````|`agafp`clamcoincidencejb:82
Tedaaa`aacb`bb`bb`b
Eabaaabbfd|afdgefcgdgac``
diff --git a/unit_tests/input/apicalls2.cbc b/unit_tests/input/apicalls2.cbc
index d847034..bedb0ca 100644
--- a/unit_tests/input/apicalls2.cbc
+++ b/unit_tests/input/apicalls2.cbc
@@ -1,11 +1,14 @@
-ClamBCad`|``````|`akafp`clamcoincidencejb:83
+ClamBCae`|``````|`amafp`clamcoincidencejb:92
-Tedcaabfdebedebfdaaa`aacb`bbfdb`baacb`bb`bb`b
-Eababaabid|afdgefcgdg`c``abbjd|afdgefcgdgac``
+Tedcaabfdebedebfdaaa`aabbadb`baabb`bb`baacb`bbfdb`baacb`bb`bb`b
+Ebdaadbcabid|agmfaflflfofcf``bdabjd|afdgefcgdgbc``aabkd|afdgefcgdg`c``abbld|afdgefcgdgac``
G`aa`@`
-A`b`bLahbedabgd```b`b`aa`b`b`aa`b`b`Fajac
-Bbgdaadbbfd`@d``fb`aab`bacabbabHonnkm``odHm``oonnkdaaadeab`bacHhgfedcbadTaaadaaab
-Bb`baeabbaa`Honnkmjnmdaaafeab`baeHhgfedcbadb`bagoaafDm``odDmjnmdTcab`bag
+A`b`bLalbedabgd```b`b`aa`b`b`aa`b`b`aa`bad`aa`b`b`Fbaaaf
+Bbgdaadbbfd`@d``fb`aab`bacabbabHonnkm``odHm``oonnkdaaadeab`bacHhgfedcbadTaaadaaae
+Bb`baeabbaa`Honnkmjnmdaaafeab`baeHhgfedcbadTaaafabae
+Bb`bagababdaDm``odaaaheab`bagDo``mdTaaahacae
+BbadaiababcaAadaaajeabadai@`Taaajaead
+Bb`bakabbaaai at dTcab`bDm``od
BTcab`bDmjnmdE
Aab`bLabah`aa`b`b`Facaa
Baaaaeaah`Bgaab`baboaaaDm``odDmjnmdTcab`babE
diff --git a/unit_tests/input/arith.cbc b/unit_tests/input/arith.cbc
index 709ea0a..ed84690 100644
--- a/unit_tests/input/arith.cbc
+++ b/unit_tests/input/arith.cbc
@@ -1,4 +1,4 @@
-ClamBCad`|``````|`afbbep`clamcoincidencejb:418
+ClamBCae`|``````|`afbbep`clamcoincidencejb:418
Tedaaa`
E``
diff --git a/unit_tests/input/div0.cbc b/unit_tests/input/div0.cbc
index 349f364..fe129f2 100644
--- a/unit_tests/input/div0.cbc
+++ b/unit_tests/input/div0.cbc
@@ -1,4 +1,4 @@
-ClamBCad`|``````|`afabp`clamcoincidencejb:23
+ClamBCae`|``````|`afabp`clamcoincidencejb:23
Tedaaa`
E``
diff --git a/unit_tests/input/lsig.cbc b/unit_tests/input/lsig.cbc
index 696551c..b749411 100644
--- a/unit_tests/input/lsig.cbc
+++ b/unit_tests/input/lsig.cbc
@@ -1,11 +1,11 @@
-ClamBCad`|``c``a```|`bjaabp`clamcoincidencejb:326
+ClamBCae`|``````|`bjaabp`clamcoincidencejb:318
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```hbia`@`bieBdeBbgBofBjfBafBnfBnbBfdBofBof@`bheBad@`bheBbd@`bge at Ab@Ac`b`aAa`b`aC``a`bfeBedB`eBkbB`cBjcBafBafBbfBbf@`beeBffBffBffBff@`beeBffB`cB`cBdf@`bdeBafBafBcfBcfBefBef@`beeBdfBefBafBdf@`bbe at Ag@@AhAa at AiAc@AjAb at AkAd`bad at Ab`bad at Ac`bad at Ag`bad at Ah`bad at Ai`bad at Aj`bad at Ak`bcdAdD```h`bcdAcD```h`bcdAbD```h`bcdAaD```h`bcd at D```h`
+Gd```hbha`@`bieBdeBbgBofBjfBafBnfBnbBfdBofBof@`bheBad@`bheBbd@`bge at Ab@Ac`b`aAa`bfeBedB`eBkbB`cBjcBafBafBbfBbf@`beeBffBffBffBff@`beeBffB`cB`cBdf@`bdeBafBafBcfBcfBefBef@`beeBdfBefBafBdf@`bbe at Af@@AgAa at AhAc@AiAb at AjAd`bad at Ab`bad at Ac`bad at Af`bad at Ag`bad at Ah`bad at Ai`bad at Aj`bcdAdD```h`bcdAcD```h`bcdAbD```h`bcdAaD```h`bcd at D```h`
A`b`bLaeb`b`aa`aa`bad`b`b`Fahac
-Bb`b`gbBda`aaaagab`b`AadTaaaaaaab
-Baaabeab`b`AbdbadacoaabAm`An`b`badabbafac at dTcab`b at d
+Bb`b`gbBca`aaaagab`b`AadTaaaaaaab
+Baaabeab`b`AbdbadacoaabAl`Am`b`badabbafac at dTcab`b at d
BTcab`b at dE
A`aaLbcab`b`b`b`b`b`b`b`b`b`aa`aa`aa`aa`b`b`b`b`b`b`b`b`b`b`aa`aa`b`b`aa`aa`Fbdaaa
-Bb`b`gbBha`b`baagbBga`b`babgbBfa`b`baca`aa`b`bada`acabaaaeeab`badBjbdaaaffab`bab at daaagfab`baa at daaahfab`b`@db`bai`aafb`baj`aagb`bak`aahb`bala`ajakb`bama`alaiaaaneab`bamAbdaaaok`anaeb`bb`agbBea`aabaaeab`bb`aAjdaabbal`aobaaTcaaabbaE
+Bb`b`gbBga`b`baagbBfa`b`babgbBea`b`baca`aa`b`bada`acabaaaeeab`badBjbdaaaffab`bab at daaagfab`baa at daaahfab`b`@db`bai`aafb`baj`aagb`bak`aahb`bala`ajakb`bama`alaiaaaneab`bamAbdaaaok`anaeb`bb`agbBda`aabaaeab`bb`aAjdaabbal`aobaaTcaaabbaE
diff --git a/unit_tests/input/retmagic.cbc b/unit_tests/input/retmagic.cbc
index c3f02fa..d3074ad 100644
--- a/unit_tests/input/retmagic.cbc
+++ b/unit_tests/input/retmagic.cbc
@@ -1,4 +1,4 @@
-ClamBCad`|``````|`afaap`clamcoincidencejb:20
+ClamBCae`|``````|`afaap`clamcoincidencejb:20
Tedaaa`
E``
--
Debian repository for ClamAV
More information about the Pkg-clamav-commits
mailing list