]> git.ipfire.org Git - thirdparty/snort3.git/commitdiff
Merge pull request #1563 in SNORT/snort3 from ~MIALTIZE/snort3:safec to master
authorMichael Altizer (mialtize) <mialtize@cisco.com>
Sun, 31 Mar 2019 05:23:43 +0000 (01:23 -0400)
committerMichael Altizer (mialtize) <mialtize@cisco.com>
Sun, 31 Mar 2019 05:23:43 +0000 (01:23 -0400)
Squashed commit of the following:

commit e71b6d78753ce9d363c87fd451bea6bb23e6a07d
Author: Michael Altizer <mialtize@cisco.com>
Date:   Sat Mar 30 15:50:25 2019 -0400

    safec: Update to work with modern versions of LibSafeC

    Tested with LibSafeC v30122018 3.4.
    LibSafeC is currently incompatible with Clang.
    - See: https://github.com/rurban/safeclib/issues/58

CMakeLists.txt
cmake/FindSafeC.cmake
cmake/include_libraries.cmake
cmake/sanity_checks.cmake
config.cmake.h.in
doc/tutorial.txt
src/utils/safec.h

index e06881f8227ac808494145dbac54ab7e866fc83f..8ba889448a5f3d57d74065e0d23496eb11c92a07 100644 (file)
@@ -133,7 +133,7 @@ else ()
     RPC DB:         Built-in")
 endif ()
 
-if (HAVE_SAFEC AND SAFEC_ENABLED)
+if (HAVE_SAFEC)
     message("\
     SafeC:          ON")
 else ()
index 5cf310c3908d8c4cf05ca55d8c547a4b4be207a9..a91323a5471923470a791b8b26174a0c452550e7 100644 (file)
@@ -1,22 +1,34 @@
-find_path (SAFEC_INCLUDE_DIR
-    NAMES libsafec/safe_lib.h
-)
 
-if (SAFEC_INCLUDE_DIR)
-    find_library(SAFEC_LIBRARIES
-        NAMES safec-1.0
-    )
-else()
-    set(SAFEC_INCLUDE_DIR "")
-endif()
+find_package(PkgConfig)
+
+# LibSafeC is currently incompatible with Clang - https://github.com/rurban/safeclib/issues/58
+if (PKG_CONFIG_EXECUTABLE AND NOT CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
+    execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} --list-all
+                    OUTPUT_VARIABLE _pkgconfig_list_result
+                    OUTPUT_STRIP_TRAILING_WHITESPACE)
+    string(REGEX MATCH "safec-([0-9]+\.[0-9])+" MATCHED ${_pkgconfig_list_result})
+    if (MATCHED)
+        set(SAFEC_VERSION ${CMAKE_MATCH_1})
+        pkg_check_modules(PC_SAFEC safec-${SAFEC_VERSION})
 
-if (SAFEC_LIBRARIES)
-    set(HAVE_SAFEC "1")
+        find_path(SAFEC_INCLUDE_DIR
+            NAMES libsafec/safe_lib.h
+            HINTS ${PC_SAFEC_INCLUDEDIR} ${PC_SAFEC_INCLUDEDIRS}
+            NO_SYSTEM_ENVIRONMENT_PATH
+        )
+        find_library(SAFEC_LIBRARIES
+            NAMES safec-${SAFEC_VERSION}
+            HINTS ${PC_SAFEC_LIBDIR} ${PC-SAFEC_LIBRARY_DIRS}
+        )
+    endif()
 endif()
 
 include(FindPackageHandleStandardArgs)
-
 find_package_handle_standard_args(SafeC
     REQUIRED_VARS SAFEC_INCLUDE_DIR SAFEC_LIBRARIES
 )
 
+mark_as_advanced(
+    SAFEC_INCLUDE_DIR
+    SAFEC_LIBRARIES
+)
index 482d92edabfca2dee200dc0e091d4f660b568de2..401302f151fbd59156344aa9dc87494f32d4fd50 100644 (file)
@@ -19,7 +19,9 @@ find_package(Asciidoc QUIET)
 find_package(DBLATEX QUIET)
 find_package(Ruby QUIET 1.8.7)
 find_package(HS QUIET 4.4.0)
-find_package(SafeC QUIET)
+if (ENABLE_SAFEC)
+    find_package(SafeC QUIET)
+endif (ENABLE_SAFEC)
 find_package(Flatbuffers QUIET)
 find_package(ICONV QUIET)
 find_package(UUID QUIET)
index 333c23573fe416498709db6be6fd4bddf7a92440..3f2a46b2019bf0c7f30dfb534be99732becdb768 100644 (file)
@@ -143,3 +143,7 @@ if (ICONV_FOUND)
     # Not actually a sanity check at the moment...
     set (HAVE_ICONV "1")
 endif()
+
+if (SAFEC_FOUND)
+    check_library_exists (${SAFEC_LIBRARIES} printf_s "" HAVE_SAFEC)
+endif()
index 98cbb6c98328bbdc44bc621fbd77f7e81a67271e..624d5ec73e80864a212f776f7ef525fd4f10be8d 100644 (file)
 
 /* safec available */
 #cmakedefine HAVE_SAFEC 1
-#cmakedefine ENABLE_SAFEC 1
 
 #cmakedefine HAVE_FLATBUFFERS 1
 
index fdbb68898294bf2a91d5f339a611a1c49286d873..7eef4f7c212cdd1032524e5e33d2dd6feb538490 100644 (file)
@@ -56,7 +56,7 @@ Optional:
 * lzma >= 5.1.2 from http://tukaani.org/xz/ for decompression of SWF and
   PDF files
 
-* safec from https://sourceforge.net/projects/safeclib/ for runtime bounds
+* safec from https://github.com/rurban/safeclib/ for runtime bounds
   checks on certain legacy C-library calls
 
 * source-highlight from http://www.gnu.org/software/src-highlite/ to
index 888fd9c0b08ea4a1a7939749a3d9906ac52abace..0311cef00492431539c6b7a08ddbda74cddbc773 100644 (file)
 #ifndef UTILS_SAFEC_H
 #define UTILS_SAFEC_H
 
-//FIXIT-M combine these macros in the build foo 
-#if defined(HAVE_SAFEC) && defined(ENABLE_SAFEC)
+#ifdef HAVE_SAFEC
 
 extern "C"
 {
-#include <libsafec/safe_lib.h>
+#include <libsafec/safe_mem_lib.h>
+#include <libsafec/safe_str_lib.h>
 }
 
 #else