]> git.ipfire.org Git - thirdparty/snort3.git/commitdiff
add dynamic build support to ohi
authorsnorty <snorty@localhost.localdomain>
Fri, 5 Aug 2016 21:11:19 +0000 (17:11 -0400)
committersnorty <snorty@localhost.localdomain>
Tue, 9 Aug 2016 21:33:29 +0000 (17:33 -0400)
15 files changed:
src/Makefile.am
src/decompress/file_decomp.cc
src/decompress/file_decomp.h
src/log/log_text.cc
src/main/snort.cc
src/mime/file_mime_config.h
src/service_inspectors/http_inspect/Makefile.am
src/service_inspectors/http_inspect/http_inspect.cc
src/service_inspectors/service_inspectors.cc
src/utils/kmap.cc
src/utils/kmap.h
src/utils/util_jsnorm.cc
src/utils/util_jsnorm.h
src/utils/util_utf.cc
src/utils/util_utf.h

index 96b543c1a22418563ff30496d8c1dff46ee87a73..cd5707774a25b0af188f0b3aa8bb1aa9c1e32a40 100644 (file)
@@ -16,6 +16,7 @@ service_inspectors/dnp3/libdnp3.a \
 service_inspectors/dns/libdns.a \
 service_inspectors/ftp_telnet/libftp_telnet.a \
 service_inspectors/gtp/libgtp_inspect.a \
+service_inspectors/http_inspect/libhttp_inspect.a \
 service_inspectors/modbus/libmodbus.a \
 service_inspectors/nhttp_inspect/libnhttp_inspect.a \
 service_inspectors/rpc_decode/librpc_decode.a \
@@ -75,7 +76,6 @@ stream/user/libstream_user.a \
 stream/file/libstream_file.a \
 stream/libstream_paf.a \
 mime/libmime.a \
-service_inspectors/http_inspect/libhttp_inspect.a \
 $(pig_list) \
 ips_options/libips_options.a \
 search_engines/libsearch_engines.a \
index fbdbb57e4431e7d01649e68f9a941276a67a50f8..e658ff3f868e380e62a0d2d47ae58de5abc21fca 100644 (file)
@@ -71,6 +71,8 @@ static struct sig_map_s
 
 static uint8_t File_Decomp_Buffer[DECODE_BLEN];
 
+void keep_decomp_lib() { }
+
 /* Look for possible sig at the current payload location.
    Do NOT beyond the current location (initial Next_In). */
 static fd_status_t Locate_Sig_Here(fd_session_p_t SessionPtr)
index 6c400a261b126c0c23fda5e00add128e20c1ceb2..84bbfdb65584b8e2af46cd454b4c8d4154af1e9b 100644 (file)
@@ -1,6 +1,5 @@
 //--------------------------------------------------------------------------
 // Copyright (C) 2014-2016 Cisco and/or its affiliates. All rights reserved.
-// Copyright (C) 2003-2013 Sourcefire, Inc.
 //
 // This program is free software; you can redistribute it and/or modify it
 // under the terms of the GNU General Public License Version 2 as published
@@ -286,6 +285,8 @@ inline bool Move_N(fd_session_p_t SessionPtr, uint16_t N)
 
 /* API Functions */
 
+void keep_decomp_lib();  // FIXIT-L eliminate; required to keep symbols for dyn plugins
+
 /* Create a new decompression session object */
 fd_session_p_t SO_PUBLIC File_Decomp_New();
 
index ab3d5e6c39804d5ff693e712587a246d07493074..3cbdf067b7efde347a78d73c78468b349cb80a70 100644 (file)
@@ -1473,14 +1473,10 @@ void LogPayload(TextLog* log, Packet* p)
         if (SnortConfig::output_char_data())
         {
             LogCharData(log, (const char*)p->data, p->dsize);
-            if (!IsJSNormData(p->flow))
-            {
-                TextLog_Print(log, "%s\n", "Normalized JavaScript for this packet");
-                LogCharData(log, (const char*)g_file_data.data, g_file_data.len);
-            }
-            else if (!IsGzipData(p->flow))
+
+            if ( g_file_data.len > 0 )
             {
-                TextLog_Print(log, "%s\n", "Decompressed Data for this packet");
+                TextLog_Print(log, "%s\n", "File data");
                 LogCharData(log, (const char*)g_file_data.data, g_file_data.len);
             }
         }
@@ -1499,14 +1495,10 @@ void LogPayload(TextLog* log, Packet* p)
             else
             {
                 LogNetData(log, p->data, p->dsize, p);
-                if (!IsJSNormData(p->flow))
-                {
-                    TextLog_Print(log, "%s\n", "Normalized JavaScript for this packet");
-                    LogNetData(log, g_file_data.data, g_file_data.len, p);
-                }
-                else if (!IsGzipData(p->flow))
+
+                if ( g_file_data.len > 0 )
                 {
-                    TextLog_Print(log, "%s\n", "Decompressed Data for this packet");
+                    TextLog_Print(log, "%s\n", "File data");
                     LogNetData(log, g_file_data.data, g_file_data.len, p);
                 }
             }
index 294c0f4fa68766e39b8eea4f0efb777c9b7a1787..29540c9bb3ef91a5ad1584c3ac12a6d3a4034158 100644 (file)
@@ -35,6 +35,7 @@
 #include <netinet/in.h>
 #include <sys/stat.h>
 
+#include "decompress/file_decomp.h"
 #include "detection/detect.h"
 #include "detection/detection_util.h"
 #include "detection/fp_config.h"
 #include "target_based/sftarget_reader.h"
 #include "time/packet_time.h"
 #include "time/periodic.h"
+#include "utils/kmap.h"
 #include "utils/util.h"
+#include "utils/util_utf.h"
+#include "utils/util_jsnorm.h"
 
 #ifdef PIGLET
 #include "piglet/piglet.h"
@@ -479,6 +483,11 @@ void Snort::setup(int argc, char* argv[])
 
     set_quick_exit(false);
 
+    keep_utf_lib();
+    keep_kmap_lib();
+    keep_decomp_lib();
+    keep_jsnorm_lib();
+
     TimeStart();
 }
 
index 9b8b2af5066b90fcd63489323fadb9d3eb2b5144..e094ba376b548fc18434fcce31a6f1d24179fb84 100644 (file)
@@ -36,7 +36,7 @@
 #define MAX_DEPTH                     65535
 #define MIN_DEPTH                     -1
 
-class DecodeConfig
+class SO_PUBLIC DecodeConfig
 {
 public:
     void set_ignore_data(bool);
index c40f185bc539feb2f1937df43adc363107bf975f..e64ea9800afdfaf45a2cc76f03a4d9c0592b1670 100644 (file)
@@ -21,15 +21,14 @@ hi_ui_config.cc hi_ui_config.h \
 hi_ui_iis_unicode_map.cc hi_ui_iis_unicode_map.h \
 hi_util.h
 
-# can't be linked dynamically yet
-#if STATIC_INSPECTORS
+if STATIC_INSPECTORS
 noinst_LIBRARIES = libhttp_inspect.a
 libhttp_inspect_a_SOURCES = $(file_list)
-#else
-#shlibdir = $(pkglibdir)/inspectors
-#shlib_LTLIBRARIES = libhttp_inspect.la
-#libhttp_inspect_la_CXXFLAGS = $(AM_CXXFLAGS) -DBUILDING_SO
-#libhttp_inspect_la_LDFLAGS = $(AM_LDFLAGS) -export-dynamic -shared
-#libhttp_inspect_la_SOURCES = $(file_list)
-#endif
+else
+shlibdir = $(pkglibdir)/inspectors
+shlib_LTLIBRARIES = libhttp_inspect.la
+libhttp_inspect_la_CXXFLAGS = $(AM_CXXFLAGS) -DBUILDING_SO
+libhttp_inspect_la_LDFLAGS = $(AM_LDFLAGS) -export-dynamic -shared
+libhttp_inspect_la_SOURCES = $(file_list)
+endif
 
index b03e963c1f35b0274dac17f0aa42fa8122a1857e..40ccab1bfaaee600b60925fcb8b53c83775b6686 100644 (file)
@@ -455,16 +455,15 @@ static const InspectApi hi_api =
     nullptr  // reset
 };
 
-// can't be linked dynamically yet
-//#ifdef BUILDING_SO
-//SO_PUBLIC const BaseApi* snort_plugins[] =
-//{
-//    &hg_api.base,
-//    &hi_api.base,
-//    nullptr
-//};
-//#else
+#ifdef BUILDING_SO
+SO_PUBLIC const BaseApi* snort_plugins[] =
+{
+    &hg_api.base,
+    &hi_api.base,
+    nullptr
+};
+#else
 const BaseApi* sin_http_global = &hg_api.base;
 const BaseApi* sin_http_inspect = &hi_api.base;
-//#endif
+#endif
 
index 0b51f7b64dd9881c1569b7c370e8185e17d9d541..90ffe3ee914dd0f744c9b904def90c25be31ff79 100644 (file)
@@ -24,8 +24,6 @@
 #endif
 #include "framework/inspector.h"
 
-extern const BaseApi* sin_http_global;
-extern const BaseApi* sin_http_inspect;
 extern const BaseApi* sin_imap;
 extern const BaseApi* sin_pop;
 extern const BaseApi* sin_smtp;
@@ -62,6 +60,8 @@ extern const BaseApi* sin_ftp_client;
 extern const BaseApi* sin_ftp_server;
 extern const BaseApi* sin_ftp_data;
 extern const BaseApi* sin_gtp;
+extern const BaseApi* sin_http_global;
+extern const BaseApi* sin_http_inspect;
 extern const BaseApi* sin_modbus;
 extern const BaseApi* sin_nhttp;
 extern const BaseApi* sin_rpc_decode;
@@ -73,8 +73,6 @@ extern const BaseApi* sin_wizard;
 
 const BaseApi* service_inspectors[] =
 {
-    sin_http_global,
-    sin_http_inspect,
     sin_imap,
     sin_pop,
     sin_smtp,
@@ -111,6 +109,8 @@ const BaseApi* service_inspectors[] =
     sin_ftp_server,
     sin_ftp_data,
     sin_gtp,
+    sin_http_global,
+    sin_http_inspect,
     sin_modbus,
     sin_nhttp,
     sin_rpc_decode,
index 43ff4a90197e54daf2bb416fc9762130130fcd21..1e3ea539d6ed868fd9d2fd2763767145c2360938 100644 (file)
@@ -35,9 +35,8 @@
 
 #include "utils/util.h"
 
-/*
-*
-*/
+void keep_kmap_lib() { }
+
 KMAP* KMapNew(KMapUserFreeFunc userfree)
 {
     KMAP* km = (KMAP*)snort_calloc(sizeof(KMAP));
index 4de3867c19764d65515f55bc10132bbcc303b2fc..fca2336665f9655be5f1e6c7ecacba2d6f010ade 100644 (file)
@@ -72,6 +72,8 @@ typedef struct _kmap
     int nocase;
 } KMAP;
 
+void keep_kmap_lib();  // FIXIT-L eliminate; required to keep symbols for dyn plugins
+
 SO_PUBLIC KMAP* KMapNew(KMapUserFreeFunc userfree);
 SO_PUBLIC void KMapDelete(KMAP* km);
 
index 9e9faf4052f5f6492f1de99c60416a4e2bd5b770..f0b61bcf16ba615ba690db5e4206818b2136a889 100644 (file)
@@ -43,6 +43,8 @@
 
 #define ANY '\0'
 
+void keep_jsnorm_lib() { }
+
 typedef enum
 {
     PNORM_ACT_DQUOTES,
index 20147de28914c298552bd84bb3705058245d7a74..de8885aa49dc3ffa1854c6da9cd2474b4ae0a72f 100644 (file)
@@ -39,6 +39,8 @@ typedef struct
     uint16_t alerts;
 } JSState;
 
+void keep_jsnorm_lib();  // FIXIT-L eliminate; required to keep symbols for dyn plugins
+
 SO_PUBLIC void InitJSNormLookupTable();
 
 SO_PUBLIC int JSNormalizeDecode(
index 9f983cb832b6c3c3a0fd3f6a546cc3446dc6a747..ff06d938b2db83e2efccf6a5a20c0ad57173e258 100644 (file)
@@ -28,6 +28,8 @@
 #define DSTATE_THIRD 2
 #define DSTATE_FOURTH 3
 
+void keep_utf_lib() { }
+
 /* init a new decode_utf_state_t */
 int init_decode_utf_state(decode_utf_state_t* p)
 {
index 35ac8c5b055dbe44b55dab5af7d7f3052ff9b2f2..452e495e43334f2d10493cb20a7c8363db8e1021 100644 (file)
@@ -46,6 +46,8 @@ struct decode_utf_state_t
     int charset;
 };
 
+void keep_utf_lib();  // FIXIT-L eliminate; required to keep symbols for dyn plugins
+
 // Init & Terminate functions for decode_utf_state_t
 SO_PUBLIC int init_decode_utf_state(decode_utf_state_t*);
 SO_PUBLIC int term_decode_utf_state(decode_utf_state_t*);