|
|
|
|
@ -1,4 +1,4 @@
|
|
|
|
|
/* Copyright (C) 2007-2019 Open Information Security Foundation
|
|
|
|
|
/* Copyright (C) 2007-2022 Open Information Security Foundation
|
|
|
|
|
*
|
|
|
|
|
* You can copy, redistribute or modify this Program under the terms of
|
|
|
|
|
* the GNU General Public License version 2 as published by the Free
|
|
|
|
|
@ -122,8 +122,9 @@ static FILE *SCRConfInitContextAndLocalResources(DetectEngineCtx *de_ctx, FILE *
|
|
|
|
|
const char *filename = SCRConfGetConfFilename(de_ctx);
|
|
|
|
|
if ((fd = fopen(filename, "r")) == NULL) {
|
|
|
|
|
#ifdef UNITTESTS
|
|
|
|
|
if (RunmodeIsUnittests())
|
|
|
|
|
if (RunmodeIsUnittests()) {
|
|
|
|
|
return NULL; // silently fail
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
SCLogError(SC_ERR_FOPEN, "Error opening file: \"%s\": %s", filename,
|
|
|
|
|
strerror(errno));
|
|
|
|
|
@ -319,16 +320,22 @@ static int SCRConfIsLineBlankOrComment(char *line)
|
|
|
|
|
*
|
|
|
|
|
* \param de_ctx Pointer to the Detection Engine Context.
|
|
|
|
|
*/
|
|
|
|
|
static void SCRConfParseFile(DetectEngineCtx *de_ctx, FILE *fd)
|
|
|
|
|
static bool SCRConfParseFile(DetectEngineCtx *de_ctx, FILE *fd)
|
|
|
|
|
{
|
|
|
|
|
char line[1024];
|
|
|
|
|
uint8_t i = 1;
|
|
|
|
|
|
|
|
|
|
int runmode = RunmodeGetCurrent();
|
|
|
|
|
bool is_conf_test_mode = runmode == RUNMODE_CONF_TEST;
|
|
|
|
|
while (fgets(line, sizeof(line), fd) != NULL) {
|
|
|
|
|
if (SCRConfIsLineBlankOrComment(line))
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
|
|
SCRConfAddReference(de_ctx, line);
|
|
|
|
|
if (SCRConfAddReference(de_ctx, line) != 0) {
|
|
|
|
|
if (is_conf_test_mode) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
i++;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -336,7 +343,7 @@ static void SCRConfParseFile(DetectEngineCtx *de_ctx, FILE *fd)
|
|
|
|
|
SCLogInfo("Added \"%d\" reference types from the reference.config file",
|
|
|
|
|
de_ctx->reference_conf_ht->count);
|
|
|
|
|
#endif /* UNITTESTS */
|
|
|
|
|
return;
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
@ -492,7 +499,7 @@ int SCRConfLoadReferenceConfigFile(DetectEngineCtx *de_ctx, FILE *fd)
|
|
|
|
|
fd = SCRConfInitContextAndLocalResources(de_ctx, fd);
|
|
|
|
|
if (fd == NULL) {
|
|
|
|
|
#ifdef UNITTESTS
|
|
|
|
|
if (RunmodeIsUnittests() && fd == NULL) {
|
|
|
|
|
if (RunmodeIsUnittests()) {
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
@ -501,10 +508,10 @@ int SCRConfLoadReferenceConfigFile(DetectEngineCtx *de_ctx, FILE *fd)
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
SCRConfParseFile(de_ctx, fd);
|
|
|
|
|
bool rc = SCRConfParseFile(de_ctx, fd);
|
|
|
|
|
SCRConfDeInitLocalResources(de_ctx, fd);
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
return rc ? 0 : -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|