|
|
|
@ -96,8 +96,6 @@ static uint8_t DetectEngineInspectFilemagic(DetectEngineCtx *de_ctx, DetectEngin
|
|
|
|
|
const DetectEngineAppInspectionEngine *engine, 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
|
|
|
|
|
*/
|
|
|
|
@ -247,10 +245,10 @@ static int DetectFilemagicSetup (DetectEngineCtx *de_ctx, Signature *s, const ch
|
|
|
|
|
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;
|
|
|
|
@ -272,11 +270,10 @@ static int DetectFilemagicSetupSticky(DetectEngineCtx *de_ctx, Signature *s, con
|
|
|
|
|
if (DetectBufferSetActiveList(de_ctx, 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;
|
|
|
|
@ -296,7 +293,8 @@ static InspectionBuffer *FilemagicGetDataCallback(DetectEngineThreadCtx *det_ctx
|
|
|
|
|
|
|
|
|
|
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) {
|
|
|
|
|
InspectionBufferSetupMultiEmpty(buffer);
|
|
|
|
|
return NULL;
|
|
|
|
|