diff --git a/src/alert-fastlog.c b/src/alert-fastlog.c index 5463710944..e09de878e7 100644 --- a/src/alert-fastlog.c +++ b/src/alert-fastlog.c @@ -293,9 +293,9 @@ int AlertFastLogTest01() de_ctx->flags |= DE_QUIET; - SCClassConfGenerateValidDummyClassConfigFile01("/var/log/eidps/classification.config"); + SCClassConfGenerateValidDummyClassConfigFD01(); SCClassConfLoadClassficationConfigFile(de_ctx); - SCClassConfDeleteDummyClassificationConfigFile("/var/log/eidps/classification.config"); + SCClassConfDeleteDummyClassificationConfigFD(); de_ctx->sig_list = SigInit(de_ctx, "alert tcp any any -> any any " "(msg:\"Fastlog test\"; content:GET; " @@ -346,9 +346,9 @@ int AlertFastLogTest02() de_ctx->flags |= DE_QUIET; - SCClassConfGenerateValidDummyClassConfigFile01("/var/log/eidps/classification.config"); + SCClassConfGenerateValidDummyClassConfigFD01(); SCClassConfLoadClassficationConfigFile(de_ctx); - SCClassConfDeleteDummyClassificationConfigFile("/var/log/eidps/classification.config"); + SCClassConfDeleteDummyClassificationConfigFD(); de_ctx->sig_list = SigInit(de_ctx, "alert tcp any any -> any any " "(msg:\"Fastlog test\"; content:GET; " diff --git a/src/detect-classtype.c b/src/detect-classtype.c index c942a7f760..52a48b4f03 100644 --- a/src/detect-classtype.c +++ b/src/detect-classtype.c @@ -183,9 +183,9 @@ int DetectClasstypeTest01() goto end; } - SCClassConfGenerateValidDummyClassConfigFile01("/var/log/eidps/classification.config"); + SCClassConfGenerateValidDummyClassConfigFD01(); SCClassConfLoadClassficationConfigFile(de_ctx); - SCClassConfDeleteDummyClassificationConfigFile("/var/log/eidps/classification.config"); + SCClassConfDeleteDummyClassificationConfigFD(); de_ctx->sig_list = SigInit(de_ctx, "alert tcp any any -> any any " "(msg:\"Classtype test\"; " @@ -215,9 +215,9 @@ int DetectClasstypeTest02() goto end; } - SCClassConfGenerateValidDummyClassConfigFile01("/var/log/eidps/classification.config"); + SCClassConfGenerateValidDummyClassConfigFD01(); SCClassConfLoadClassficationConfigFile(de_ctx); - SCClassConfDeleteDummyClassificationConfigFile("/var/log/eidps/classification.config"); + SCClassConfDeleteDummyClassificationConfigFD(); sig = SigInit(de_ctx, "alert tcp any any -> any any " "(msg:\"Classtype test\"; Classtype:unknown; sid:1;)"); @@ -268,9 +268,9 @@ int DetectClasstypeTest03() goto end; } - SCClassConfGenerateValidDummyClassConfigFile01("/var/log/eidps/classification.config"); + SCClassConfGenerateValidDummyClassConfigFD01(); SCClassConfLoadClassficationConfigFile(de_ctx); - SCClassConfDeleteDummyClassificationConfigFile("/var/log/eidps/classification.config"); + SCClassConfDeleteDummyClassificationConfigFD(); sig = SigInit(de_ctx, "alert tcp any any -> any any " "(msg:\"Classtype test\"; Classtype:bad-unknown; priority:1; sid:1;)"); diff --git a/src/detect-engine-iponly.c b/src/detect-engine-iponly.c index 07187ccf14..a80b399808 100644 --- a/src/detect-engine-iponly.c +++ b/src/detect-engine-iponly.c @@ -500,9 +500,9 @@ static int IPOnlyTestSig01(void) { memset(&de_ctx, 0, sizeof(DetectEngineCtx)); - SCClassConfGenerateValidDummyClassConfigFile01("/var/log/eidps/classification.config"); + SCClassConfGenerateValidDummyClassConfigFD01(); SCClassConfLoadClassficationConfigFile(&de_ctx); - SCClassConfDeleteDummyClassificationConfigFile("/var/log/eidps/classification.config"); + SCClassConfDeleteDummyClassificationConfigFD(); de_ctx.flags |= DE_QUIET; @@ -532,9 +532,9 @@ static int IPOnlyTestSig02 (void) { memset(&de_ctx, 0, sizeof(DetectEngineCtx)); - SCClassConfGenerateValidDummyClassConfigFile01("/var/log/eidps/classification.config"); + SCClassConfGenerateValidDummyClassConfigFD01(); SCClassConfLoadClassficationConfigFile(&de_ctx); - SCClassConfDeleteDummyClassificationConfigFile("/var/log/eidps/classification.config"); + SCClassConfDeleteDummyClassificationConfigFD(); de_ctx.flags |= DE_QUIET; diff --git a/src/detect-engine.c b/src/detect-engine.c index 9391fffcdc..b20133ff56 100644 --- a/src/detect-engine.c +++ b/src/detect-engine.c @@ -80,8 +80,10 @@ void DetectEngineCtxFree(DetectEngineCtx *de_ctx) { VariableNameFreeHash(de_ctx); if (de_ctx->sig_array) free(de_ctx->sig_array); - free(de_ctx); + if (de_ctx->class_conf_ht != NULL) + free(de_ctx->class_conf_ht); + free(de_ctx); //DetectAddressGroupPrintMemory(); //DetectSigGroupPrintMemory(); //DetectPortPrintMemory(); diff --git a/src/detect-msg.c b/src/detect-msg.c index b4c44f113b..01c141a25b 100644 --- a/src/detect-msg.c +++ b/src/detect-msg.c @@ -119,9 +119,9 @@ static int DetectMsgParseTest01(void) if (de_ctx == NULL) goto end; - SCClassConfGenerateValidDummyClassConfigFile01("/var/log/eidps/classification.config"); + SCClassConfGenerateValidDummyClassConfigFD01(); SCClassConfLoadClassficationConfigFile(de_ctx); - SCClassConfDeleteDummyClassificationConfigFile("/var/log/eidps/classification.config"); + SCClassConfDeleteDummyClassificationConfigFD(); sig = SigInit(de_ctx, "alert tcp any any -> any any (msg:\"flow stateless to_server\"; flow:stateless,to_server; content:\"flowstatelesscheck\"; classtype:bad-unknown; sid: 40000002; rev: 1;)"); if(sig == NULL) diff --git a/src/detect-parse.c b/src/detect-parse.c index 7a206d6a4b..ee10cf606b 100644 --- a/src/detect-parse.c +++ b/src/detect-parse.c @@ -895,9 +895,9 @@ int SigParseTest02 (void) { if (de_ctx == NULL) goto end; - SCClassConfGenerateValidDummyClassConfigFile01("/var/log/eidps/classification.config"); + SCClassConfGenerateValidDummyClassConfigFD01(); SCClassConfLoadClassficationConfigFile(de_ctx); - SCClassConfDeleteDummyClassificationConfigFile("/var/log/eidps/classification.config"); + SCClassConfDeleteDummyClassificationConfigFD(); sig = SigInit(de_ctx, "alert tcp any !21:902 -> any any (msg:\"ET MALWARE Suspicious 220 Banner on Local Port\"; content:\"220\"; offset:0; depth:4; pcre:\"/220[- ]/\"; classtype:non-standard-protocol; sid:2003055; rev:4;)"); if (sig == NULL) { diff --git a/src/detect.c b/src/detect.c index 0eaad6e526..2b4789a1a3 100644 --- a/src/detect.c +++ b/src/detect.c @@ -4041,9 +4041,9 @@ static int SigTest15Real (int mpm_type) { de_ctx->mpm_matcher = mpm_type; - SCClassConfGenerateValidDummyClassConfigFile01("/var/log/eidps/classification.config"); + SCClassConfGenerateValidDummyClassConfigFD01(); SCClassConfLoadClassficationConfigFile(de_ctx); - SCClassConfDeleteDummyClassificationConfigFile("/var/log/eidps/classification.config"); + SCClassConfDeleteDummyClassificationConfigFD(); de_ctx->flags |= DE_QUIET; @@ -4111,9 +4111,9 @@ static int SigTest16Real (int mpm_type) { de_ctx->mpm_matcher = mpm_type; - SCClassConfGenerateValidDummyClassConfigFile01("/var/log/eidps/classification.config"); + SCClassConfGenerateValidDummyClassConfigFD01(); SCClassConfLoadClassficationConfigFile(de_ctx); - SCClassConfDeleteDummyClassificationConfigFile("/var/log/eidps/classification.config"); + SCClassConfDeleteDummyClassificationConfigFD(); de_ctx->flags |= DE_QUIET; @@ -4255,9 +4255,9 @@ static int SigTest18Real (int mpm_type) { de_ctx->mpm_matcher = mpm_type; - SCClassConfGenerateValidDummyClassConfigFile01("/var/log/eidps/classification.config"); + SCClassConfGenerateValidDummyClassConfigFD01(); SCClassConfLoadClassficationConfigFile(de_ctx); - SCClassConfDeleteDummyClassificationConfigFile("/var/log/eidps/classification.config"); + SCClassConfDeleteDummyClassificationConfigFD(); de_ctx->flags |= DE_QUIET; diff --git a/src/util-classification-config.c b/src/util-classification-config.c index d80e6665b5..336ff2a682 100644 --- a/src/util-classification-config.c +++ b/src/util-classification-config.c @@ -19,7 +19,7 @@ #define DETECT_CLASSCONFIG_REGEX "^\\s*config\\s*classification\\s*:\\s*([a-zA-Z][a-zA-Z0-9-_]*)\\s*,\\s*(.+)\\s*,\\s*(\\d+)\\s*$" /* Default path for the classification.config file */ -#define SC_CLASS_CONF_DEF_CONF_FILEPATH "/root/classification.config1" +#define SC_CLASS_CONF_DEF_CONF_FILEPATH "~/classification.config" /* Holds a pointer to the default path for the classification.config file */ static const char *default_file_path = SC_CLASS_CONF_DEF_CONF_FILEPATH; @@ -81,10 +81,16 @@ static inline int SCClassConfInitContext(DetectEngineCtx *de_ctx) return -1; } - filename = SCClassConfGetConfFilename(); - if ( (fd = fopen(filename, "r")) == NULL) { - SCLogError(SC_ERR_FOPEN_ERROR, "Error opening file: \"%s\"", filename); - goto error; + /* if it is not NULL, use the file descriptor. The hack so that we can + * avoid using a dummy classification file for testing purposes and + * instead use an input stream against a buffer containing the + * classification strings */ + if (fd == NULL) { + filename = SCClassConfGetConfFilename(); + if ( (fd = fopen(filename, "r")) == NULL) { + SCLogError(SC_ERR_FOPEN_ERROR, "Error opening file: \"%s\"", filename); + goto error; + } } regex = pcre_compile(DETECT_CLASSCONFIG_REGEX, opts, &eb, &eo, NULL); @@ -107,8 +113,10 @@ static inline int SCClassConfInitContext(DetectEngineCtx *de_ctx) HashTableFree(de_ctx->class_conf_ht); de_ctx->class_conf_ht = NULL; } - if (fd != NULL) + if (fd != NULL) { fclose(fd); + fd = NULL; + } return -1; } @@ -119,7 +127,7 @@ static void SCClassConfDeInitContext(void) { fclose(fd); default_file_path = SC_CLASS_CONF_DEF_CONF_FILEPATH; - + fd = NULL; return; } @@ -269,8 +277,10 @@ static inline void SCClassConfParseFile(DetectEngineCtx *de_ctx) SCClassConfAddClasstype(line, de_ctx); } +#ifdef UNITTESTS SCLogInfo("Added \"%d\" classification types from the classification file", de_ctx->class_conf_ht->count); +#endif return; } @@ -451,79 +461,75 @@ void SCClassConfLoadClassficationConfigFile(DetectEngineCtx *de_ctx) * * \file_path Pointer to the file_path for the dummy classification file. */ -void SCClassConfGenerateValidDummyClassConfigFile01(const char *file_path) +void SCClassConfGenerateValidDummyClassConfigFD01(void) { - FILE *fd = NULL; - - default_file_path = file_path; - - if ( (fd = fopen(default_file_path, "w+")) == NULL) { - SCLogError(SC_ERR_FOPEN_ERROR, "Error opening file: \"%s\"", file_path); - return; - } - - fputs("config classification: not-suspicious,Not Suspicious Traffic,3\n", fd); - fputs("config classification: unknown,Unknown Traffic,3\n", fd); - fputs("config classification: bad-unknown,Potentially Bad Traffic, 2\n", fd); - fputs("config classification: attempted-recon,Attempted Information " - "Leak,2\n", fd); - fputs("config classification: successful-recon-limited,Information " - "Leak,2\n", fd); - fputs("config classification: successful-recon-largescale,Large Scale " - "Information Leak,2\n", fd); - fputs("config classification: attempted-dos,Attempted Denial of " - "Service,2\n", fd); - fputs("config classification: successful-dos,Denial of Service,2\n", fd); - fputs("config classification: attempted-user,Attempted User Privilege " - "Gain,1\n", fd); - fputs("config classification: unsuccessful-user,Unsuccessful User " - "Privilege Gain,1\n", fd); - fputs("config classification: successful-user,Successful User Privilege " - "Gain,1\n", fd); - fputs("config classification: attempted-admin,Attempted Administrator " - "Privilege Gain,1\n", fd); - fputs("config classification: successful-admin,Successful Administrator " - "Privilege Gain,1\n", fd); - fputs("config classification: rpc-portmap-decode,Decode of an RPC " - "Query,2\n", fd); - fputs("config classification: shellcode-detect,Executable code was " - "detected,1\n", fd); - fputs("config classification: string-detect,A suspicious string was " - "detected,3\n", fd); - fputs("config classification: suspicious-filename-detect,A suspicious " - "filename was detected,2\n", fd); - fputs("config classification: suspicious-login,An attempted login using " - "a suspicious username was detected,2\n", fd); - fputs("config classification: system-call-detect,A system call was " - "detected,2\n", fd); - fputs("config classification: tcp-connection,A TCP connection was " - "detected,4\n", fd); - fputs("config classification: trojan-activity,A Network Trojan was " - "detected, 1\n", fd); - fputs("config classification: unusual-client-port-connection,A client " - "was using an unusual port,2\n", fd); - fputs("config classification: network-scan,Detection of a Network " - "Scan,3\n", fd); - fputs("config classification: denial-of-service,Detection of a Denial " - "of Service Attack,2\n", fd); - fputs("config classification: non-standard-protocol,Detection of a " - "non-standard protocol or event,2\n", fd); - fputs("config classification: protocol-command-decode,Generic Protocol " - "Command Decode,3\n", fd); - fputs("config classification: web-application-activity,access to a " - "potentially vulnerable web application,2\n", fd); - fputs("config classification: web-application-attack,Web Application " - "Attack,1\n", fd); - fputs("config classification: misc-activity,Misc activity,3\n", fd); - fputs("config classification: misc-attack,Misc Attack,2\n", fd); - fputs("config classification: icmp-event,Generic ICMP event,3\n", fd); - fputs("config classification: kickass-porn,SCORE! Get the lotion!,1\n", fd); - fputs("config classification: policy-violation,Potential Corporate " - "Privacy Violation,1\n", fd); - fputs("config classification: default-login-attempt,Attempt to login by " - "a default username and password,2\n", fd); + const char *buffer = + "config classification: not-suspicious,Not Suspicious Traffic,3\n" + "config classification: unknown,Unknown Traffic,3\n" + "config classification: bad-unknown,Potentially Bad Traffic, 2\n" + "config classification: attempted-recon,Attempted Information " + "Leak,2\n" + "config classification: successful-recon-limited,Information " + "Leak,2\n" + "config classification: successful-recon-largescale,Large Scale " + "Information Leak,2\n" + "config classification: attempted-dos,Attempted Denial of " + "Service,2\n" + "config classification: successful-dos,Denial of Service,2\n" + "config classification: attempted-user,Attempted User Privilege " + "Gain,1\n" + "config classification: unsuccessful-user,Unsuccessful User " + "Privilege Gain,1\n" + "config classification: successful-user,Successful User Privilege " + "Gain,1\n" + "config classification: attempted-admin,Attempted Administrator " + "Privilege Gain,1\n" + "config classification: successful-admin,Successful Administrator " + "Privilege Gain,1\n" + "config classification: rpc-portmap-decode,Decode of an RPC " + "Query,2\n" + "config classification: shellcode-detect,Executable code was " + "detected,1\n" + "config classification: string-detect,A suspicious string was " + "detected,3\n" + "config classification: suspicious-filename-detect,A suspicious " + "filename was detected,2\n" + "config classification: suspicious-login,An attempted login using " + "a suspicious username was detected,2\n" + "config classification: system-call-detect,A system call was " + "detected,2\n" + "config classification: tcp-connection,A TCP connection was " + "detected,4\n" + "config classification: trojan-activity,A Network Trojan was " + "detected, 1\n" + "config classification: unusual-client-port-connection,A client " + "was using an unusual port,2\n" + "config classification: network-scan,Detection of a Network " + "Scan,3\n" + "config classification: denial-of-service,Detection of a Denial " + "of Service Attack,2\n" + "config classification: non-standard-protocol,Detection of a " + "non-standard protocol or event,2\n" + "config classification: protocol-command-decode,Generic Protocol " + "Command Decode,3\n" + "config classification: web-application-activity,access to a " + "potentially vulnerable web application,2\n" + "config classification: web-application-attack,Web Application " + "Attack,1\n" + "config classification: misc-activity,Misc activity,3\n" + "config classification: misc-attack,Misc Attack,2\n" + "config classification: icmp-event,Generic ICMP event,3\n" + "config classification: kickass-porn,SCORE! Get the lotion!,1\n" + "config classification: policy-violation,Potential Corporate " + "Privacy Violation,1\n" + "config classification: default-login-attempt,Attempt to login by " + "a default username and password,2\n"; + + fd = fmemopen((void *)buffer, strlen(buffer), "r"); + if (fd == NULL) + SCLogDebug("Error with fmemopen() called by Classifiation Config test code"); - fclose(fd); + return; } /** @@ -532,26 +538,22 @@ void SCClassConfGenerateValidDummyClassConfigFile01(const char *file_path) * * \file_path Pointer to the file_path for the dummy classification file. */ -void SCClassConfGenerateInValidDummyClassConfigFile02(const char *file_path) +void SCClassConfGenerateInValidDummyClassConfigFD02(void) { - FILE *fd = NULL; + const char *buffer = + "config classification: not-suspicious,Not Suspicious Traffic,3\n" + "onfig classification: unknown,Unknown Traffic,3\n" + "config classification: _badunknown,Potentially Bad Traffic, 2\n" + "config classification: bamboola1,Unknown Traffic,3\n" + "config classification: misc-activity,Misc activity,-1\n" + "config classification: policy-violation,Potential Corporate " + "config classification: bamboola,Unknown Traffic,3\n"; + + fd = fmemopen((void *)buffer, strlen(buffer), "r"); + if (fd == NULL) + SCLogDebug("Error with fmemopen() called by Classifiation Config test code"); - default_file_path = file_path; - - if ( (fd = fopen(default_file_path, "w+")) == NULL) { - SCLogError(SC_ERR_FOPEN_ERROR, "Error opening file: \"%s\"", file_path); - return; - } - - fputs("config classification: not-suspicious,Not Suspicious Traffic,3\n", fd); - fputs("onfig classification: unknown,Unknown Traffic,3\n", fd); - fputs("config classification: _badunknown,Potentially Bad Traffic, 2\n", fd); - fputs("config classification: bamboola1,Unknown Traffic,3\n", fd); - fputs("config classification: misc-activity,Misc activity,-1\n", fd); - fputs("config classification: policy-violation,Potential Corporate ", fd); - fputs("config classification: bamboola,Unknown Traffic,3\n", fd); - - fclose(fd); + return; } /** @@ -560,23 +562,19 @@ void SCClassConfGenerateInValidDummyClassConfigFile02(const char *file_path) * * \file_path Pointer to the file_path for the dummy classification file. */ -void SCClassConfGenerateInValidDummyClassConfigFile03(const char *file_path) +void SCClassConfGenerateInValidDummyClassConfigFD03(void) { - FILE *fd = NULL; + const char *buffer = + "conig classification: not-suspicious,Not Suspicious Traffic,3\n" + "onfig classification: unknown,Unknown Traffic,3\n" + "config classification: _badunknown,Potentially Bad Traffic, 2\n" + "config classification: misc-activity,Misc activity,-1\n"; - default_file_path = file_path; - - if ( (fd = fopen(default_file_path, "w+")) == NULL) { - SCLogError(SC_ERR_FOPEN_ERROR, "Error opening file: \"%s\"", file_path); - return; - } + fd = fmemopen((void *)buffer, strlen(buffer), "r"); + if (fd == NULL) + SCLogDebug("Error with fmemopen() called by Classifiation Config test code"); - fputs("conig classification: not-suspicious,Not Suspicious Traffic,3\n", fd); - fputs("onfig classification: unknown,Unknown Traffic,3\n", fd); - fputs("config classification: _badunknown,Potentially Bad Traffic, 2\n", fd); - fputs("config classification: misc-activity,Misc activity,-1\n", fd); - - fclose(fd); + return; } /** @@ -584,9 +582,12 @@ void SCClassConfGenerateInValidDummyClassConfigFile03(const char *file_path) * * \file_path Pointer to the file_path that has to be deleted. */ -void SCClassConfDeleteDummyClassificationConfigFile(const char *file_path) +void SCClassConfDeleteDummyClassificationConfigFD(void) { - remove(file_path); + if (fd != NULL) { + fclose(fd); + fd = NULL; + } return; } @@ -603,9 +604,9 @@ int SCClassConfTest01(void) if (de_ctx == NULL) return result; - SCClassConfGenerateValidDummyClassConfigFile01("/var/log/eidps/classification.config"); + SCClassConfGenerateValidDummyClassConfigFD01(); SCClassConfLoadClassficationConfigFile(de_ctx); - SCClassConfDeleteDummyClassificationConfigFile("/var/log/eidps/classification.config"); + SCClassConfDeleteDummyClassificationConfigFD(); if (de_ctx->class_conf_ht == NULL) return result; @@ -613,7 +614,6 @@ int SCClassConfTest01(void) result = (de_ctx->class_conf_ht->count == 34); DetectEngineCtxFree(de_ctx); - free(de_ctx->class_conf_ht); return result; } @@ -630,9 +630,9 @@ int SCClassConfTest02(void) if (de_ctx == NULL) return result; - SCClassConfGenerateInValidDummyClassConfigFile03("/var/log/eidps/classification.config"); + SCClassConfGenerateInValidDummyClassConfigFD03(); SCClassConfLoadClassficationConfigFile(de_ctx); - SCClassConfDeleteDummyClassificationConfigFile("/var/log/eidps/classification.config"); + SCClassConfDeleteDummyClassificationConfigFD(); if (de_ctx->class_conf_ht == NULL) return result; @@ -640,7 +640,6 @@ int SCClassConfTest02(void) result = (de_ctx->class_conf_ht->count == 0); DetectEngineCtxFree(de_ctx); - free(de_ctx->class_conf_ht); return result; } @@ -657,9 +656,9 @@ int SCClassConfTest03(void) if (de_ctx == NULL) return result; - SCClassConfGenerateInValidDummyClassConfigFile02("/var/log/eidps/classification.config"); + SCClassConfGenerateInValidDummyClassConfigFD02(); SCClassConfLoadClassficationConfigFile(de_ctx); - SCClassConfDeleteDummyClassificationConfigFile("/var/log/eidps/classification.config"); + SCClassConfDeleteDummyClassificationConfigFD(); if (de_ctx->class_conf_ht == NULL) return result; @@ -667,7 +666,6 @@ int SCClassConfTest03(void) result = (de_ctx->class_conf_ht->count == 3); DetectEngineCtxFree(de_ctx); - free(de_ctx->class_conf_ht); return result; } @@ -685,9 +683,9 @@ int SCClassConfTest04(void) if (de_ctx == NULL) return 0; - SCClassConfGenerateValidDummyClassConfigFile01("/var/log/eidps/classification.config"); + SCClassConfGenerateValidDummyClassConfigFD01(); SCClassConfLoadClassficationConfigFile(de_ctx); - SCClassConfDeleteDummyClassificationConfigFile("/var/log/eidps/classification.config"); + SCClassConfDeleteDummyClassificationConfigFD(); if (de_ctx->class_conf_ht == NULL) return 0; @@ -718,9 +716,7 @@ int SCClassConfTest04(void) result &= (HashTableLookup(de_ctx->class_conf_ht, ct, 0) == NULL); SCClassConfDeAllocClasstype(ct); - DetectEngineCtxFree(de_ctx); - free(de_ctx->class_conf_ht); return result; } @@ -739,9 +735,9 @@ int SCClassConfTest05(void) if (de_ctx == NULL) return 0; - SCClassConfGenerateInValidDummyClassConfigFile03("/var/log/eidps/classification.config"); + SCClassConfGenerateInValidDummyClassConfigFD03(); SCClassConfLoadClassficationConfigFile(de_ctx); - SCClassConfDeleteDummyClassificationConfigFile("/var/log/eidps/classification.config"); + SCClassConfDeleteDummyClassificationConfigFD(); if (de_ctx->class_conf_ht == NULL) return 0; @@ -774,7 +770,6 @@ int SCClassConfTest05(void) DetectEngineCtxFree(de_ctx); - free(de_ctx->class_conf_ht); return result; } @@ -792,9 +787,9 @@ int SCClassConfTest06(void) if (de_ctx == NULL) return 0; - SCClassConfGenerateInValidDummyClassConfigFile02("/var/log/eidps/classification.config"); + SCClassConfGenerateInValidDummyClassConfigFD02(); SCClassConfLoadClassficationConfigFile(de_ctx); - SCClassConfDeleteDummyClassificationConfigFile("/var/log/eidps/classification.config"); + SCClassConfDeleteDummyClassificationConfigFD(); if (de_ctx->class_conf_ht == NULL) return 0; @@ -826,7 +821,6 @@ int SCClassConfTest06(void) SCClassConfDeAllocClasstype(ct); DetectEngineCtxFree(de_ctx); - free(de_ctx->class_conf_ht); return result; } diff --git a/src/util-classification-config.h b/src/util-classification-config.h index a31f773c20..effca75ccf 100644 --- a/src/util-classification-config.h +++ b/src/util-classification-config.h @@ -26,9 +26,9 @@ void SCClassConfDeAllocClasstype(SCClassConfClasstype *); void SCClassConfLoadClassficationConfigFile(DetectEngineCtx *); void SCClassConfRegisterTests(void); -void SCClassConfGenerateValidDummyClassConfigFile01(const char *); -void SCClassConfGenerateInValidDummyClassConfigFile02(const char *); -void SCClassConfGenerateInValidDummyClassConfigFile03(const char *); -void SCClassConfDeleteDummyClassificationConfigFile(const char *); +void SCClassConfGenerateValidDummyClassConfigFD01(void); +void SCClassConfGenerateInValidDummyClassConfigFD02(void); +void SCClassConfGenerateInValidDummyClassConfigFD03(void); +void SCClassConfDeleteDummyClassificationConfigFD(void); #endif /* __UTIL_CLASSIFICATION_CONFIG_H__ */ diff --git a/src/util-hash.c b/src/util-hash.c index 6b9a694462..bf0b1259f1 100644 --- a/src/util-hash.c +++ b/src/util-hash.c @@ -108,7 +108,9 @@ int HashTableAdd(HashTable *ht, void *data, uint16_t datalen) { ht->array[hash] = hb; } +#ifdef UNITTESTS ht->count++; +#endif return 0; diff --git a/src/util-hash.h b/src/util-hash.h index 05355181b8..06af21b6d0 100644 --- a/src/util-hash.h +++ b/src/util-hash.h @@ -14,7 +14,9 @@ typedef struct HashTableBucket_ { typedef struct HashTable_ { HashTableBucket **array; uint32_t array_size; +#ifdef UNITTESTS uint32_t count; +#endif uint32_t (*Hash)(struct HashTable_ *, void *, uint16_t); char (*Compare)(void *, uint16_t, void *, uint16_t); void (*Free)(void *);