From: snorty Date: Fri, 5 Aug 2016 21:11:19 +0000 (-0400) Subject: add dynamic build support to ohi X-Git-Tag: 3.0.0-233~307 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=bb63458c5550444285e9ebb5e900f74cfc040143;p=thirdparty%2Fsnort3.git add dynamic build support to ohi --- diff --git a/src/Makefile.am b/src/Makefile.am index 96b543c1a..cd5707774 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -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 \ diff --git a/src/decompress/file_decomp.cc b/src/decompress/file_decomp.cc index fbdbb57e4..e658ff3f8 100644 --- a/src/decompress/file_decomp.cc +++ b/src/decompress/file_decomp.cc @@ -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) diff --git a/src/decompress/file_decomp.h b/src/decompress/file_decomp.h index 6c400a261..84bbfdb65 100644 --- a/src/decompress/file_decomp.h +++ b/src/decompress/file_decomp.h @@ -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(); diff --git a/src/log/log_text.cc b/src/log/log_text.cc index ab3d5e6c3..3cbdf067b 100644 --- a/src/log/log_text.cc +++ b/src/log/log_text.cc @@ -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); } } diff --git a/src/main/snort.cc b/src/main/snort.cc index 294c0f4fa..29540c9bb 100644 --- a/src/main/snort.cc +++ b/src/main/snort.cc @@ -35,6 +35,7 @@ #include #include +#include "decompress/file_decomp.h" #include "detection/detect.h" #include "detection/detection_util.h" #include "detection/fp_config.h" @@ -75,7 +76,10 @@ #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(); } diff --git a/src/mime/file_mime_config.h b/src/mime/file_mime_config.h index 9b8b2af50..e094ba376 100644 --- a/src/mime/file_mime_config.h +++ b/src/mime/file_mime_config.h @@ -36,7 +36,7 @@ #define MAX_DEPTH 65535 #define MIN_DEPTH -1 -class DecodeConfig +class SO_PUBLIC DecodeConfig { public: void set_ignore_data(bool); diff --git a/src/service_inspectors/http_inspect/Makefile.am b/src/service_inspectors/http_inspect/Makefile.am index c40f185bc..e64ea9800 100644 --- a/src/service_inspectors/http_inspect/Makefile.am +++ b/src/service_inspectors/http_inspect/Makefile.am @@ -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 diff --git a/src/service_inspectors/http_inspect/http_inspect.cc b/src/service_inspectors/http_inspect/http_inspect.cc index b03e963c1..40ccab1bf 100644 --- a/src/service_inspectors/http_inspect/http_inspect.cc +++ b/src/service_inspectors/http_inspect/http_inspect.cc @@ -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 diff --git a/src/service_inspectors/service_inspectors.cc b/src/service_inspectors/service_inspectors.cc index 0b51f7b64..90ffe3ee9 100644 --- a/src/service_inspectors/service_inspectors.cc +++ b/src/service_inspectors/service_inspectors.cc @@ -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, diff --git a/src/utils/kmap.cc b/src/utils/kmap.cc index 43ff4a901..1e3ea539d 100644 --- a/src/utils/kmap.cc +++ b/src/utils/kmap.cc @@ -35,9 +35,8 @@ #include "utils/util.h" -/* -* -*/ +void keep_kmap_lib() { } + KMAP* KMapNew(KMapUserFreeFunc userfree) { KMAP* km = (KMAP*)snort_calloc(sizeof(KMAP)); diff --git a/src/utils/kmap.h b/src/utils/kmap.h index 4de3867c1..fca233666 100644 --- a/src/utils/kmap.h +++ b/src/utils/kmap.h @@ -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); diff --git a/src/utils/util_jsnorm.cc b/src/utils/util_jsnorm.cc index 9e9faf405..f0b61bcf1 100644 --- a/src/utils/util_jsnorm.cc +++ b/src/utils/util_jsnorm.cc @@ -43,6 +43,8 @@ #define ANY '\0' +void keep_jsnorm_lib() { } + typedef enum { PNORM_ACT_DQUOTES, diff --git a/src/utils/util_jsnorm.h b/src/utils/util_jsnorm.h index 20147de28..de8885aa4 100644 --- a/src/utils/util_jsnorm.h +++ b/src/utils/util_jsnorm.h @@ -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( diff --git a/src/utils/util_utf.cc b/src/utils/util_utf.cc index 9f983cb83..ff06d938b 100644 --- a/src/utils/util_utf.cc +++ b/src/utils/util_utf.cc @@ -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) { diff --git a/src/utils/util_utf.h b/src/utils/util_utf.h index 35ac8c5b0..452e495e4 100644 --- a/src/utils/util_utf.h +++ b/src/utils/util_utf.h @@ -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*);