[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:09:44 UTC 2010
The following commit has been merged in the debian/unstable branch:
commit b8656613c0fa934673f908b9e42f56f7c1e8ec46
Author: Török Edvin <edwin at clamav.net>
Date: Tue Nov 24 14:53:15 2009 +0200
Doxygenize API headers.
diff --git a/libclamav/bytecode_api.h b/libclamav/bytecode_api.h
index bd05f38..daab84d 100644
--- a/libclamav/bytecode_api.h
+++ b/libclamav/bytecode_api.h
@@ -19,6 +19,8 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301, USA.
*/
+
+/** @file */
#ifndef BYTECODE_API_H
#define BYTECODE_API_H
@@ -37,46 +39,116 @@ struct foo {
struct foo *nxt;
};
+/** Bytecode trigger kind */
enum BytecodeKind {
- BC_GENERIC=0,/* generic bytecode, not tied to a specific hook */
+ /** generic bytecode, not tied a specific hook */
+ BC_GENERIC=0,
_BC_START_HOOKS=256,
- BC_LOGICAL=256,/* triggered by a logical signature */
- BC_PE_UNPACKER,/* a PE unpacker */
+ /** triggered by a logical signature */
+ BC_LOGICAL=256,
+ /** a PE unpacker */
+ BC_PE_UNPACKER,
_BC_LAST_HOOK
};
#ifdef __CLAMBC__
+/** @brief Logical signature match counts
+ *
+ * This is a low-level variable, use the Macros in bytecode_local.h instead to
+ * access it.
+ * */
extern const uint32_t __clambc_match_counts[64];
+/** Executable info, if this is a PE hook */
extern const struct cli_exe_info __clambc_exeinfo;
+/** PE data, if this is a PE hook */
extern const struct cli_pe_hook_data __clambc_pedata;
+/** Kind of the bytecode */
const uint16_t __clambc_kind;
uint32_t test0(struct foo*, uint32_t);
uint32_t test1(uint32_t, uint32_t);
-/* reads @size bytes from current file (if any) to @data, returns amount read */
+/**
+ * @brief Reads specified amount of bytes from the current file
+ * into a buffer.
+ *
+ * @param[in] size amount of bytes to read
+ * @param[out] data pointer to buffer where data is read into
+ * @return amount read.
+ */
int32_t read(uint8_t *data, int32_t size);
+
enum {
+ /**set file position to specified absolute position */
SEEK_SET=0,
+ /**set file position relative to current position */
SEEK_CUR,
+ /**set file position relative to file end*/
SEEK_END
};
+/**
+ * @brief Writes the specified amount of bytes from a buffer to the
+ * current temporary file.
+ * @param[in] data pointer to buffer of data to write
+ * @param[in] size amount of bytes to write
+ * \p size bytes to temporary file, from the buffer pointed to
+ * byte
+ * @return amount of bytes successfully written
+ */
int32_t write(uint8_t *data, int32_t size);
-/* seeks current position to @pos, from @whence, returns current position from
- * start of file */
+
+/**
+ * @brief Changes the current file position to the specified one.
+ * @sa SEEK_SET, SEEK_CUR, SEEK_END
+ * @param[in] pos offset (absolute or relative depending on \p whence param)
+ * @param[in] whence one of \p SEEK_SET, \p SEEK_CUR, \p SEEK_END
+ * @return absolute position in file
+ */
int32_t seek(int32_t pos, uint32_t whence);
-/* Set the name of the virus we have found */
+/**
+ * Sets the name of the virus found.
+ *
+ * @param[in] name the name of the virus
+ * @param[in] len length of the virusname
+ * @return 0
+ */
uint32_t setvirusname(const uint8_t *name, uint32_t len);
+/**
+ * Prints a debug message.
+ *
+ * @param[in] str Message to print
+ * @param[in] len length of message to print
+ * @return 0
+ */
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);
-// disassembles at current file position, use lseek to disasm someplace else
-uint32_t disasm_x86(struct DISASM_RESULT*, uint32_t len);
+/**
+ * Disassembles starting from current file position, the specified amount of
+ * bytes.
+ * @param[out] result pointer to struct holding result
+ * @param[in] len how many bytes to disassemble
+ * @return 0 for success
+ *
+ * You can use lseek to disassemble starting from a different location.
+ * This is a low-level API, the result is in ClamAV type-8 signature format
+ * (64 bytes/instruction).
+ * \sa DisassembleAt
+ * */
+uint32_t disasm_x86(struct DISASM_RESULT* result, uint32_t len);
#endif
#endif
diff --git a/libclamav/bytecode_api_decl.c b/libclamav/bytecode_api_decl.c
index b6ab686..81806d3 100644
--- a/libclamav/bytecode_api_decl.c
+++ b/libclamav/bytecode_api_decl.c
@@ -38,12 +38,12 @@ uint32_t cli_bcapi_disasm_x86(struct cli_bc_ctx *ctx, struct DISASM_RESULT*, uin
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, 82,
((char*)&((struct cli_bc_ctx*)0)->hooks.match_counts - (char*)NULL)},
{"__clambc_exeinfo", GLOBAL_EXEINFO, 79,
((char*)&((struct cli_bc_ctx*)0)->hooks.exeinfo - (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 */
diff --git a/libclamav/bytecode_hooks.h b/libclamav/bytecode_hooks.h
index a0edad6..3c8cb75 100644
--- a/libclamav/bytecode_hooks.h
+++ b/libclamav/bytecode_hooks.h
@@ -23,9 +23,9 @@
#define BYTECODE_HOOKS_H
struct cli_bc_hooks {
+ const uint16_t* kind;
const uint32_t* match_counts;
const struct cli_exe_info* exeinfo;
- const uint16_t* kind;
const struct cli_pe_hook_data* pedata;
};
#endif
diff --git a/libclamav/execs.h b/libclamav/execs.h
index 697e138..7a90b44 100644
--- a/libclamav/execs.h
+++ b/libclamav/execs.h
@@ -24,23 +24,30 @@
#include "cltypes.h"
#include "bcfeatures.h"
#include <sys/types.h>
-
+/** @file */
+/** Section of executable file */
struct cli_exe_section {
- uint32_t rva;
- uint32_t vsz;
- uint32_t raw;
- uint32_t rsz;
- uint32_t chr;
- uint32_t urva; /* PE - unaligned VirtualAddress */
- uint32_t uvsz; /* PE - unaligned VirtualSize */
- uint32_t uraw; /* PE - unaligned PointerToRawData */
- uint32_t ursz; /* PE - unaligned SizeOfRawData */
+ uint32_t rva;/**< Relative VirtualAddress */
+ uint32_t vsz;/**< VirtualSize */
+ uint32_t raw;/**< Raw offset (in file) */
+ uint32_t rsz;/**< Raw size (in file) */
+ uint32_t chr;/**< Section characteristics */
+ uint32_t urva; /**< PE - unaligned VirtualAddress */
+ uint32_t uvsz; /**< PE - unaligned VirtualSize */
+ uint32_t uraw; /**< PE - unaligned PointerToRawData */
+ uint32_t ursz; /**< PE - unaligned SizeOfRawData */
};
+/** Executable file information */
struct cli_exe_info {
+ /** Information about all the sections of this file.
+ * This array has \p nsection elements */
struct cli_exe_section *section EBOUNDS(nsections);
+ /** Offset where this executable start in file (nonzero if embedded) */
uint32_t offset;
+ /** Entrypoint of executable */
uint32_t ep;
+ /** Number of sections*/
uint16_t nsections;
};
diff --git a/libclamav/pe.h b/libclamav/pe.h
index 35cab9e..993c97c 100644
--- a/libclamav/pe.h
+++ b/libclamav/pe.h
@@ -25,46 +25,49 @@
#include "execs.h"
#include "others.h"
#include "cltypes.h"
-
+/** @file */
+/** Header for this PE file */
struct pe_image_file_hdr {
- uint32_t Magic;
- uint16_t Machine;
- uint16_t NumberOfSections;
- uint32_t TimeDateStamp; /* unreliable */
- uint32_t PointerToSymbolTable; /* debug */
- uint32_t NumberOfSymbols; /* debug */
- uint16_t SizeOfOptionalHeader; /* == 224 */
+ uint32_t Magic; /**< PE magic header: PE\\0\\0 */
+ uint16_t Machine;/**< CPU this executable runs on, see libclamav/pe.c for possible values */
+ uint16_t NumberOfSections;/**< Number of sections in this executable */
+ uint32_t TimeDateStamp; /**< Unreliable */
+ uint32_t PointerToSymbolTable; /**< debug */
+ uint32_t NumberOfSymbols; /**< debug */
+ uint16_t SizeOfOptionalHeader; /**< == 224 */
uint16_t Characteristics;
};
+/** PE data directory header */
struct pe_image_data_dir {
uint32_t VirtualAddress;
uint32_t Size;
};
+/** 32-bit PE optional header */
struct pe_image_optional_hdr32 {
uint16_t Magic;
- uint8_t MajorLinkerVersion; /* unreliable */
- uint8_t MinorLinkerVersion; /* unreliable */
- uint32_t SizeOfCode; /* unreliable */
- uint32_t SizeOfInitializedData; /* unreliable */
- uint32_t SizeOfUninitializedData; /* unreliable */
+ uint8_t MajorLinkerVersion; /**< unreliable */
+ uint8_t MinorLinkerVersion; /**< unreliable */
+ uint32_t SizeOfCode; /**< unreliable */
+ uint32_t SizeOfInitializedData; /**< unreliable */
+ uint32_t SizeOfUninitializedData; /**< unreliable */
uint32_t AddressOfEntryPoint;
uint32_t BaseOfCode;
uint32_t BaseOfData;
- uint32_t ImageBase; /* multiple of 64 KB */
- uint32_t SectionAlignment; /* usually 32 or 4096 */
- uint32_t FileAlignment; /* usually 32 or 512 */
- uint16_t MajorOperatingSystemVersion; /* not used */
- uint16_t MinorOperatingSystemVersion; /* not used */
- uint16_t MajorImageVersion; /* unreliable */
- uint16_t MinorImageVersion; /* unreliable */
+ uint32_t ImageBase; /**< multiple of 64 KB */
+ uint32_t SectionAlignment; /**< usually 32 or 4096 */
+ uint32_t FileAlignment; /**< usually 32 or 512 */
+ uint16_t MajorOperatingSystemVersion; /**< not used */
+ uint16_t MinorOperatingSystemVersion; /**< not used */
+ uint16_t MajorImageVersion; /** unreliable */
+ uint16_t MinorImageVersion; /** unreliable */
uint16_t MajorSubsystemVersion;
uint16_t MinorSubsystemVersion;
uint32_t Win32VersionValue; /* ? */
uint32_t SizeOfImage;
uint32_t SizeOfHeaders;
- uint32_t CheckSum; /* NT drivers only */
+ uint32_t CheckSum; /**< NT drivers only */
uint16_t Subsystem;
uint16_t DllCharacteristics;
uint32_t SizeOfStackReserve;
@@ -72,32 +75,33 @@ struct pe_image_optional_hdr32 {
uint32_t SizeOfHeapReserve;
uint32_t SizeOfHeapCommit;
uint32_t LoaderFlags; /* ? */
- uint32_t NumberOfRvaAndSizes; /* unreliable */
+ uint32_t NumberOfRvaAndSizes; /**< unreliable */
struct pe_image_data_dir DataDirectory[16];
};
+/** PE 64-bit optional header */
struct pe_image_optional_hdr64 {
uint16_t Magic;
- uint8_t MajorLinkerVersion; /* unreliable */
- uint8_t MinorLinkerVersion; /* unreliable */
- uint32_t SizeOfCode; /* unreliable */
- uint32_t SizeOfInitializedData; /* unreliable */
- uint32_t SizeOfUninitializedData; /* unreliable */
+ uint8_t MajorLinkerVersion; /**< unreliable */
+ uint8_t MinorLinkerVersion; /**< unreliable */
+ uint32_t SizeOfCode; /**< unreliable */
+ uint32_t SizeOfInitializedData; /**< unreliable */
+ uint32_t SizeOfUninitializedData; /**< unreliable */
uint32_t AddressOfEntryPoint;
uint32_t BaseOfCode;
- uint64_t ImageBase; /* multiple of 64 KB */
- uint32_t SectionAlignment; /* usually 32 or 4096 */
- uint32_t FileAlignment; /* usually 32 or 512 */
- uint16_t MajorOperatingSystemVersion; /* not used */
- uint16_t MinorOperatingSystemVersion; /* not used */
- uint16_t MajorImageVersion; /* unreliable */
- uint16_t MinorImageVersion; /* unreliable */
+ uint64_t ImageBase; /**< multiple of 64 KB */
+ uint32_t SectionAlignment; /**< usually 32 or 4096 */
+ uint32_t FileAlignment; /**< usually 32 or 512 */
+ uint16_t MajorOperatingSystemVersion; /**< not used */
+ uint16_t MinorOperatingSystemVersion; /**< not used */
+ uint16_t MajorImageVersion; /**< unreliable */
+ uint16_t MinorImageVersion; /**< unreliable */
uint16_t MajorSubsystemVersion;
uint16_t MinorSubsystemVersion;
uint32_t Win32VersionValue; /* ? */
uint32_t SizeOfImage;
uint32_t SizeOfHeaders;
- uint32_t CheckSum; /* NT drivers only */
+ uint32_t CheckSum; /**< NT drivers only */
uint16_t Subsystem;
uint16_t DllCharacteristics;
uint64_t SizeOfStackReserve;
@@ -105,12 +109,13 @@ struct pe_image_optional_hdr64 {
uint64_t SizeOfHeapReserve;
uint64_t SizeOfHeapCommit;
uint32_t LoaderFlags; /* ? */
- uint32_t NumberOfRvaAndSizes; /* unreliable */
+ uint32_t NumberOfRvaAndSizes; /**< unreliable */
struct pe_image_data_dir DataDirectory[16];
};
+/** PE section header */
struct pe_image_section_hdr {
- uint8_t Name[8]; /* may not end with NULL */
+ uint8_t Name[8]; /**< may not end with NULL */
/*
union {
uint32_t PhysicalAddress;
@@ -119,23 +124,24 @@ struct pe_image_section_hdr {
*/
uint32_t VirtualSize;
uint32_t VirtualAddress;
- uint32_t SizeOfRawData; /* multiple of FileAlignment */
- uint32_t PointerToRawData; /* offset to the section's data */
- uint32_t PointerToRelocations; /* object files only */
- uint32_t PointerToLinenumbers; /* object files only */
- uint16_t NumberOfRelocations; /* object files only */
- uint16_t NumberOfLinenumbers; /* object files only */
+ uint32_t SizeOfRawData; /**< multiple of FileAlignment */
+ uint32_t PointerToRawData; /**< offset to the section's data */
+ uint32_t PointerToRelocations; /**< object files only */
+ uint32_t PointerToLinenumbers; /**< object files only */
+ uint16_t NumberOfRelocations; /**< object files only */
+ uint16_t NumberOfLinenumbers; /**< object files only */
uint32_t Characteristics;
};
+/** Data for the bytecode PE hook */
struct cli_pe_hook_data {
struct cli_exe_info exe_info;
struct pe_image_file_hdr *file_hdr;
struct pe_image_optional_hdr32 *opt32;
struct pe_image_optional_hdr64 *opt64;
struct pe_image_data_dir *dirs;
- uint32_t overlays;
- int32_t overlays_sz;
+ uint32_t overlays;/**< number of overlays */
+ int32_t overlays_sz;/**< size of overlays */
};
int cli_scanpe(int desc, cli_ctx *ctx);
diff --git a/unit_tests/input/apicalls.cbc b/unit_tests/input/apicalls.cbc
index 999a094..52d1cfb 100644
--- a/unit_tests/input/apicalls.cbc
+++ b/unit_tests/input/apicalls.cbc
@@ -1,17 +1,19 @@
-ClamBCaa`|``````|`ahafp`clamcoincidencejb
+ClamBCaa`|``````|`agafp`clamcoincidencejb
-Tedaa`ab`badacb`bb`bb`b
-Eabaaabbgd|afdgefcgdgac``
+Tedaa`acb`bb`bb`b
+Eabaaabbfd|afdgefcgdgac``
G``
-A`b`bLacb`baab`bFadaa
+A`b`bLacb`b`aa`b`b`Fadaa
Bb`b`abbabHonnkm``odHm``oonnkdaaaaeab`b`Hhgfedcbadb`baboaaaDm``odDmjnmdTcab`babE
-Aab`bLabahaab`bFacaa
+Aab`bLabah`aa`b`b`Facaa
Baaaaeaah`Bgaab`baboaaaDm``odDmjnmdTcab`babE
-Aab`bLabb`aaab`bFacaa
+Aab`bLabb`a`aa`b`b`Facaa
Baaaaeab`a`Dhbgabb`baboaaaDm``odDmjnmdTcab`babE
-Aab`bLabb`baab`bFacaa
+Aab`bLabb`b`aa`b`b`Facaa
Baaaaeab`b`Fichbgadb`baboaaaDm``odDmjnmdTcab`babE
-Aab`bLabb`daab`bFacaa
+Aab`bLabb`d`aa`b`b`Facaa
Baaaaeab`d`Ncgbfae`dichbgahb`baboaaaDm``odDmjnmdTcab`babE
-Abb`bLadahb`aaaaaaab`bFaeaa
-Baaabeaah`Bhbaaaaceab`aaaDdcbabaaadk`acabb`baeoaadDm``odDmjnmdTcab`baeE
+Abb`bLacah`b`a`aa`aa`b`b`Fafac
+Baaabeaah`BhbaTaaabaaab
+Baaaceab`aaaDdcbabb`badoaacDm``odDmjnmdTcab`bad
+BTcab`bDmjnmdE
diff --git a/unit_tests/input/apicalls2.cbc b/unit_tests/input/apicalls2.cbc
index 740f97a..5406399 100644
--- a/unit_tests/input/apicalls2.cbc
+++ b/unit_tests/input/apicalls2.cbc
@@ -1,19 +1,21 @@
-ClamBCaa`|``````|`alafp`clamcoincidencejb
+ClamBCaa`|``````|`akafp`clamcoincidencejb
-Tedaa`cabkdebkdab`badacb`bbkdb`bacb`bb`bb`bebfd
-Eababaabid|afdgefcgdg`c``abbjd|afdgefcgdgac``
+Tedaa`cabjdebjdacb`bbjdb`bacb`bb`bb`bebfd
+Eababaabhd|afdgefcgdg`c``abbid|afdgefcgdgac``
G``
-A`b`bLahbfdbgd`b`baab`baab`bFajac
+A`b`bLahbfdabgd```b`b`aa`b`b`aa`b`b`Fajac
Bbgdaadb`@d at d``bb``b`bacabbabHonnkm``odHm``oonnkdaaadeab`bacHhgfedcbadTaaadaaab
Bb`baeabbaa`Honnkmjnmdaaafeab`baeHhgfedcbadb`bagoaafDm``odDmjnmdTcab`bag
BTcab`bDmjnmdE
-Aab`bLabahaab`bFacaa
+Aab`bLabah`aa`b`b`Facaa
Baaaaeaah`Bgaab`baboaaaDm``odDmjnmdTcab`babE
-Aab`bLabb`aaab`bFacaa
+Aab`bLabb`a`aa`b`b`Facaa
Baaaaeab`a`Dhbgabb`baboaaaDm``odDmjnmdTcab`babE
-Aab`bLabb`baab`bFacaa
+Aab`bLabb`b`aa`b`b`Facaa
Baaaaeab`b`Fichbgadb`baboaaaDm``odDmjnmdTcab`babE
-Aab`bLabb`daab`bFacaa
+Aab`bLabb`d`aa`b`b`Facaa
Baaaaeab`d`Ncgbfae`dichbgahb`baboaaaDm``odDmjnmdTcab`babE
-Abb`bLadahb`aaaaaaab`bFaeaa
-Baaabeaah`Bhbaaaaceab`aaaDdcbabaaadk`acabb`baeoaadDm``odDmjnmdTcab`baeE
+Abb`bLacah`b`a`aa`aa`b`b`Fafac
+Baaabeaah`BhbaTaaabaaab
+Baaaceab`aaaDdcbabb`badoaacDm``odDmjnmdTcab`bad
+BTcab`bDmjnmdE
diff --git a/unit_tests/input/arith.cbc b/unit_tests/input/arith.cbc
index e2865a3..b274a27 100644
--- a/unit_tests/input/arith.cbc
+++ b/unit_tests/input/arith.cbc
@@ -1,99 +1,99 @@
-ClamBCaa`|``````|`agbbep`clamcoincidencejb
+ClamBCaa`|``````|`afbbep`clamcoincidencejb
-Tedaa`ab`bad
+Tedaa`
E``
G``
-A`b`bLbabb`bb`bb`bb`bb`bb`bb`bb`bb`bb`bb`bb`bb`bb`bb`bb`bb`bb`bb`bb`bb`bb`bb`bb`bb`bb`bb`bb`bb`bb`bb`bb`bb`bFbbbaa
+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`bnbb`baa`b`blcb`bab`b`bdcb`bac`b`bncb`bad`b`bgcb`bae`b`bfcb`baf`b`bkcb`bag`b`bccb`bah`b`b`cb`bai`b`bobb`baj`b`becb`bak`b`bocb`bal`b`bjcb`bam`b`b`db`ban`b`bmcb`bao`b`bacb`bb`a`b`bhcb`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
-Abb`aLaab`ab`ab`aFabaa
+Abb`aLaab`a`b`a`b`a`Fabaa
Bb`aaba`aa`Tcab`aabE
-Abb`bLaab`bb`bb`bFabaa
+Abb`bLaab`b`b`b`b`b`Fabaa
Bb`baba`aa`Tcab`babE
-Abb`dLaab`db`db`dFabaa
+Abb`dLaab`d`b`d`b`d`Fabaa
Bb`daba`aa`Tcab`dabE
-AbahLaaahahahFabaa
+AbahLaaah`ah`ah`Fabaa
Bahaba`aa`TcaahabE
-Abb`aLaab`ab`ab`aFabaa
+Abb`aLaab`a`b`a`b`a`Fabaa
Bb`aabk`aa`Tcab`aabE
-Abb`bLaab`bb`bb`bFabaa
+Abb`bLaab`b`b`b`b`b`Fabaa
Bb`babk`aa`Tcab`babE
-Abb`dLaab`db`db`dFabaa
+Abb`dLaab`d`b`d`b`d`Fabaa
Bb`dabk`aa`Tcab`dabE
-AbahLaaahahahFabaa
+AbahLaaah`ah`ah`Fabaa
Bahabk`aa`TcaahabE
-Abb`aLadb`ab`ab`bb`bb`bb`aFaeaa
+Abb`aLadb`a`b`a`b`b`b`b`b`b`b`a`Faeaa
Bb`babo``b`baco`aab`badj`abacb`aaen`adTcab`aaeE
-Abb`bLaab`bb`bb`bFabaa
+Abb`bLaab`b`b`b`b`b`Fabaa
Bb`babj``aaTcab`babE
-Abb`dLaab`db`db`dFabaa
+Abb`dLaab`d`b`d`b`d`Fabaa
Bb`dabj``aaTcab`dabE
-AbahLadahahb`bb`bb`bahFaeaa
+AbahLadah`ah`b`b`b`b`b`b`ah`Faeaa
Bb`babo``b`baco`aab`badj`abacahaen`adTcaahaeE
-Aab`bLaab`bb`bFabaa
+Aab`bLaab`b`b`b`Fabaa
Bb`baae`Aad`Tcab`baaE
-Abb`aLacb`ab`bb`bb`bb`aFadaa
+Abb`aLacb`a`b`b`b`b`b`b`b`a`Fadaa
Bb`bab`a`b`baci`abaab`aadn`acTcab`aadE
-Abb`bLaab`bb`bb`bFabaa
+Abb`bLaab`b`b`b`b`b`Fabaa
Bb`babi``aaTcab`babE
-Abb`dLabb`db`bb`db`dFacaa
+Abb`dLabb`d`b`b`b`d`b`d`Facaa
Bb`dab`aaab`daci``abTcab`dacE
-AbahLacahb`bb`bb`bahFadaa
+AbahLacah`b`b`b`b`b`b`ah`Fadaa
Bb`bab`a`b`baci`abaaahadn`acTcaahadE
-Abb`aLaab`ab`ab`aFabaa
+Abb`aLaab`a`b`a`b`a`Fabaa
Bb`aabc`aa`Tcab`aabE
-Abb`bLaab`bb`bb`bFabaa
+Abb`bLaab`b`b`b`b`b`Fabaa
Bb`babc`aa`Tcab`babE
-Abb`dLaab`db`db`dFabaa
+Abb`dLaab`d`b`d`b`d`Fabaa
Bb`dabc`aa`Tcab`dabE
-AbahLaaahahahFabaa
+AbahLaaah`ah`ah`Fabaa
Bahabc`aa`TcaahabE
-Abb`aLaab`ab`ab`aFabaa
+Abb`aLaab`a`b`a`b`a`Fabaa
Bb`aabl`aa`Tcab`aabE
-Abb`bLaab`bb`bb`bFabaa
+Abb`bLaab`b`b`b`b`b`Fabaa
Bb`babl`aa`Tcab`babE
-Abb`dLaab`db`db`dFabaa
+Abb`dLaab`d`b`d`b`d`Fabaa
Bb`dabl`aa`Tcab`dabE
-AbahLaaahahahFabaa
+AbahLaaah`ah`ah`Fabaa
Bahabl`aa`TcaahabE
-Abb`aLadb`ab`ab`bb`bb`bb`aFaeaa
+Abb`aLadb`a`b`a`b`b`b`b`b`b`b`a`Faeaa
Bb`babo``b`baco`aab`bade`abacb`aaen`adTcab`aaeE
-Abb`bLaab`bb`bb`bFabaa
+Abb`bLaab`b`b`b`b`b`Fabaa
Bb`babe``aaTcab`babE
-Abb`dLaab`db`db`dFabaa
+Abb`dLaab`d`b`d`b`d`Fabaa
Bb`dabe``aaTcab`dabE
-AbahLadahahb`bb`bb`bahFaeaa
+AbahLadah`ah`b`b`b`b`b`b`ah`Faeaa
Bb`babo``b`baco`aab`bade`abacahaen`adTcaahaeE
-Aab`bLaab`ab`bFabaa
+Aab`bLaab`a`b`b`Fabaa
Bb`baao``Tcab`baaE
-Aab`dLaab`bb`dFabaa
+Aab`dLaab`b`b`d`Fabaa
Bb`daao``Tcab`daaE
-Aab`aLaaahb`aFabaa
+Aab`aLaaah`b`a`Fabaa
Bb`aaao``Tcab`aaaE
-Abb`aLacb`ab`bb`bb`bb`aFadaa
+Abb`aLacb`a`b`b`b`b`b`b`b`a`Fadaa
Bb`babo``b`bach`abaab`aadn`acTcab`aadE
-Abb`bLaab`bb`bb`bFabaa
+Abb`bLaab`b`b`b`b`b`Fabaa
Bb`babh``aaTcab`babE
-Abb`dLabb`db`bb`db`dFacaa
+Abb`dLabb`d`b`b`b`d`b`d`Facaa
Bb`dab`aaab`dach``abTcab`dacE
-AbahLacahb`bb`bb`bahFadaa
+AbahLacah`b`b`b`b`b`b`ah`Fadaa
Bb`babo``b`bach`abaaahadn`acTcaahadE
-Abb`aLadb`ab`ab`bb`bb`bb`aFaeaa
+Abb`aLadb`a`b`a`b`b`b`b`b`b`b`a`Faeaa
Bb`babo``b`baco`aab`badg`abacb`aaen`adTcab`aaeE
-Abb`bLaab`bb`bb`bFabaa
+Abb`bLaab`b`b`b`b`b`Fabaa
Bb`babg``aaTcab`babE
-Abb`dLaab`db`db`dFabaa
+Abb`dLaab`d`b`d`b`d`Fabaa
Bb`dabg``aaTcab`dabE
-AbahLadahahb`bb`bb`bahFaeaa
+AbahLadah`ah`b`b`b`b`b`b`ah`Faeaa
Bb`babo``b`baco`aab`badg`abacahaen`adTcaahaeE
-Abb`aLaab`ab`ab`aFabaa
+Abb`aLaab`a`b`a`b`a`Fabaa
Bb`aabb``aaTcab`aabE
-Abb`bLaab`bb`bb`bFabaa
+Abb`bLaab`b`b`b`b`b`Fabaa
Bb`babb``aaTcab`babE
-Abb`dLaab`db`db`dFabaa
+Abb`dLaab`d`b`d`b`d`Fabaa
Bb`dabb``aaTcab`dabE
-AbahLaaahahahFabaa
+AbahLaaah`ah`ah`Fabaa
Bahabb``aaTcaahabE
-A`b`bLb`cahaab`bahaab`bahaab`bahaab`bb`aaab`bb`aaab`bb`aaab`bb`aaab`bb`baab`bb`baab`bb`baab`bb`baab`bb`daab`bb`daab`bb`daab`bb`daab`bFbaebab
+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
Bah``bbaeAaaAaaaaaaeaah`AbaTaaaaabaa
Bb`bab`baan at dTcab`bab
Bahac`bbaeAaaBooaaaadeaahac at aTaaadadac
@@ -127,7 +127,7 @@ Bb`bblb`baan at dTcab`bblb
Bb`dbmb`bbadPoooooooooooooooohAahaabnbeab`dbmb at hTaabnbb`bboa
Bb`bbob`baan at dTcab`bbob
BTcab`bAadE
-A`b`bLalahaab`bb`aaab`bb`baab`bb`daab`bFbeaai
+A`b`bLalah`aa`b`b`b`a`aa`b`b`b`b`aa`b`b`b`d`aa`b`b`Fbeaai
Bah``bbaiBjeaAoaaaaaeaah`AjaTaaaaabaa
Bb`bab`baan at dTcab`bab
Bb`aac`bbafDlkjebD```obaaadeab`aacD```ebTaaadadac
@@ -137,13 +137,13 @@ Bb`bah`baan at dTcab`bah
Bb`dai`bbahPdcbahgfedcbalkjehG``````ohaaajeab`daiG``````fhTaaajahag
Bb`bak`baan at dTcab`bak
BTcab`bE````ddE
-A`b`bLafahaab`bahaab`bFakae
+A`b`bLafah`aa`b`b`ah`aa`b`b`Fakae
Bah``bbamBnoaAaaaaaaeaah`BooaTaaaaabaa
Bb`bab`baan at dTcab`bab
Bahac`bbamBngaAaaaaadeaahacBocaTaaadadac
Bb`bae`baan at dTcab`bae
BTcab`bE````adE
-A`b`bLaob`baab`bb`baab`bb`baab`bb`baab`bb`baab`bFbjaak
+A`b`bLaob`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`Fbjaak
Bb`b``bdbbcHoooooooodAbd at dAddaaaaeab`b`CijbdTaaaaabaa
Bb`bab`baan at dTcab`bab
Bb`bac`bdbbcHoooooooodHoooooooodAadHoooooooodaaadeab`bacCbbcdTaaadadac
@@ -155,15 +155,15 @@ Bb`bak`baan at dTcab`bak
Bb`bal`bdbbcHooooooood at d@dHoooooooodaaameab`balBkbdTaaamajai
Bb`ban`baan at dTcab`ban
BTcab`bH```````ddE
-Adb`bLbmab`bb`bb`bb`baab`baab`bb`baab`bb`baab`bb`baab`bb`baab`bb`baab`bb`baab`bb`baab`bb`baab`bb`bFbnaaa
+Adb`bLbmab`b`b`b`b`b`b`b`aa`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`Fbnaaa
Baaadnab`b`aab`bae`aadaaafkab`baaabb`bagl`aeAbdb`bahoaafaeagaaaikab`b`aab`bajl`ahAddb`bakoaaiajahaaalnab`baaabb`baml`akAhdb`banoaalakamaaaoiab`b`acb`bb`al`anB`adb`bbaaoaaob`aanaabbagab`baaacb`bbcal`baaB`bdb`bbdaoabbabaabcaaabeaiab`babacb`bbfal`bdaB`ddb`bbgaoabeabdabfaaabhagab`b`acb`bbial`bgaB`hdb`bbjaoabhabiabgaaabkaeab`b`aab`bblal`bjaC``adb`bbmaoabkablabjaaabnaeab`baaabb`bboal`bmaC``bdb`bb`boabnabmaboaTcab`bb`bE
-A`b`bLagahaab`bahahaab`bFalae
+A`b`bLagah`aa`b`b`ah`ah`aa`b`b`Falae
Bah``bbbbaBnoaAadaaaaeaah`BogaTaaaaabaa
Bb`bab`baan at dTcab`bab
Bahac`bbaeBnoaAeaahad`bbbbaacAadaaaeeaahadAaaTaaaeadac
Bb`baf`baan at dTcab`baf
BTcab`bD```ddE
-A`b`bLb`cahaab`bahaab`bahaab`bahaab`bb`aaab`bb`aaab`bb`aaab`bb`aaab`bb`baab`bb`baab`bb`baab`bb`baab`bb`daab`bb`daab`bb`daab`bb`daab`bFbaebab
+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
Bah``bbbfaBooaAaaaaaaeaah`BooaTaaaaabaa
Bb`bab`baan at dTcab`bab
Bahac`bbbfaBooaBooaaaadeaahacAaaTaaadadac
@@ -197,7 +197,7 @@ Bb`bblb`baan at dTcab`bblb
Bb`dbmb`bbbeaImaghnanbdhIogjdckg`bhaabnbeab`dbmbPcfifjghokjjemflghTaabnbb`bboa
Bb`bbob`baan at dTcab`bbob
BTcab`bB`adE
-A`b`bLalahaab`bb`aaab`bb`baab`bb`daab`bFbeaai
+A`b`bLalah`aa`b`b`b`a`aa`b`b`b`b`aa`b`b`b`d`aa`b`b`Fbeaai
Bah``bbbjaBjeaAoaaaaaeaah`BoeaTaaaaabaa
Bb`bab`baan at dTcab`bab
Bb`aac`bbbgaDlkjebD```obaaadeab`aacDlkjobTaaadadac
@@ -207,7 +207,7 @@ Bb`bah`baan at dTcab`bah
Bb`dai`bbbiaPdcbahgfedcbalkjehG``````ohaaajeab`daiPdcbahgoedcbalkjehTaaajahag
Bb`bak`baan at dTcab`bak
BTcab`bF`````adE
-A`b`bLaoahaab`bahaab`bahaab`bb`aaab`bb`aaab`bFbjaak
+A`b`bLaoah`aa`b`b`ah`aa`b`b`ah`aa`b`b`b`a`aa`b`b`b`a`aa`b`b`Fbjaak
Bah``bbbibBooaAaaaaaaeaah`@aTaaaaabaa
Bb`bab`baan at dTcab`bab
Bahac`bbbkdBooaAaaaaadeaahac at aTaaadadac
@@ -219,7 +219,7 @@ Bb`bak`baan at dTcab`bak
Bb`aal`bbbhdDinmobAgbaaameab`aalAfbTaaamajai
Bb`ban`baan at dTcab`ban
BTcab`bC``ddE
-A`b`bLbfaahaab`bahaab`bahaab`bahaab`bahahaab`bahaab`bb`aaab`bFbebao
+A`b`bLbfaah`aa`b`b`ah`aa`b`b`ah`aa`b`b`ah`aa`b`b`ah`ah`aa`b`b`ah`aa`b`b`b`a`aa`b`b`Fbebao
Bah``bbbnaAaaBooaaaaaeaah`BooaTaaaaabaa
Bb`bab`baan at dTcab`bab
Bahac`bbbnaBooaAaaaaadeaahacBooaTaaadadac
@@ -235,15 +235,15 @@ Bb`bbba`baan at dTcab`bbba
Bb`abca`bbbkaDjnmobAgbaabdaeab`abcaDdkoobTaabdaanam
Bb`bbea`baan at dTcab`bbea
BTcab`bC``adE
-A`b`bLafb`baab`bb`baab`bFakae
+A`b`bLafb`b`aa`b`b`b`b`aa`b`b`Fakae
Bb`b``bcbicAddAedAfdaaaaeab`b`AedTaaaaabaa
Bb`bab`baan at dTcab`bab
Bb`bac`bcbic at dAedAfdaaadeab`bacAfdTaaadadac
Bb`bae`baan at dTcab`bae
BTcab`bH```````hdE
-Acb`bLabb`bb`bb`baab`bFacaa
+Acb`bLabb`b`b`b`b`b`aa`b`b`Facaa
Baaacfab`b`@db`badoaacaaabTcab`badE
-A`b`bLaib`aaab`bb`baab`bb`daab`bFb`aag
+A`b`bLaib`a`aa`b`b`b`b`aa`b`b`b`d`aa`b`b`Fb`aag
Bb`a``bababBloaaaaaeab`a`DlooobTaaaaabaa
Bb`bab`baan at dTcab`bab
Bb`bac`baboaDjooobaaadeab`bacHjooooooodTaaadadac
@@ -251,7 +251,7 @@ Bb`bae`baan at dTcab`bae
Bb`daf`bab`bHjooooooodaaageab`dafPjooooooooooooooohTaaagafae
Bb`bah`baan at dTcab`bah
BTcab`bG``````adE
-A`b`bLalahaab`bahaab`bahaab`bb`aaab`bFbeaai
+A`b`bLalah`aa`b`b`ah`aa`b`b`ah`aa`b`b`b`a`aa`b`b`Fbeaai
Bah``bbbebAaaAadaaaaeaah`AbaTaaaaabaa
Bb`bab`baan at dTcab`bab
Bahac`bbbebAaa at daaadeaahacAaaTaaadadac
@@ -261,7 +261,7 @@ Bb`bah`baan at dTcab`bah
Bb`aai`bbbbbDnojobAbdaaajeab`aaiDhoknbTaaajahag
Bb`bak`baan at dTcab`bak
BTcab`bD```adE
-A`b`bLbdbahaab`bahaab`bahaab`bb`aaab`bb`aaab`bb`aaab`bb`baab`bb`baab`bb`baab`bb`daab`bb`daab`bb`daab`bFbmcbia
+A`b`bLbdbah`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`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`Fbmcbia
Bah``bbbmbBooaAaaaaaaeaah`BnoaTaaaaabaa
Bb`bab`baan at dTcab`bab
Bahac`bbbmbAaaBooaaaadeaahacAbaTaaadadac
@@ -287,7 +287,7 @@ Bb`bb`b`baan at dTcab`bb`b
Bb`dbab`bbblbAahAahaabbbeab`dbab at hTaabbbbhabga
Bb`bbcb`baan at dTcab`bbcb
BTcab`bAddE
-A`b`bLaiahaab`bb`aaab`bb`baab`bFb`aag
+A`b`bLaiah`aa`b`b`b`a`aa`b`b`b`b`aa`b`b`Fb`aag
Bah``babadDmnnobaaaaeaah`BmnaTaaaaabaa
Bb`bab`baan at dTcab`bab
Bb`aac`babbdHmnnomjnmdaaadeab`aacDmnnobTaaadadac
@@ -295,11 +295,11 @@ Bb`bae`baan at dTcab`bae
Bb`baf`babcdPonnkmnnomjnmonnkhaaageab`bafHonnkmnnodTaaagafae
Bb`bah`baan at dTcab`bah
BTcab`bH```````adE
-A`b`bLacb`aaab`bFafac
+A`b`bLacb`a`aa`b`b`Fafac
Bb`a``bbbddDjnmobAgbaaaaeab`a`DfddbbTaaaaabaa
Bb`bab`baan at dTcab`bab
BTcab`bB`ddE
-A`b`bLalahaab`bb`aaab`bb`baab`bb`daab`bFbeaai
+A`b`bLalah`aa`b`b`b`a`aa`b`b`b`b`aa`b`b`b`d`aa`b`b`Fbeaai
Bah``bbbodBjeaB`oaaaaaeaah`BjjaTaaaaabaa
Bb`bab`baan at dTcab`bab
Bb`aac`bbbldDjejebD``oobaaadeab`aacDjeejbTaaadadac
@@ -309,7 +309,7 @@ Bb`bah`baan at dTcab`bah
Bb`dai`bbbndPjejejejejejejejehP``oooooooooooooohaaajeab`daiPjeejejejejejejejhTaaajahag
Bb`bak`baan at dTcab`bak
BTcab`bF`````ddE
-A`b`bLaib`aaab`bb`baab`bb`daab`bFb`aag
+A`b`bLaib`a`aa`b`b`b`b`aa`b`b`b`d`aa`b`b`Fb`aag
Bb`a``babbeBloaaaaaeab`a`BlobTaaaaabaa
Bb`bab`baan at dTcab`bab
Bb`bac`bab`eDlooobaaadeab`bacDlooodTaaadadac
@@ -317,39 +317,39 @@ Bb`bae`baan at dTcab`bae
Bb`daf`babaeHlooooooodaaageab`dafHlooooooohTaaagafae
Bb`bah`baan at dTcab`bah
BTcab`bG``````ddE
-AaahLaab`aahFabaa
+AaahLaab`a`ah`Fabaa
Bahaan``TcaahaaE
-Aab`aLaab`bb`aFabaa
+Aab`aLaab`b`b`a`Fabaa
Bb`aaan``Tcab`aaaE
-Aab`bLaab`db`bFabaa
+Aab`bLaab`d`b`b`Fabaa
Bb`baan``Tcab`baaE
-Abb`aLaab`ab`ab`aFabaa
+Abb`aLaab`a`b`a`b`a`Fabaa
Bb`aabd``aaTcab`aabE
-Abb`bLaab`bb`bb`bFabaa
+Abb`bLaab`b`b`b`b`b`Fabaa
Bb`babd``aaTcab`babE
-Abb`dLaab`db`db`dFabaa
+Abb`dLaab`d`b`d`b`d`Fabaa
Bb`dabd``aaTcab`dabE
-AbahLaaahahahFabaa
+AbahLaaah`ah`ah`Fabaa
Bahabd``aaTcaahabE
-Abb`aLaab`ab`ab`aFabaa
+Abb`aLaab`a`b`a`b`a`Fabaa
Bb`aabf``aaTcab`aabE
-Abb`bLaab`bb`bb`bFabaa
+Abb`bLaab`b`b`b`b`b`Fabaa
Bb`babf``aaTcab`babE
-Abb`dLaab`db`db`dFabaa
+Abb`dLaab`d`b`d`b`d`Fabaa
Bb`dabf``aaTcab`dabE
-AbahLaaahahahFabaa
+AbahLaaah`ah`ah`Fabaa
Bahabf``aaTcaahabE
-Abb`aLaab`ab`ab`aFabaa
+Abb`aLaab`a`b`a`b`a`Fabaa
Bb`aabm`aa`Tcab`aabE
-Abb`bLaab`bb`bb`bFabaa
+Abb`bLaab`b`b`b`b`b`Fabaa
Bb`babm`aa`Tcab`babE
-Abb`dLaab`db`db`dFabaa
+Abb`dLaab`d`b`d`b`d`Fabaa
Bb`dabm`aa`Tcab`dabE
-AbahLaaahahahFabaa
+AbahLaaah`ah`ah`Fabaa
Bahabm`aa`TcaahabE
-Aab`bLaab`ab`bFabaa
+Aab`bLaab`a`b`b`Fabaa
Bb`baa`a`Tcab`baaE
-Aab`dLaab`bb`dFabaa
+Aab`dLaab`b`b`d`Fabaa
Bb`daa`a`Tcab`daaE
-Aab`aLaaahb`aFabaa
+Aab`aLaaah`b`a`Fabaa
Bb`aaa`a`Tcab`aaaE
diff --git a/unit_tests/input/div0.cbc b/unit_tests/input/div0.cbc
index fdab586..d720b7f 100644
--- a/unit_tests/input/div0.cbc
+++ b/unit_tests/input/div0.cbc
@@ -1,9 +1,9 @@
-ClamBCaa`|``````|`agabp`clamcoincidencejb
+ClamBCaa`|``````|`afabp`clamcoincidencejb
-Tedaa`ab`bad
+Tedaa`
E``
G``
-A`b`bLaab`bFabaa
+A`b`bLaab`b`Fabaa
Bb`b``baab at dTcab`b`E
-Aab`bLaab`bb`bFabaa
+Aab`bLaab`b`b`b`Fabaa
Bb`baae`Aad`Tcab`baaE
diff --git a/unit_tests/input/lsig.cbc b/unit_tests/input/lsig.cbc
index 03cefe9..46342cb 100644
--- a/unit_tests/input/lsig.cbc
+++ b/unit_tests/input/lsig.cbc
@@ -1,11 +1,11 @@
-ClamBCaa`|``````|`bkaabp`clamcoincidencejb
+ClamBCaa`|``````|`bjaabp`clamcoincidencejb
Trojan.Foo.{A,B};Target:0;((0|1|2)=42,2);aabb;ffffffff;aaccee;f00d
-Tedebjeebieebheebgeebfeebeeebceebbeebadebcdaa`ab`badacb`bbadb`bdb`db`bchbadbdebadbdebadbdebadbdecab`bdagahdaiahdaeahdabbaddabahdakah
-Eafaaafbae|amcgefdgfgifbgegcgnfafmfef``
-Gd```hbeabjeBdeBbgBofBjfBafBnfBnbBfdBofBof@`bieBad@`bieBbd@`bhe at Aa@Ab`b`a@`b`aC``a`bgeBafBafBbfBbf@`bfeBffBffBffBffBffBffBffBff@`bgeBffB`cB`cBdf@`beeBafBafBcfBcfBefBef@`bce at Af@@AgAa at AhAc@AiAb`bad at Aa`bad at Ab`bad at Af`bad at Ag`bad at Ah`bad at Ai`bcdAcD```h`bcdAbD```h`bcd at D```h`bcdAaD```h`
-A`b`bLaeb`baaaabadb`bFahac
-Bb`b`gbBaa`aaaaiab`b`AbdTaaaaabaa
+Tedebieebheebgeebfeebeeebdeebbeebaeebadebcdaa`acb`bbadb`bdb`db`bchbadbcebadbcebadbcebadbcecab`bdagahdaiahdaeahdabbaddabahdakah
+Eafaaafb`e|amcgefdgfgifbgegcgnfafmfef``
+Gd```hbeabieBdeBbgBofBjfBafBnfBnbBfdBofBof@`bheBad@`bheBbd@`bge at Aa@Ab`b`a@`b`aC``a`bfeBafBafBbfBbf@`beeBffBffBffBffBffBffBffBff@`bfeBffB`cB`cBdf@`bdeBafBafBcfBcfBefBef@`bbe at Af@@AgAa at AhAc@AiAb`bad at Aa`bad at Ab`bad at Af`bad at Ag`bad at Ah`bad at Ai`bcdAcD```h`bcdAbD```h`bcdAaD```h`bcd at D```h`
+A`b`bLaeb`b`aa`aa`bad`b`b`Fahac
+Bb`b`gbBaa`aaaagab`b`AadTaaaaaaab
Baaabeab`b`AbdbadacoaabAk`Al`b`badabbafac at dTcab`b at d
BTcab`b at dE
-A`aaLb`ab`bb`bb`bb`bb`baaaaaaaab`bb`bb`bb`bb`baaaaFbaaaa
-Bb`b`gbBca`b`baagbBda`b`babgbBba`b`baca`aa`b`bada`acabaaaeeab`badBjbdaaaffab`b`@daaagfab`baa at daaahfab`bab at db`bai`aafb`baj`aagb`bak`aahb`bala`ajaib`bama`alakaaaneab`bamAbdaaaok`anaeTcaaaaoE
+A`aaLb`ab`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`Fbaaaa
+Bb`b`gbBda`b`baagbBca`b`babgbBba`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`anaeTcaaaaoE
diff --git a/unit_tests/input/retmagic.cbc b/unit_tests/input/retmagic.cbc
index bb956d2..bc3b8b1 100644
--- a/unit_tests/input/retmagic.cbc
+++ b/unit_tests/input/retmagic.cbc
@@ -1,6 +1,6 @@
-ClamBCaa`|``````|`agaap`clamcoincidencejb
+ClamBCaa`|``````|`afaap`clamcoincidencejb
-Tedaa`ab`bad
+Tedaa`
E``
G``
A`b`bL`Faaaa
--
Debian repository for ClamAV
More information about the Pkg-clamav-commits
mailing list