... | ... |
@@ -912,6 +912,11 @@ int recvloop_th(int *socketds, unsigned nsockets, struct cl_engine *engine, unsi |
912 | 912 |
options |= CL_SCAN_STRUCTURED_SSN_STRIPPED; |
913 | 913 |
} |
914 | 914 |
|
915 |
+#ifdef HAVE__INTERNAL__SHA_COLLECT |
|
916 |
+ if(optget(opts, "DevCollectHashes")->enabled) |
|
917 |
+ options |= CL_SCAN_INTERNAL_COLLECT_SHA; |
|
918 |
+#endif |
|
919 |
+ |
|
915 | 920 |
selfchk = optget(opts, "SelfCheck")->numarg; |
916 | 921 |
if(!selfchk) { |
917 | 922 |
logg("Self checking disabled.\n"); |
... | ... |
@@ -523,6 +523,11 @@ int scanmanager(const struct optstruct *opts) |
523 | 523 |
if(optget(opts, "algorithmic-detection")->enabled) |
524 | 524 |
options |= CL_SCAN_ALGORITHMIC; |
525 | 525 |
|
526 |
+#ifdef HAVE__INTERNAL__SHA_COLLECT |
|
527 |
+ if(optget(opts, "dev-collect-hashes")->enabled) |
|
528 |
+ options |= CL_SCAN_INTERNAL_COLLECT_SHA; |
|
529 |
+#endif |
|
530 |
+ |
|
526 | 531 |
if(optget(opts, "detect-structured")->enabled) { |
527 | 532 |
options |= CL_SCAN_STRUCTURED; |
528 | 533 |
|
... | ... |
@@ -109,6 +109,8 @@ typedef enum { |
109 | 109 |
#define CL_SCAN_PARTIAL_MESSAGE 0x40000 |
110 | 110 |
#define CL_SCAN_HEURISTIC_PRECEDENCE 0x80000 |
111 | 111 |
|
112 |
+#define CL_SCAN_INTERNAL_COLLECT_SHA 0x80000000 /* Enables hash output in sha-collect builds - for internal use only */ |
|
113 |
+ |
|
112 | 114 |
/* recommended scan settings */ |
113 | 115 |
#define CL_SCAN_STDOPT (CL_SCAN_ARCHIVE | CL_SCAN_MAIL | CL_SCAN_OLE2 | CL_SCAN_PDF | CL_SCAN_HTML | CL_SCAN_PE | CL_SCAN_ALGORITHMIC | CL_SCAN_ELF) |
114 | 116 |
|
... | ... |
@@ -394,7 +394,7 @@ int cli_checkfp(unsigned char *digest, size_t size, cli_ctx *ctx) |
394 | 394 |
cli_dbgmsg("FP SIGNATURE: %s:%u:%s\n", md5, (unsigned int) size, *ctx->virname ? *ctx->virname : "Name"); |
395 | 395 |
|
396 | 396 |
#ifdef HAVE__INTERNAL__SHA_COLLECT |
397 |
- if(ctx->sha_collect>0) { |
|
397 |
+ if((ctx->options & CL_SCAN_INTERNAL_COLLECT_SHA) && ctx->sha_collect>0) { |
|
398 | 398 |
SHA1Context sha1; |
399 | 399 |
SHA256_CTX sha256; |
400 | 400 |
fmap_t *map = *ctx->fmap; |
... | ... |
@@ -2345,7 +2345,7 @@ int cl_scandesc(int desc, const char **virname, unsigned long int *scanned, cons |
2345 | 2345 |
ctx.hook_lsig_matches = cli_bitset_init(); |
2346 | 2346 |
|
2347 | 2347 |
#ifdef HAVE__INTERNAL__SHA_COLLECT |
2348 |
- do { |
|
2348 |
+ if(scanoptions & CL_SCAN_INTERNAL_COLLECT_SHA) { |
|
2349 | 2349 |
char link[32]; |
2350 | 2350 |
ssize_t linksz; |
2351 | 2351 |
|
... | ... |
@@ -329,6 +329,10 @@ const struct clam_option __clam_options[] = { |
329 | 329 |
|
330 | 330 |
{ "DevACDepth", "dev-ac-depth", 0, TYPE_NUMBER, MATCH_NUMBER, -1, NULL, FLAG_HIDDEN, OPT_CLAMD | OPT_CLAMSCAN, "", "" }, |
331 | 331 |
|
332 |
+#ifdef HAVE__INTERNAL__SHA_COLLECT |
|
333 |
+ { "DevCollectHashes", "dev-collect-hashes", 0, TYPE_BOOL, MATCH_BOOL, -1, NULL, FLAG_HIDDEN, OPT_CLAMD | OPT_CLAMSCAN, "", "" }, |
|
334 |
+#endif |
|
335 |
+ |
|
332 | 336 |
/* Freshclam-only entries */ |
333 | 337 |
|
334 | 338 |
/* FIXME: drop this entry and use LogFile */ |