No functionality change.
Török Edvin authored on 2010/02/10 01:56:08... | ... |
@@ -45,6 +45,20 @@ |
45 | 45 |
#include "cltypes.h" |
46 | 46 |
#include "default.h" |
47 | 47 |
|
48 |
+static inline int matcher_run(const struct cli_matcher *root, |
|
49 |
+ const unsigned char *buffer, uint32_t length, |
|
50 |
+ const char **virname, struct cli_ac_data *mdata, |
|
51 |
+ uint32_t offset, |
|
52 |
+ cli_file_t ftype, |
|
53 |
+ int desc, |
|
54 |
+ struct cli_matched_type **ftoffset, |
|
55 |
+ unsigned int acmode) |
|
56 |
+{ |
|
57 |
+ int ret; |
|
58 |
+ if (root->ac_only || (ret = cli_bm_scanbuff(buffer, length, virname, root, offset, ftype, desc)) != CL_VIRUS) |
|
59 |
+ ret = cli_ac_scanbuff(buffer, length, virname, NULL, NULL, root, mdata, offset, ftype, desc, ftoffset, acmode, NULL); |
|
60 |
+ return ret; |
|
61 |
+} |
|
48 | 62 |
|
49 | 63 |
int cli_scanbuff(const unsigned char *buffer, uint32_t length, cli_ctx *ctx, cli_file_t ftype, struct cli_ac_data **acdata) |
50 | 64 |
{ |
... | ... |
@@ -76,8 +90,7 @@ int cli_scanbuff(const unsigned char *buffer, uint32_t length, cli_ctx *ctx, cli |
76 | 76 |
if(!acdata && (ret = cli_ac_initdata(&mdata, troot->ac_partsigs, troot->ac_lsigs, CLI_DEFAULT_AC_TRACKLEN))) |
77 | 77 |
return ret; |
78 | 78 |
|
79 |
- if(troot->ac_only || (ret = cli_bm_scanbuff(buffer, length, virname, troot, 0, ftype, -1)) != CL_VIRUS) |
|
80 |
- ret = cli_ac_scanbuff(buffer, length, virname, NULL, NULL, troot, acdata ? (acdata[0]) : (&mdata), 0, ftype, -1, NULL, AC_SCAN_VIR, NULL); |
|
79 |
+ ret = matcher_run(troot, buffer, length, virname, acdata ? (acdata[0]): (&mdata), 0, ftype, -1, NULL, AC_SCAN_VIR); |
|
81 | 80 |
|
82 | 81 |
if(!acdata) |
83 | 82 |
cli_ac_freedata(&mdata); |
... | ... |
@@ -89,8 +102,7 @@ int cli_scanbuff(const unsigned char *buffer, uint32_t length, cli_ctx *ctx, cli |
89 | 89 |
if(!acdata && (ret = cli_ac_initdata(&mdata, groot->ac_partsigs, groot->ac_lsigs, CLI_DEFAULT_AC_TRACKLEN))) |
90 | 90 |
return ret; |
91 | 91 |
|
92 |
- if(groot->ac_only || (ret = cli_bm_scanbuff(buffer, length, virname, groot, 0, ftype, -1)) != CL_VIRUS) |
|
93 |
- ret = cli_ac_scanbuff(buffer, length, virname, NULL, NULL, groot, acdata ? (acdata[1]) : (&mdata), 0, ftype, -1, NULL, AC_SCAN_VIR, NULL); |
|
92 |
+ ret = matcher_run(groot, buffer, length, virname, acdata ? (acdata[1]): (&mdata), 0, ftype, -1, NULL, AC_SCAN_VIR); |
|
94 | 93 |
|
95 | 94 |
if(!acdata) |
96 | 95 |
cli_ac_freedata(&mdata); |
... | ... |
@@ -328,8 +340,7 @@ int cli_scandesc(int desc, cli_ctx *ctx, cli_file_t ftype, uint8_t ftonly, struc |
328 | 328 |
length += maxpatlen; |
329 | 329 |
|
330 | 330 |
if(troot) { |
331 |
- if(troot->ac_only || (ret = cli_bm_scanbuff(upt, length, ctx->virname, troot, offset, ftype, desc)) != CL_VIRUS) |
|
332 |
- ret = cli_ac_scanbuff(upt, length, ctx->virname, NULL, NULL, troot, &tdata, offset, ftype, desc, ftoffset, acmode, NULL); |
|
331 |
+ ret = matcher_run(troot, upt, length, ctx->virname, &tdata, offset, ftype, desc, NULL, acmode); |
|
333 | 332 |
|
334 | 333 |
if(ret == CL_VIRUS) { |
335 | 334 |
free(buffer); |