]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
classification: remove global from parsing
authorVictor Julien <victor@inliniac.net>
Tue, 12 May 2015 14:20:27 +0000 (16:20 +0200)
committerVictor Julien <victor@inliniac.net>
Tue, 12 May 2015 16:07:49 +0000 (18:07 +0200)
Parsing code used a 'fd' global. Remove this.

src/alert-fastlog.c
src/detect-classtype.c
src/detect-engine.c
src/detect-msg.c
src/detect-parse.c
src/log-droplog.c
src/util-classification-config.c
src/util-classification-config.h

index 27fdbe44592c0863dd66d167e317691233e1365a..ce198658e63041351efbf87443ff8195d4eddf2e 100644 (file)
@@ -298,9 +298,8 @@ static int AlertFastLogTest01()
 
     de_ctx->flags |= DE_QUIET;
 
-    SCClassConfGenerateValidDummyClassConfigFD01();
-    SCClassConfLoadClassficationConfigFile(de_ctx);
-    SCClassConfDeleteDummyClassificationConfigFD();
+    FILE *fd = SCClassConfGenerateValidDummyClassConfigFD01();
+    SCClassConfLoadClassficationConfigFile(de_ctx, fd);
 
     de_ctx->sig_list = SigInit(de_ctx, "alert tcp any any -> any any "
             "(msg:\"FastLog test\"; content:\"GET\"; "
@@ -346,9 +345,8 @@ static int AlertFastLogTest02()
 
     de_ctx->flags |= DE_QUIET;
 
-    SCClassConfGenerateValidDummyClassConfigFD01();
-    SCClassConfLoadClassficationConfigFile(de_ctx);
-    SCClassConfDeleteDummyClassificationConfigFD();
+    FILE *fd = SCClassConfGenerateValidDummyClassConfigFD01();
+    SCClassConfLoadClassficationConfigFile(de_ctx, fd);
 
     de_ctx->sig_list = SigInit(de_ctx, "alert tcp any any -> any any "
             "(msg:\"FastLog test\"; content:\"GET\"; "
index fd0aebeb88f1bec9b3f616f04628e62a3032520a..bc77371006ca6c6e0ba68bb984ccb860776b3137 100644 (file)
@@ -182,9 +182,8 @@ int DetectClasstypeTest01()
         goto end;
     }
 
-    SCClassConfGenerateValidDummyClassConfigFD01();
-    SCClassConfLoadClassficationConfigFile(de_ctx);
-    SCClassConfDeleteDummyClassificationConfigFD();
+    FILE *fd = SCClassConfGenerateValidDummyClassConfigFD01();
+    SCClassConfLoadClassficationConfigFile(de_ctx, fd);
 
     de_ctx->sig_list = SigInit(de_ctx, "alert tcp any any -> any any "
                                "(msg:\"Classtype test\"; "
@@ -214,9 +213,8 @@ int DetectClasstypeTest02()
         goto end;
     }
 
-    SCClassConfGenerateValidDummyClassConfigFD01();
-    SCClassConfLoadClassficationConfigFile(de_ctx);
-    SCClassConfDeleteDummyClassificationConfigFD();
+    FILE *fd = SCClassConfGenerateValidDummyClassConfigFD01();
+    SCClassConfLoadClassficationConfigFile(de_ctx, fd);
 
     sig = SigInit(de_ctx, "alert tcp any any -> any any "
                   "(msg:\"Classtype test\"; Classtype:bad-unknown; sid:1;)");
@@ -281,9 +279,8 @@ int DetectClasstypeTest03()
         goto end;
     }
 
-    SCClassConfGenerateValidDummyClassConfigFD01();
-    SCClassConfLoadClassficationConfigFile(de_ctx);
-    SCClassConfDeleteDummyClassificationConfigFD();
+    FILE *fd = SCClassConfGenerateValidDummyClassConfigFD01();
+    SCClassConfLoadClassficationConfigFile(de_ctx, fd);
 
     sig = SigInit(de_ctx, "alert tcp any any -> any any "
                   "(msg:\"Classtype test\"; Classtype:bad-unknown; priority:1; sid:1;)");
index 742a2560c9e4f743baa14ba702a06e1a54a9d57d..6489069dfe41c81c85097ff8682f88a724b17d8c 100644 (file)
@@ -821,7 +821,7 @@ static DetectEngineCtx *DetectEngineCtxInitReal(int minimal, const char *prefix)
     SCProfilingKeywordInitCounters(de_ctx);
 #endif
 
-    SCClassConfLoadClassficationConfigFile(de_ctx);
+    SCClassConfLoadClassficationConfigFile(de_ctx, NULL);
     SCRConfLoadReferenceConfigFile(de_ctx);
 
     if (ActionInitConfig() < 0) {
index abd861001da04d6f282b273d8110ab0d372e655f..e8b87529673a32f76e879500f36915dcf4e86b0f 100644 (file)
@@ -148,9 +148,8 @@ static int DetectMsgParseTest01(void)
     if (de_ctx == NULL)
         goto end;
 
-    SCClassConfGenerateValidDummyClassConfigFD01();
-    SCClassConfLoadClassficationConfigFile(de_ctx);
-    SCClassConfDeleteDummyClassificationConfigFD();
+    FILE *fd = SCClassConfGenerateValidDummyClassConfigFD01();
+    SCClassConfLoadClassficationConfigFile(de_ctx, fd);
 
     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)
index 4b084d0e251947735e99a46757b7b21bd8392e3f..87745c15d5bd965964eb4cfd198b306bad2e21d7 100644 (file)
@@ -1918,9 +1918,8 @@ int SigParseTest02 (void)
     if (de_ctx == NULL)
         goto end;
 
-    SCClassConfGenerateValidDummyClassConfigFD01();
-    SCClassConfLoadClassficationConfigFile(de_ctx);
-    SCClassConfDeleteDummyClassificationConfigFD();
+    FILE *fd = SCClassConfGenerateValidDummyClassConfigFD01();
+    SCClassConfLoadClassficationConfigFile(de_ctx, fd);
 
     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[- ]/\"; sid:2003055; rev:4;)");
     if (sig == NULL) {
index 34447ae2171e8317d801a8904f69fa636964277f..877d243754f341948bc4b8632b533295586072c5 100644 (file)
@@ -384,9 +384,8 @@ int LogDropLogTest01()
 
     de_ctx->flags |= DE_QUIET;
 
-    SCClassConfGenerateValidDummyClassConfigFD01();
-    SCClassConfLoadClassficationConfigFile(de_ctx);
-    SCClassConfDeleteDummyClassificationConfigFD();
+    FILE *fd = SCClassConfGenerateValidDummyClassConfigFD01();
+    SCClassConfLoadClassficationConfigFile(de_ctx, fd);
 
     de_ctx->sig_list = SigInit(de_ctx, "drop tcp any any -> any any "
             "(msg:\"LogDropLog test\"; content:\"GET\"; Classtype:unknown; sid:1;)");
@@ -453,9 +452,8 @@ int LogDropLogTest02()
 
     de_ctx->flags |= DE_QUIET;
 
-    SCClassConfGenerateValidDummyClassConfigFD01();
-    SCClassConfLoadClassficationConfigFile(de_ctx);
-    SCClassConfDeleteDummyClassificationConfigFD();
+    FILE *fd = SCClassConfGenerateValidDummyClassConfigFD01();
+    SCClassConfLoadClassficationConfigFile(de_ctx, fd);
 
     de_ctx->sig_list = SigInit(de_ctx, "alert udp any any -> any any "
             "(msg:\"LogDropLog test\"; content:\"GET\"; Classtype:unknown; sid:1;)");
index ea696d7b7fb564ff88eacf281bc534ebeae5b128..af952e67593e113c7c97077b0e60014844ec5d41 100644 (file)
@@ -49,7 +49,6 @@
 
 /* Holds a pointer to the default path for the classification.config file */
 static const char *default_file_path = SC_CLASS_CONF_DEF_CONF_FILEPATH;
-static FILE *fd = NULL;
 static pcre *regex = NULL;
 static pcre_extra *regex_study = NULL;
 
@@ -70,10 +69,9 @@ static char *SCClassConfGetConfFilename(void);
  *
  * \param de_ctx Pointer to the Detection Engine Context.
  *
- * \retval  0 On success.
- * \retval -1 On failure.
+ * \retval fp NULL on error
  */
-int SCClassConfInitContextAndLocalResources(DetectEngineCtx *de_ctx)
+FILE *SCClassConfInitContextAndLocalResources(DetectEngineCtx *de_ctx, FILE *fd)
 {
     char *filename = NULL;
     const char *eb = NULL;
@@ -119,7 +117,7 @@ int SCClassConfInitContextAndLocalResources(DetectEngineCtx *de_ctx)
         goto error;
     }
 
-    return 0;
+    return fd;
 
  error:
     if (de_ctx->class_conf_ht != NULL) {
@@ -140,7 +138,7 @@ int SCClassConfInitContextAndLocalResources(DetectEngineCtx *de_ctx)
         regex_study = NULL;
     }
 
-    return -1;
+    return NULL;
 }
 
 
@@ -167,12 +165,14 @@ static char *SCClassConfGetConfFilename(void)
 /**
  * \brief Releases resources used by the Classification Config API.
  */
-static void SCClassConfDeInitLocalResources(DetectEngineCtx *de_ctx)
+static void SCClassConfDeInitLocalResources(DetectEngineCtx *de_ctx, FILE *fd)
 {
+    if (fd != NULL) {
+        fclose(fd);
+        fd = NULL;
+    }
 
-    fclose(fd);
     default_file_path = SC_CLASS_CONF_DEF_CONF_FILEPATH;
-    fd = NULL;
     if (regex != NULL) {
         pcre_free(regex);
         regex = NULL;
@@ -341,7 +341,7 @@ static int SCClassConfIsLineBlankOrComment(char *line)
  *
  * \param de_ctx Pointer to the Detection Engine Context.
  */
-void SCClassConfParseFile(DetectEngineCtx *de_ctx)
+void SCClassConfParseFile(DetectEngineCtx *de_ctx, FILE *fd)
 {
     char line[1024];
     uint8_t i = 1;
@@ -517,9 +517,10 @@ void SCClassConfClasstypeHashFree(void *ch)
  * \param de_ctx Pointer to the Detection Engine Context that should be updated
  *               with Classtype information.
  */
-void SCClassConfLoadClassficationConfigFile(DetectEngineCtx *de_ctx)
+void SCClassConfLoadClassficationConfigFile(DetectEngineCtx *de_ctx, FILE *fd)
 {
-    if (SCClassConfInitContextAndLocalResources(de_ctx) == -1) {
+    fd = SCClassConfInitContextAndLocalResources(de_ctx, fd);
+    if (fd == NULL) {
 #ifdef UNITTESTS
         if (RunmodeIsUnittests() && fd == NULL) {
             return;
@@ -530,8 +531,8 @@ void SCClassConfLoadClassficationConfigFile(DetectEngineCtx *de_ctx)
         return;
     }
 
-    SCClassConfParseFile(de_ctx);
-    SCClassConfDeInitLocalResources(de_ctx);
+    SCClassConfParseFile(de_ctx, fd);
+    SCClassConfDeInitLocalResources(de_ctx, fd);
 
     return;
 }
@@ -573,18 +574,18 @@ SCClassConfClasstype *SCClassConfGetClasstype(const char *ct_name,
  *
  * \file_path Pointer to the file_path for the dummy classification file.
  */
-void SCClassConfGenerateValidDummyClassConfigFD01(void)
+FILE *SCClassConfGenerateValidDummyClassConfigFD01(void)
 {
     const char *buffer =
         "config classification: nothing-wrong,Nothing Wrong With Us,3\n"
         "config classification: unknown,Unknown are we,3\n"
         "config classification: bad-unknown,We think it's bad, 2\n";
 
-    fd = SCFmemopen((void *)buffer, strlen(buffer), "r");
+    FILE *fd = SCFmemopen((void *)buffer, strlen(buffer), "r");
     if (fd == NULL)
         SCLogDebug("Error with SCFmemopen() called by Classifiation Config test code");
 
-    return;
+    return fd;
 }
 
 /**
@@ -593,7 +594,7 @@ void SCClassConfGenerateValidDummyClassConfigFD01(void)
  *
  * \file_path Pointer to the file_path for the dummy classification file.
  */
-void SCClassConfGenerateInValidDummyClassConfigFD02(void)
+FILE *SCClassConfGenerateInValidDummyClassConfigFD02(void)
 {
     const char *buffer =
         "config classification: not-suspicious,Not Suspicious Traffic,3\n"
@@ -604,11 +605,11 @@ void SCClassConfGenerateInValidDummyClassConfigFD02(void)
         "config classification: policy-violation,Potential Corporate "
         "config classification: bamboola,Unknown Traffic,3\n";
 
-    fd = SCFmemopen((void *)buffer, strlen(buffer), "r");
+    FILE *fd = SCFmemopen((void *)buffer, strlen(buffer), "r");
     if (fd == NULL)
         SCLogDebug("Error with SCFmemopen() called by Classifiation Config test code");
 
-    return;
+    return fd;
 }
 
 /**
@@ -617,7 +618,7 @@ void SCClassConfGenerateInValidDummyClassConfigFD02(void)
  *
  * \file_path Pointer to the file_path for the dummy classification file.
  */
-void SCClassConfGenerateInValidDummyClassConfigFD03(void)
+FILE *SCClassConfGenerateInValidDummyClassConfigFD03(void)
 {
     const char *buffer =
         "conig classification: not-suspicious,Not Suspicious Traffic,3\n"
@@ -625,26 +626,11 @@ void SCClassConfGenerateInValidDummyClassConfigFD03(void)
         "config classification: _badunknown,Potentially Bad Traffic, 2\n"
         "config classification: misc-activity,Misc activity,-1\n";
 
-    fd = SCFmemopen((void *)buffer, strlen(buffer), "r");
+    FILE *fd = SCFmemopen((void *)buffer, strlen(buffer), "r");
     if (fd == NULL)
         SCLogDebug("Error with SCFmemopen() called by Classifiation Config test code");
 
-    return;
-}
-
-/**
- * \brief Deletes a file, whose path is specified as the argument.
- *
- * \file_path Pointer to the file_path that has to be deleted.
- */
-void SCClassConfDeleteDummyClassificationConfigFD(void)
-{
-    if (fd != NULL) {
-        fclose(fd);
-        fd = NULL;
-    }
-
-    return;
+    return fd;
 }
 
 /**
@@ -659,9 +645,8 @@ int SCClassConfTest01(void)
     if (de_ctx == NULL)
         return result;
 
-    SCClassConfGenerateValidDummyClassConfigFD01();
-    SCClassConfLoadClassficationConfigFile(de_ctx);
-    SCClassConfDeleteDummyClassificationConfigFD();
+    FILE *fd = SCClassConfGenerateValidDummyClassConfigFD01();
+    SCClassConfLoadClassficationConfigFile(de_ctx, fd);
 
     if (de_ctx->class_conf_ht == NULL)
         return result;
@@ -686,9 +671,8 @@ int SCClassConfTest02(void)
     if (de_ctx == NULL)
         return result;
 
-    SCClassConfGenerateInValidDummyClassConfigFD03();
-    SCClassConfLoadClassficationConfigFile(de_ctx);
-    SCClassConfDeleteDummyClassificationConfigFD();
+    FILE *fd = SCClassConfGenerateInValidDummyClassConfigFD03();
+    SCClassConfLoadClassficationConfigFile(de_ctx, fd);
 
     if (de_ctx->class_conf_ht == NULL)
         return result;
@@ -712,9 +696,8 @@ int SCClassConfTest03(void)
     if (de_ctx == NULL)
         return result;
 
-    SCClassConfGenerateInValidDummyClassConfigFD02();
-    SCClassConfLoadClassficationConfigFile(de_ctx);
-    SCClassConfDeleteDummyClassificationConfigFD();
+    FILE *fd = SCClassConfGenerateInValidDummyClassConfigFD02();
+    SCClassConfLoadClassficationConfigFile(de_ctx, fd);
 
     if (de_ctx->class_conf_ht == NULL)
         return result;
@@ -738,9 +721,8 @@ int SCClassConfTest04(void)
     if (de_ctx == NULL)
         return 0;
 
-    SCClassConfGenerateValidDummyClassConfigFD01();
-    SCClassConfLoadClassficationConfigFile(de_ctx);
-    SCClassConfDeleteDummyClassificationConfigFD();
+    FILE *fd = SCClassConfGenerateValidDummyClassConfigFD01();
+    SCClassConfLoadClassficationConfigFile(de_ctx, fd);
 
     if (de_ctx->class_conf_ht == NULL)
         return 0;
@@ -772,9 +754,8 @@ int SCClassConfTest05(void)
     if (de_ctx == NULL)
         return 0;
 
-    SCClassConfGenerateInValidDummyClassConfigFD03();
-    SCClassConfLoadClassficationConfigFile(de_ctx);
-    SCClassConfDeleteDummyClassificationConfigFD();
+    FILE *fd = SCClassConfGenerateInValidDummyClassConfigFD03();
+    SCClassConfLoadClassficationConfigFile(de_ctx, fd);
 
     if (de_ctx->class_conf_ht == NULL)
         return 0;
@@ -805,9 +786,8 @@ int SCClassConfTest06(void)
     if (de_ctx == NULL)
         return 0;
 
-    SCClassConfGenerateInValidDummyClassConfigFD02();
-    SCClassConfLoadClassficationConfigFile(de_ctx);
-    SCClassConfDeleteDummyClassificationConfigFD();
+    FILE *fd = SCClassConfGenerateInValidDummyClassConfigFD02();
+    SCClassConfLoadClassficationConfigFile(de_ctx, fd);
 
     if (de_ctx->class_conf_ht == NULL)
         return 0;
index 4d0c80a2675ced344fbd7014827f0bb6800d39f8..7d9748ed5997e3498112e4ed63a749c5c47695b4 100644 (file)
@@ -45,16 +45,15 @@ typedef struct SCClassConfClasstype_ {
 SCClassConfClasstype *SCClassConfAllocClasstype(uint8_t, const char *,
                                                 const char *, int);
 void SCClassConfDeAllocClasstype(SCClassConfClasstype *);
-void SCClassConfLoadClassficationConfigFile(DetectEngineCtx *);
+void SCClassConfLoadClassficationConfigFile(DetectEngineCtx *, FILE *fd);
 SCClassConfClasstype *SCClassConfGetClasstype(const char *,
                                               DetectEngineCtx *);
 void SCClassConfDeInitContext(DetectEngineCtx *);
 void SCClassConfRegisterTests(void);
 
 /* for unittests */
-void SCClassConfGenerateValidDummyClassConfigFD01(void);
-void SCClassConfGenerateInValidDummyClassConfigFD02(void);
-void SCClassConfGenerateInValidDummyClassConfigFD03(void);
-void SCClassConfDeleteDummyClassificationConfigFD(void);
+FILE *SCClassConfGenerateValidDummyClassConfigFD01(void);
+FILE *SCClassConfGenerateInValidDummyClassConfigFD02(void);
+FILE *SCClassConfGenerateInValidDummyClassConfigFD03(void);
 
 #endif /* __UTIL_CLASSIFICATION_CONFIG_H__ */