Better error messages for bytecode loader.

0.96
Török Edvin 17 years ago
parent 966b72746a
commit f60a0e005e
  1. 13
      libclamav/bytecode.c
  2. 2
      libclamav/clambc.h

@ -464,26 +464,33 @@ int cli_bytecode_load(struct cli_bc *bc, FILE *f, struct cli_dbio *dbio)
while (cli_dbgets(buffer, FILEBUFF, f, dbio)) {
int rc;
cli_chomp(buffer);
row++;
switch (state) {
case PARSE_BC_HEADER:
rc = parseHeader(bc, (unsigned char*)buffer);
if (rc == CL_BREAK) /* skip */
return CL_SUCCESS;
if (rc != CL_SUCCESS)
if (rc != CL_SUCCESS) {
cli_errmsg("Error at bytecode line %u\n", row);
return rc;
}
state = PARSE_FUNC_HEADER;
break;
case PARSE_FUNC_HEADER:
rc = parseFunctionHeader(bc, current_func, (unsigned char*)buffer);
if (rc != CL_SUCCESS)
if (rc != CL_SUCCESS) {
cli_errmsg("Error at bytecode line %u\n", row);
return rc;
}
bb = 0;
state = PARSE_BB;
break;
case PARSE_BB:
rc = parseBB(bc, current_func, bb++, (unsigned char*)buffer);
if (rc != CL_SUCCESS)
if (rc != CL_SUCCESS) {
cli_errmsg("Error at bytecode line %u\n", row);
return rc;
}
if (bb >= bc->funcs[current_func].numBB) {
state = PARSE_FUNC_HEADER;
current_func++;

@ -25,7 +25,7 @@
struct bytecode_metadata {
unsigned long maxStack, maxMem;
unsigned long maxTime;
const char *targetExclude;
char *targetExclude;
};
#define BC_FUNC_LEVEL 1

Loading…
Cancel
Save