int match = 0;
int store_r = 0;
- KEYWORD_PROFILING_SET_LIST(det_ctx, DETECT_SM_LIST_FILEMATCH);
SCLogDebug("file inspection... %p", ffc);
if (ffc != NULL) {
case DETECT_SM_LIST_TMATCH:
return "tag";
- case DETECT_SM_LIST_FILEMATCH:
- return "file";
-
case DETECT_SM_LIST_BASE64_DATA:
return "base64_data";
static int DetectFileextSetup (DetectEngineCtx *, Signature *, char *);
static void DetectFileextRegisterTests(void);
static void DetectFileextFree(void *);
+static int g_file_match_list_id = 0;
/**
* \brief Registration function for keyword: fileext
sigmatch_table[DETECT_FILEEXT].Free = DetectFileextFree;
sigmatch_table[DETECT_FILEEXT].RegisterTests = DetectFileextRegisterTests;
+ g_file_match_list_id = DetectBufferTypeRegister("files");
+
SCLogDebug("registering fileext rule option");
return;
}
sm->type = DETECT_FILEEXT;
sm->ctx = (void *)fileext;
- SigMatchAppendSMToList(s, sm, DETECT_SM_LIST_FILEMATCH);
+ SigMatchAppendSMToList(s, sm, g_file_match_list_id);
s->file_flags |= (FILE_SIG_NEED_FILE|FILE_SIG_NEED_FILENAME);
return 0;
static int DetectFilemagicSetup (DetectEngineCtx *, Signature *, char *);
static void DetectFilemagicRegisterTests(void);
static void DetectFilemagicFree(void *);
+static int g_file_match_list_id = 0;
/**
* \brief Registration function for keyword: filemagic
sigmatch_table[DETECT_FILEMAGIC].Free = DetectFilemagicFree;
sigmatch_table[DETECT_FILEMAGIC].RegisterTests = DetectFilemagicRegisterTests;
+ g_file_match_list_id = DetectBufferTypeRegister("files");
+
SCLogDebug("registering filemagic rule option");
return;
}
sm->type = DETECT_FILEMAGIC;
sm->ctx = (void *)filemagic;
- SigMatchAppendSMToList(s, sm, DETECT_SM_LIST_FILEMATCH);
+ SigMatchAppendSMToList(s, sm, g_file_match_list_id);
s->file_flags |= (FILE_SIG_NEED_FILE|FILE_SIG_NEED_MAGIC);
return 0;
#include "suricata-common.h"
+#include "detect-engine.h"
#include "util-detect-file-hash.h"
#include "util-unittest.h"
#include "util-unittest-helper.h"
#else /* HAVE_NSS */
+static int g_file_match_list_id = 0;
+
static int DetectFileMd5Setup (DetectEngineCtx *, Signature *, char *);
static void DetectFileMd5RegisterTests(void);
sigmatch_table[DETECT_FILEMD5].Free = DetectFileHashFree;
sigmatch_table[DETECT_FILEMD5].RegisterTests = DetectFileMd5RegisterTests;
+ g_file_match_list_id = DetectBufferTypeRegister("files");
+
SCLogDebug("registering filemd5 rule option");
return;
}
*/
static int DetectFileMd5Setup (DetectEngineCtx *de_ctx, Signature *s, char *str)
{
- return DetectFileHashSetup(de_ctx, s, str, DETECT_FILEMD5);
+ return DetectFileHashSetup(de_ctx, s, str, DETECT_FILEMD5, g_file_match_list_id);
}
#ifdef UNITTESTS
static int DetectFilenameSetup (DetectEngineCtx *, Signature *, char *);
static void DetectFilenameRegisterTests(void);
static void DetectFilenameFree(void *);
+static int g_file_match_list_id = 0;
/**
* \brief Registration function for keyword: filename
sigmatch_table[DETECT_FILENAME].Free = DetectFilenameFree;
sigmatch_table[DETECT_FILENAME].RegisterTests = DetectFilenameRegisterTests;
- DetectAppLayerInspectEngineRegister(ALPROTO_HTTP, SIG_FLAG_TOSERVER,
- DETECT_SM_LIST_FILEMATCH,
+ DetectAppLayerInspectEngineRegister2("files",
+ ALPROTO_HTTP, SIG_FLAG_TOSERVER,
DetectFileInspectHttp);
- DetectAppLayerInspectEngineRegister(ALPROTO_HTTP, SIG_FLAG_TOCLIENT,
- DETECT_SM_LIST_FILEMATCH,
+ DetectAppLayerInspectEngineRegister2("files",
+ ALPROTO_HTTP, SIG_FLAG_TOCLIENT,
DetectFileInspectHttp);
- DetectAppLayerInspectEngineRegister(ALPROTO_SMTP, SIG_FLAG_TOSERVER,
- DETECT_SM_LIST_FILEMATCH,
+ DetectAppLayerInspectEngineRegister2("files",
+ ALPROTO_SMTP, SIG_FLAG_TOSERVER,
DetectFileInspectSmtp);
+ g_file_match_list_id = DetectBufferTypeGetByName("files");
+
SCLogDebug("registering filename rule option");
return;
}
sm->type = DETECT_FILENAME;
sm->ctx = (void *)filename;
- SigMatchAppendSMToList(s, sm, DETECT_SM_LIST_FILEMATCH);
+ SigMatchAppendSMToList(s, sm, g_file_match_list_id);
s->file_flags |= (FILE_SIG_NEED_FILE|FILE_SIG_NEED_FILENAME);
return 0;
#include "suricata-common.h"
+#include "detect-engine.h"
#include "util-detect-file-hash.h"
#include "util-unittest.h"
#include "util-unittest-helper.h"
static int DetectFileSha1Setup (DetectEngineCtx *, Signature *, char *);
static void DetectFileSha1RegisterTests(void);
+static int g_file_match_list_id = 0;
/**
* \brief Registration function for keyword: filesha1
sigmatch_table[DETECT_FILESHA1].Free = DetectFileHashFree;
sigmatch_table[DETECT_FILESHA1].RegisterTests = DetectFileSha1RegisterTests;
+ g_file_match_list_id = DetectBufferTypeRegister("files");
+
SCLogDebug("registering filesha1 rule option");
return;
}
*/
static int DetectFileSha1Setup (DetectEngineCtx *de_ctx, Signature *s, char *str)
{
- return DetectFileHashSetup(de_ctx, s, str, DETECT_FILESHA1);
+ return DetectFileHashSetup(de_ctx, s, str, DETECT_FILESHA1, g_file_match_list_id);
}
#ifdef UNITTESTS
#include "suricata-common.h"
+#include "detect-engine.h"
#include "util-detect-file-hash.h"
#include "util-unittest.h"
#include "util-unittest-helper.h"
static int DetectFileSha256Setup (DetectEngineCtx *, Signature *, char *);
static void DetectFileSha256RegisterTests(void);
+static int g_file_match_list_id = 0;
/**
* \brief Registration function for keyword: filesha256
sigmatch_table[DETECT_FILESHA256].Free = DetectFileHashFree;
sigmatch_table[DETECT_FILESHA256].RegisterTests = DetectFileSha256RegisterTests;
+ g_file_match_list_id = DetectBufferTypeRegister("files");
+
SCLogDebug("registering filesha256 rule option");
return;
}
*/
static int DetectFileSha256Setup (DetectEngineCtx *de_ctx, Signature *s, char *str)
{
- return DetectFileHashSetup(de_ctx, s, str, DETECT_FILESHA256);
+ return DetectFileHashSetup(de_ctx, s, str, DETECT_FILESHA256, g_file_match_list_id);
}
#ifdef UNITTESTS
#include "detect.h"
#include "detect-parse.h"
+#include "detect-engine.h"
#include "detect-engine-state.h"
#include "detect-filesize.h"
static int DetectFilesizeSetup (DetectEngineCtx *, Signature *, char *);
static void DetectFilesizeFree (void *);
static void DetectFilesizeRegisterTests (void);
+static int g_file_match_list_id = 0;
/**
* \brief Registration function for filesize: keyword
sigmatch_table[DETECT_FILESIZE].flags |= SIGMATCH_PAYLOAD; /** XXX necessary? */
DetectSetupParseRegexes(PARSE_REGEX, &parse_regex, &parse_regex_study);
+
+ g_file_match_list_id = DetectBufferTypeRegister("files");
}
/**
sm->type = DETECT_FILESIZE;
sm->ctx = (SigMatchCtx *)fsd;
- SigMatchAppendSMToList(s, sm, DETECT_SM_LIST_FILEMATCH);
+ SigMatchAppendSMToList(s, sm, g_file_match_list_id);
s->file_flags |= (FILE_SIG_NEED_FILE|FILE_SIG_NEED_SIZE);
SCReturnInt(0);
static int DetectFilestoreSetup (DetectEngineCtx *, Signature *, char *);
static void DetectFilestoreFree(void *);
static void DetectFilestoreRegisterTests(void);
+static int g_file_match_list_id = 0;
/**
* \brief Registration function for keyword: filestore
sigmatch_table[DETECT_FILESTORE].flags = SIGMATCH_OPTIONAL_OPT;
DetectSetupParseRegexes(PARSE_REGEX, &parse_regex, &parse_regex_study);
+
+ g_file_match_list_id = DetectBufferTypeRegister("files");
}
/**
AppLayerHtpNeedFileInspection();
}
- SigMatchAppendSMToList(s, sm, DETECT_SM_LIST_FILEMATCH);
+ SigMatchAppendSMToList(s, sm, g_file_match_list_id);
s->filestore_ctx = (const DetectFilestoreData *)sm->ctx;
s->flags |= SIG_FLAG_FILESTORE;
CASE_CODE_STRING(DETECT_SM_LIST_AMATCH, "app-layer");
CASE_CODE_STRING(DETECT_SM_LIST_DMATCH, "dcerpc");
CASE_CODE_STRING(DETECT_SM_LIST_TMATCH, "tag");
- CASE_CODE_STRING(DETECT_SM_LIST_FILEMATCH, "file");
CASE_CODE_STRING(DETECT_SM_LIST_TEMPLATE_BUFFER_MATCH, "template");
CASE_CODE_STRING(DETECT_SM_LIST_POSTMATCH, "postmatch");
CASE_CODE_STRING(DETECT_SM_LIST_SUPPRESS, "suppress");
CASE_CODE(DETECT_SM_LIST_AMATCH);
CASE_CODE(DETECT_SM_LIST_DMATCH);
CASE_CODE(DETECT_SM_LIST_TMATCH);
- CASE_CODE(DETECT_SM_LIST_FILEMATCH);
CASE_CODE(DETECT_SM_LIST_TEMPLATE_BUFFER_MATCH);
CASE_CODE(DETECT_SM_LIST_POSTMATCH);
CASE_CODE(DETECT_SM_LIST_SUPPRESS);
/* app event engine sm list */
DETECT_SM_LIST_APP_EVENT = DETECT_SM_LIST_BUILTIN_MAX,
- DETECT_SM_LIST_FILEMATCH,
-
DETECT_SM_LIST_TEMPLATE_BUFFER_MATCH,
DETECT_SM_LIST_MAX,
* \retval -1 on Failure
*/
int DetectFileHashSetup (DetectEngineCtx *de_ctx, Signature *s, char *str,
- uint32_t type)
+ uint32_t type, int list)
{
DetectFileHashData *filehash = NULL;
SigMatch *sm = NULL;
sm->type = type;
sm->ctx = (void *)filehash;
- SigMatchAppendSMToList(s, sm, DETECT_SM_LIST_FILEMATCH);
+ SigMatchAppendSMToList(s, sm, list);
s->file_flags |= FILE_SIG_NEED_FILE;
int DetectFileHashMatch(ThreadVars *, DetectEngineThreadCtx *, Flow *, uint8_t,
File *, const Signature *, const SigMatchData *);
-int DetectFileHashSetup(DetectEngineCtx *, Signature *, char *, uint32_t);
+int DetectFileHashSetup(DetectEngineCtx *, Signature *, char *, uint32_t, int);
void DetectFileHashFree(void *);
#endif /* __UTIL_DETECT_FILE_HASH_H__ */