... | ... |
@@ -261,11 +261,12 @@ CL_VIRUS = Blacklisted by callback - scan result is set to CL_VIRUS |
261 | 261 |
extern void cl_engine_set_clcb_post_scan(struct cl_engine *engine, clcb_post_scan callback); |
262 | 262 |
|
263 | 263 |
|
264 |
-typedef int (*clcb_sigload)(const char *type, const char *name, void *context); |
|
264 |
+typedef int (*clcb_sigload)(const char *type, const char *name, unsigned int custom, void *context); |
|
265 | 265 |
/* SIGNATURE LOAD |
266 | 266 |
Input: |
267 | 267 |
type = The signature type (e.g. "db", "ndb", "mdb", etc.) |
268 | 268 |
name = The virus name |
269 |
+custom = The signature is official (custom == 0) or custom (custom != 0) |
|
269 | 270 |
context = Opaque application provided data |
270 | 271 |
|
271 | 272 |
Output: |
... | ... |
@@ -573,7 +573,7 @@ static int cli_loaddb(FILE *fs, struct cl_engine *engine, unsigned int *signo, u |
573 | 573 |
if(engine->ignored && cli_chkign(engine->ignored, start, buffer_cpy)) |
574 | 574 |
continue; |
575 | 575 |
|
576 |
- if(engine->cb_sigload && engine->cb_sigload("db", start, engine->cb_sigload_ctx)) { |
|
576 |
+ if(engine->cb_sigload && engine->cb_sigload("db", start, options & CL_DB_OFFICIAL, engine->cb_sigload_ctx)) { |
|
577 | 577 |
cli_dbgmsg("cli_loaddb: skipping %s due to callback\n", start); |
578 | 578 |
continue; |
579 | 579 |
} |
... | ... |
@@ -652,7 +652,7 @@ static int cli_loadidb(FILE *fs, struct cl_engine *engine, unsigned int *signo, |
652 | 652 |
if(engine->ignored && cli_chkign(engine->ignored, tokens[0], buffer_cpy)) |
653 | 653 |
continue; |
654 | 654 |
|
655 |
- if(engine->cb_sigload && engine->cb_sigload("idb", tokens[0], engine->cb_sigload_ctx)) { |
|
655 |
+ if(engine->cb_sigload && engine->cb_sigload("idb", tokens[0], options & CL_DB_OFFICIAL, engine->cb_sigload_ctx)) { |
|
656 | 656 |
cli_dbgmsg("cli_loadidb: skipping %s due to callback\n", tokens[0]); |
657 | 657 |
continue; |
658 | 658 |
} |
... | ... |
@@ -926,7 +926,7 @@ static int cli_loadndb(FILE *fs, struct cl_engine *engine, unsigned int *signo, |
926 | 926 |
if(engine->ignored && cli_chkign(engine->ignored, virname, buffer_cpy)) |
927 | 927 |
continue; |
928 | 928 |
|
929 |
- if(!sdb && engine->cb_sigload && engine->cb_sigload("ndb", virname, engine->cb_sigload_ctx)) { |
|
929 |
+ if(!sdb && engine->cb_sigload && engine->cb_sigload("ndb", virname, options & CL_DB_OFFICIAL, engine->cb_sigload_ctx)) { |
|
930 | 930 |
cli_dbgmsg("cli_loadndb: skipping %s due to callback\n", virname); |
931 | 931 |
continue; |
932 | 932 |
} |
... | ... |
@@ -1235,7 +1235,7 @@ static int load_oneldb(char *buffer, int chkpua, int chkign, struct cl_engine *e |
1235 | 1235 |
if (chkign && cli_chkign(engine->ignored, virname, buffer_cpy)) |
1236 | 1236 |
return CL_SUCCESS; |
1237 | 1237 |
|
1238 |
- if(engine->cb_sigload && engine->cb_sigload("ldb", virname, engine->cb_sigload_ctx)) { |
|
1238 |
+ if(engine->cb_sigload && engine->cb_sigload("ldb", virname, options & CL_DB_OFFICIAL, engine->cb_sigload_ctx)) { |
|
1239 | 1239 |
cli_dbgmsg("cli_loadldb: skipping %s due to callback\n", virname); |
1240 | 1240 |
(*sigs)--; |
1241 | 1241 |
return CL_SUCCESS; |
... | ... |
@@ -1443,7 +1443,7 @@ static int cli_loadcbc(FILE *fs, struct cl_engine *engine, unsigned int *signo, |
1443 | 1443 |
return CL_SUCCESS; |
1444 | 1444 |
} |
1445 | 1445 |
|
1446 |
- if(engine->cb_sigload && engine->cb_sigload("cbc", dbname, engine->cb_sigload_ctx)) { |
|
1446 |
+ if(engine->cb_sigload && engine->cb_sigload("cbc", dbname, options & CL_DB_OFFICIAL, engine->cb_sigload_ctx)) { |
|
1447 | 1447 |
cli_dbgmsg("cli_loadcbc: skipping %s due to callback\n", dbname); |
1448 | 1448 |
return CL_SUCCESS; |
1449 | 1449 |
} |
... | ... |
@@ -1948,7 +1948,7 @@ static int cli_loadhash(FILE *fs, struct cl_engine *engine, unsigned int *signo, |
1948 | 1948 |
dot = dbname; |
1949 | 1949 |
else |
1950 | 1950 |
dot++; |
1951 |
- if(engine->cb_sigload(dot, pt, engine->cb_sigload_ctx)) { |
|
1951 |
+ if(engine->cb_sigload(dot, pt, options & CL_DB_OFFICIAL, engine->cb_sigload_ctx)) { |
|
1952 | 1952 |
cli_dbgmsg("cli_loadhash: skipping %s (%s) due to callback\n", pt, dot); |
1953 | 1953 |
continue; |
1954 | 1954 |
} |
... | ... |
@@ -2090,7 +2090,7 @@ static int cli_loadmd(FILE *fs, struct cl_engine *engine, unsigned int *signo, i |
2090 | 2090 |
continue; |
2091 | 2091 |
} |
2092 | 2092 |
|
2093 |
- if(engine->cb_sigload && engine->cb_sigload("md", new->virname, engine->cb_sigload_ctx)) { |
|
2093 |
+ if(engine->cb_sigload && engine->cb_sigload("md", new->virname, options & CL_DB_OFFICIAL, engine->cb_sigload_ctx)) { |
|
2094 | 2094 |
cli_dbgmsg("cli_loadmd: skipping %s due to callback\n", new->virname); |
2095 | 2095 |
mpool_free(engine->mempool, new->virname); |
2096 | 2096 |
mpool_free(engine->mempool, new); |
... | ... |
@@ -2230,7 +2230,7 @@ static int cli_loadcdb(FILE *fs, struct cl_engine *engine, unsigned int *signo, |
2230 | 2230 |
continue; |
2231 | 2231 |
} |
2232 | 2232 |
|
2233 |
- if(engine->cb_sigload && engine->cb_sigload("cdb", new->virname, engine->cb_sigload_ctx)) { |
|
2233 |
+ if(engine->cb_sigload && engine->cb_sigload("cdb", new->virname, options & CL_DB_OFFICIAL, engine->cb_sigload_ctx)) { |
|
2234 | 2234 |
cli_dbgmsg("cli_loadcdb: skipping %s due to callback\n", new->virname); |
2235 | 2235 |
mpool_free(engine->mempool, new->virname); |
2236 | 2236 |
mpool_free(engine->mempool, new); |
... | ... |
@@ -441,7 +441,7 @@ int load_regex_matcher(struct cl_engine *engine,struct regex_matcher* matcher,FI |
441 | 441 |
if(functionality_level_check(buffer)) |
442 | 442 |
continue; |
443 | 443 |
|
444 |
- if(engine->cb_sigload && engine->cb_sigload("phishing", buffer, engine->cb_sigload_ctx)) { |
|
444 |
+ if(engine->cb_sigload && engine->cb_sigload("phishing", buffer, options & CL_DB_OFFICIAL, engine->cb_sigload_ctx)) { |
|
445 | 445 |
cli_dbgmsg("load_regex_matcher: skipping %s due to callback\n", buffer); |
446 | 446 |
continue; |
447 | 447 |
} |
... | ... |
@@ -250,8 +250,8 @@ BOOL interface_setup(void) { |
250 | 250 |
return TRUE; |
251 | 251 |
} |
252 | 252 |
|
253 |
-static int sigload_callback(const char *type, const char *name, void *context) { |
|
254 |
- if(minimal_definitions && strcmp(type, "fp")) |
|
253 |
+static int sigload_callback(const char *type, const char *name, unsigned int custom, void *context) { |
|
254 |
+ if(minimal_definitions && (custom || strcmp(type, "fp"))) |
|
255 | 255 |
return 1; |
256 | 256 |
return 0; |
257 | 257 |
} |