const Signature *s,
Flow *f, uint8_t flags, void *alstate, void *txv, uint64_t tx_id);
-static int g_magic_thread_ctx_id = -1;
-
/**
* \brief Registration function for keyword: filemagic
*/
de_ctx, s, NULL, DETECT_FILE_MAGIC, g_file_magic_buffer_id, s->alproto) < 0)
return -1;
- if (g_magic_thread_ctx_id == -1) {
- g_magic_thread_ctx_id = DetectRegisterThreadCtxFuncs(
+ if (de_ctx->filemagic_thread_ctx_id == -1) {
+ de_ctx->filemagic_thread_ctx_id = DetectRegisterThreadCtxFuncs(
de_ctx, "filemagic", DetectFilemagicThreadInit, NULL, DetectFilemagicThreadFree, 1);
- if (g_magic_thread_ctx_id == -1)
+ if (de_ctx->filemagic_thread_ctx_id == -1)
return -1;
}
return 0;
if (DetectBufferSetActiveList(s, g_file_magic_buffer_id) < 0)
return -1;
- if (g_magic_thread_ctx_id == -1) {
- g_magic_thread_ctx_id = DetectRegisterThreadCtxFuncs(de_ctx, "filemagic",
- DetectFilemagicThreadInit, NULL,
- DetectFilemagicThreadFree, 1);
- if (g_magic_thread_ctx_id == -1)
+ if (de_ctx->filemagic_thread_ctx_id == -1) {
+ de_ctx->filemagic_thread_ctx_id = DetectRegisterThreadCtxFuncs(
+ de_ctx, "filemagic", DetectFilemagicThreadInit, NULL, DetectFilemagicThreadFree, 1);
+ if (de_ctx->filemagic_thread_ctx_id == -1)
return -1;
}
return 0;
if (cur_file->magic == NULL) {
DetectFilemagicThreadData *tfilemagic =
- (DetectFilemagicThreadData *)DetectThreadCtxGetKeywordThreadCtx(det_ctx, g_magic_thread_ctx_id);
+ (DetectFilemagicThreadData *)DetectThreadCtxGetKeywordThreadCtx(
+ det_ctx, det_ctx->de_ctx->filemagic_thread_ctx_id);
if (tfilemagic == NULL) {
return NULL;
}
uint16_t mpm_matcher; /**< mpm matcher this ctx uses */
uint16_t spm_matcher; /**< spm matcher this ctx uses */
+ /* registration id for per thread ctx for the filemagic/file.magic keywords */
+ int filemagic_thread_ctx_id;
+
/* spm thread context prototype, built as spm matchers are constructed and
* later used to construct thread context for each thread. */
SpmGlobalThreadCtx *spm_global_thread_ctx;