diff --git a/.github/workflows/build-centos-7.yml b/.github/workflows/build-centos-7.yml index 49744252de25..a54350411b87 100644 --- a/.github/workflows/build-centos-7.yml +++ b/.github/workflows/build-centos-7.yml @@ -57,7 +57,6 @@ jobs: git \ jansson-devel \ jq \ - lua-devel \ libtool \ libyaml-devel \ libnfnetlink-devel \ diff --git a/.github/workflows/builds.yml b/.github/workflows/builds.yml index ffa65b5f3e48..ee33b4146d66 100644 --- a/.github/workflows/builds.yml +++ b/.github/workflows/builds.yml @@ -212,7 +212,6 @@ jobs: git \ jansson-devel \ jq \ - lua-devel \ libtool \ libyaml-devel \ libnfnetlink-devel \ @@ -266,7 +265,7 @@ jobs: CFLAGS="${DEFAULT_CFLAGS}" ./configure - run: make -j ${{ env.CPUS }} distcheck env: - DISTCHECK_CONFIGURE_FLAGS: "--enable-unittests --enable-debug --enable-lua --enable-geoip --enable-profiling --enable-profiling-locks --enable-dpdk" + DISTCHECK_CONFIGURE_FLAGS: "--enable-unittests --enable-debug --enable-geoip --enable-profiling --enable-profiling-locks --enable-dpdk" MAKEFLAGS: "-j ${{ env.CPUS }}" - run: test -e doc/userguide/suricata.1 - name: Checking includes @@ -365,7 +364,6 @@ jobs: git \ jansson-devel \ jq \ - lua-devel \ libtool \ libyaml-devel \ libnfnetlink-devel \ @@ -458,7 +456,6 @@ jobs: git \ jansson-devel \ jq \ - lua-devel \ libtool \ libyaml-devel \ libnfnetlink-devel \ @@ -554,7 +551,6 @@ jobs: autoconf \ automake \ cargo-vendor \ - cbindgen \ diffutils \ numactl-devel \ dpdk-devel \ @@ -564,7 +560,6 @@ jobs: git \ jansson-devel \ jq \ - lua-devel \ libtool \ libyaml-devel \ libnfnetlink-devel \ @@ -614,6 +609,9 @@ jobs: - run: python3 ./suricata-verify/run.py -q --debug-failed - run: suricata-update -V - run: suricatasc -h + # Test build after clean. + - run: make clean + - run: make -j ${{ env.CPUS }} centos-stream8: name: CentOS Stream 8 @@ -654,7 +652,6 @@ jobs: git \ jansson-devel \ jq \ - lua-devel \ libtool \ libyaml-devel \ libnfnetlink-devel \ @@ -744,7 +741,6 @@ jobs: hiredis-devel \ jansson-devel \ jq \ - lua-devel \ libasan \ libtool \ libyaml-devel \ @@ -842,7 +838,6 @@ jobs: hiredis-devel \ jansson-devel \ jq \ - lua-devel \ libasan \ libtool \ libyaml-devel \ @@ -880,7 +875,7 @@ jobs: # Set the concurrency level for cocci. run: CONCURRENCY_LEVEL=${{ env.CPUS }} make check - run: make distclean - - run: CC="clang" CFLAGS="$DEFAULT_CFLAGS -Wshadow -fsanitize=address -fno-omit-frame-pointer" ./configure --enable-debug --enable-unittests --disable-shared --enable-rust-strict --enable-hiredis --enable-nfqueue --enable-lua + - run: CC="clang" CFLAGS="$DEFAULT_CFLAGS -Wshadow -fsanitize=address -fno-omit-frame-pointer" ./configure --enable-debug --enable-unittests --disable-shared --enable-rust-strict --enable-hiredis --enable-nfqueue env: LDFLAGS: "-fsanitize=address" ac_cv_func_realloc_0_nonnull: "yes" @@ -942,7 +937,6 @@ jobs: hiredis-devel \ jansson-devel \ jq \ - lua-devel \ libasan \ libtool \ libyaml-devel \ @@ -1040,7 +1034,6 @@ jobs: hiredis-devel \ jansson-devel \ jq \ - lua-devel \ libasan \ libtool \ libyaml-devel \ @@ -1071,7 +1064,7 @@ jobs: - run: tar xf prep/libhtp.tar.gz - run: tar xf prep/suricata-update.tar.gz - run: ./autogen.sh - - run: CC="clang" CFLAGS="$DEFAULT_CFLAGS -Wshadow -fsanitize=address -fno-omit-frame-pointer" ./configure --enable-debug --enable-unittests --disable-shared --enable-rust-strict --enable-hiredis --enable-nfqueue --enable-lua + - run: CC="clang" CFLAGS="$DEFAULT_CFLAGS -Wshadow -fsanitize=address -fno-omit-frame-pointer" ./configure --enable-debug --enable-unittests --disable-shared --enable-rust-strict --enable-hiredis --enable-nfqueue env: LDFLAGS: "-fsanitize=address" ac_cv_func_realloc_0_nonnull: "yes" @@ -1133,7 +1126,6 @@ jobs: hiredis-devel \ jansson-devel \ jq \ - lua-devel \ libasan \ libtool \ libyaml-devel \ @@ -1218,7 +1210,6 @@ jobs: hiredis-devel \ jansson-devel \ jq \ - lua-devel \ libasan \ libtool \ libyaml-devel \ @@ -1312,7 +1303,6 @@ jobs: gcc \ gcc-c++ \ git \ - lua-devel \ libasan \ libtool \ libyaml-devel \ @@ -1389,7 +1379,6 @@ jobs: libnuma-dev \ libhiredis-dev \ libhyperscan-dev \ - liblua5.1-dev \ libjansson-dev \ libevent-dev \ libevent-pthreads-2.1-7 \ @@ -1516,7 +1505,6 @@ jobs: libnfnetlink0 \ libnuma-dev \ libhiredis-dev \ - liblua5.1-dev \ libjansson-dev \ libevent-dev \ libevent-pthreads-2.1-7 \ @@ -2163,7 +2151,6 @@ jobs: libmaxminddb-dev \ libjansson-dev \ libjansson4 \ - liblua5.1-dev \ libnuma-dev \ liblz4-dev \ libssl-dev \ @@ -2196,7 +2183,7 @@ jobs: # -j2 caused random failures during cargo vendor - run: make distcheck env: - DISTCHECK_CONFIGURE_FLAGS: "--enable-unittests --enable-debug --enable-lua --enable-geoip --enable-profiling --enable-profiling-locks --enable-dpdk" + DISTCHECK_CONFIGURE_FLAGS: "--enable-unittests --enable-debug --enable-geoip --enable-profiling --enable-profiling-locks --enable-dpdk" - run: test -e doc/userguide/suricata.1 - run: test -e doc/userguide/userguide.pdf - name: Building Rust documentation @@ -2332,7 +2319,6 @@ jobs: libmaxminddb-dev \ libjansson-dev \ libjansson4 \ - liblua5.1-dev \ libnuma-dev \ liblz4-dev \ libssl-dev \ @@ -2370,7 +2356,7 @@ jobs: - run: tar xf prep/suricata-update.tar.gz - run: tar xf prep/suricata-verify.tar.gz - run: ./autogen.sh - - run: CFLAGS="${DEFAULT_CFLAGS}" ./configure --enable-unittests --enable-debug --enable-lua --enable-geoip --enable-profiling --enable-profiling-locks --enable-dpdk + - run: CFLAGS="${DEFAULT_CFLAGS}" ./configure --enable-unittests --enable-debug --enable-geoip --enable-profiling --enable-profiling-locks --enable-dpdk - run: make -j ${{ env.CPUS }} - run: make check - name: Building Rust documentation @@ -2420,7 +2406,6 @@ jobs: libmagic-dev \ libjansson-dev \ libgeoip-dev \ - liblua5.1-dev \ libhiredis-dev \ libevent-dev \ libtool \ @@ -2503,7 +2488,6 @@ jobs: libmagic-dev \ libjansson-dev \ libgeoip-dev \ - liblua5.1-dev \ libhiredis-dev \ libevent-dev \ libtool \ @@ -2570,7 +2554,6 @@ jobs: libnet \ libtool \ libyaml \ - lua \ pkg-config \ python \ rust \ diff --git a/.github/workflows/rust-checks.yml b/.github/workflows/rust-checks.yml index 5ac2739bf3d7..8b62e369294c 100644 --- a/.github/workflows/rust-checks.yml +++ b/.github/workflows/rust-checks.yml @@ -56,7 +56,6 @@ jobs: git \ jansson-devel \ jq \ - lua-devel \ libtool \ libyaml-devel \ libnfnetlink-devel \ @@ -141,7 +140,6 @@ jobs: git \ jansson-devel \ jq \ - lua-devel \ libtool \ libyaml-devel \ libnfnetlink-devel \ diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index eebf43c13eb8..d2df6cc517c1 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -44,7 +44,6 @@ jobs: git \ jansson-devel \ jq \ - lua-devel \ libtool \ libyaml-devel \ libnfnetlink-devel \ diff --git a/.github/workflows/scan-build.yml b/.github/workflows/scan-build.yml index 6910f508af49..3d949d54fc33 100644 --- a/.github/workflows/scan-build.yml +++ b/.github/workflows/scan-build.yml @@ -56,7 +56,6 @@ jobs: libnuma-dev \ libhiredis-dev \ libhyperscan-dev \ - liblua5.1-dev \ libjansson-dev \ libevent-dev \ libevent-pthreads-2.1-7 \ @@ -79,7 +78,7 @@ jobs: # disable security.insecureAPI.DeprecatedOrUnsafeBufferHandling explicitly as # this will require significant effort to address. - run: | - scan-build-16 --status-bugs --exclude libhtp/ \ + scan-build-16 --status-bugs --exclude libhtp/ --exclude rust \ -enable-checker valist.Uninitialized \ -enable-checker valist.CopyToSelf \ -enable-checker valist.Unterminated \ diff --git a/configure.ac b/configure.ac index 9e568bbfe2c5..5dc9c7f2cc14 100644 --- a/configure.ac +++ b/configure.ac @@ -1876,195 +1876,9 @@ fi # liblua - AC_ARG_ENABLE(lua, - AS_HELP_STRING([--enable-lua],[Enable Lua support]), - [ enable_lua="$enableval"], - [ enable_lua="no"]) - AC_ARG_ENABLE(luajit, - AS_HELP_STRING([--enable-luajit],[Enable Luajit support]), - [ enable_luajit="$enableval"], - [ enable_luajit="no"]) - if test "$enable_lua" = "yes"; then - if test "$enable_luajit" = "yes"; then - echo "ERROR: can't enable liblua and luajit at the same time." - echo "For LuaJIT, just use --enable-luajit. For liblua (no jit)" - echo "support, use just --enable-lua." - echo "Both options will enable the Lua scripting capabilities" - echo "in Suricata". - echo - exit 1 - fi - fi - - AC_ARG_WITH(liblua_includes, - [ --with-liblua-includes=DIR liblua include directory], - [with_liblua_includes="$withval"],[with_liblua_includes="no"]) - AC_ARG_WITH(liblua_libraries, - [ --with-liblua-libraries=DIR liblua library directory], - [with_liblua_libraries="$withval"],[with_liblua_libraries="no"]) - - if test "$enable_lua" = "yes"; then - if test "$with_liblua_includes" != "no"; then - CPPFLAGS="${CPPFLAGS} -I${with_liblua_includes}" - else - # lua lua51 lua5.1 lua-5.1 - PKG_CHECK_MODULES([LUA], [lua], [LUA="yes"], [ - PKG_CHECK_MODULES([LUA], [lua5.1], [LUA="yes"], [ - PKG_CHECK_MODULES([LUA], [lua-5.1], [LUA="yes"], [ - PKG_CHECK_MODULES([LUA], [lua51], [LUA="yes"], [ - LUA="no" - ]) - ]) - ]) - ]) - CPPFLAGS="${CPPFLAGS} ${LUA_CFLAGS}" - fi - - AC_CHECK_HEADER(lualib.h,LUA="yes",LUA="no") - if test "$LUA" = "yes"; then - if test "$with_liblua_libraries" != "no"; then - LDFLAGS="${LDFLAGS} -L${with_liblua_libraries}" - AC_CHECK_LIB(${LUA_LIB_NAME}, luaL_openlibs,, LUA="no") - if test "$LUA" = "no"; then - echo - echo " ERROR! liblua library not found, go get it" - echo " from http://lua.org/index.html or your distribution:" - echo - echo " Ubuntu: apt-get install liblua5.1-dev" - echo " Fedora: dnf install lua-devel" - echo " CentOS/RHEL: yum install lua-devel" - echo - echo " If you installed software in a non-standard prefix" - echo " consider adjusting the PKG_CONFIG_PATH environment variable" - echo " or use --with-liblua-libraries configure option." - echo - exit 1 - fi - else - # lua lua51 lua5.1 lua-5.1 - PKG_CHECK_MODULES([LUA], [lua], [LUA="yes"], [ - PKG_CHECK_MODULES([LUA], [lua5.1], [LUA="yes"], [ - PKG_CHECK_MODULES([LUA], [lua-5.1], [LUA="yes"], [ - PKG_CHECK_MODULES([LUA], [lua51], [LUA="yes"], [ - LUA="no" - ]) - ]) - ]) - ]) - LIBS="${LIBS} ${LUA_LIBS}" - fi - - if test "$LUA" = "no"; then - AC_CHECK_LIB(lua, luaL_openlibs,, LUA="no") - fi - - if test "$LUA" = "yes"; then - AC_DEFINE([HAVE_LUA],[1],[liblua available]) - enable_lua="yes" - fi - else - echo - echo " ERROR! liblua headers not found, go get them" - echo " from http://lua.org/index.html or your distribution:" - echo - echo " Ubuntu: apt-get install liblua5.1-dev" - echo " Fedora: dnf install lua-devel" - echo " CentOS/RHEL: yum install lua-devel" - echo - echo " If you installed software in a non-standard prefix" - echo " consider adjusting the PKG_CONFIG_PATH environment variable" - echo " or use --with-liblua-includes and --with-liblua-libraries" - echo " configure option." - echo - exit 1 - fi - fi - - # libluajit - AC_ARG_WITH(libluajit_includes, - [ --with-libluajit-includes=DIR libluajit include directory], - [with_libluajit_includes="$withval"],[with_libluajit_includes="no"]) - AC_ARG_WITH(libluajit_libraries, - [ --with-libluajit-libraries=DIR libluajit library directory], - [with_libluajit_libraries="$withval"],[with_libluajit_libraries="no"]) - - if test "$enable_luajit" = "yes"; then - if test "$with_libluajit_includes" != "no"; then - CPPFLAGS="${CPPFLAGS} -I${with_libluajit_includes}" - else - PKG_CHECK_MODULES([LUAJIT], [luajit], , LUAJIT="no") - CPPFLAGS="${CPPFLAGS} ${LUAJIT_CFLAGS}" - fi - - AC_CHECK_HEADER(lualib.h,LUAJIT="yes",LUAJIT="no") - if test "$LUAJIT" = "yes"; then - if test "$with_libluajit_libraries" != "no"; then - LDFLAGS="${LDFLAGS} -L${with_libluajit_libraries}" - else - PKG_CHECK_MODULES([LUAJIT], [luajit]) - LIBS="${LIBS} ${LUAJIT_LIBS}" - fi - - AC_CHECK_LIB(luajit-5.1, luaL_openlibs,, LUAJIT="no") - - if test "$LUAJIT" = "no"; then - echo - echo " ERROR! libluajit library not found, go get it" - echo " from http://luajit.org/index.html or your distribution:" - echo - echo " Ubuntu: apt-get install libluajit-5.1-dev" - echo - echo " If you installed software in a non-standard prefix" - echo " consider adjusting the PKG_CONFIG_PATH environment variable" - echo " or use --with-libluajit-libraries configure option." - echo - exit 1 - fi - - AC_DEFINE([HAVE_LUA],[1],[lua support available]) - AC_DEFINE([HAVE_LUAJIT],[1],[libluajit available]) - enable_lua="yes, through luajit" - enable_luajit="yes" - else - echo - echo " ERROR! libluajit headers not found, go get them" - echo " from http://luajit.org/index.html or your distribution:" - echo - echo " Ubuntu: apt-get install libluajit-5.1-dev" - echo - echo " If you installed software in a non-standard prefix" - echo " consider adjusting the PKG_CONFIG_PATH environment variable" - echo " or use --with-libluajit-includes and --with-libluajit-libraries" - echo " configure option." - echo - exit 1 - fi - fi - - AM_CONDITIONAL([HAVE_LUA], [test "x$enable_lua" != "xno"]) - - # If Lua is enabled, test the integer size. - if test "x$enable_lua" = "xyes" -a "$cross_compiling" != "yes"; then - TMPLIBS="$LIBS" - LIBS="" - - AC_MSG_CHECKING([size of lua integer]) - AC_RUN_IFELSE([AC_LANG_PROGRAM([[#include ]], - [[ - if (sizeof(lua_Integer) == 8) { - return 1; - } - return 0; - ]])], - [ - AC_MSG_RESULT([4]) - ], - [ - AC_MSG_RESULT([8]) - AC_SUBST([LUA_INT8], ["lua_int8"]) - ]) - LIBS="$TMPLIBS" - fi + AC_DEFINE([HAVE_LUA], [1], [lua support available]) + AM_CONDITIONAL([HAVE_LUA], [true]) + AC_SUBST([LUA_INT8], ["lua_int8"]) # libmaxminddb AC_ARG_ENABLE(geoip, @@ -2337,7 +2151,7 @@ fi fi RUST_SURICATA_LIB="${RUST_SURICATA_LIBDIR}/${RUST_SURICATA_LIBNAME}" - CFLAGS="${CFLAGS} -I\${srcdir}/../rust/gen -I\${srcdir}/../rust/dist" + CFLAGS="${CFLAGS} -I\${srcdir}/../rust/gen -I\${srcdir}/../rust/dist -I../rust/gen" AC_SUBST(RUST_SURICATA_LIB) AC_SUBST(RUST_LDADD) if test "x$CARGO_HOME" = "x"; then diff --git a/rust/Cargo.lock.in b/rust/Cargo.lock.in index 5d7021aac7ff..c536eb90ac11 100644 --- a/rust/Cargo.lock.in +++ b/rust/Cargo.lock.in @@ -77,7 +77,7 @@ dependencies = [ "asn1-rs-impl", "displaydoc", "nom", - "num-traits 0.2.17", + "num-traits 0.2.18", "rusticata-macros", "thiserror", "time", @@ -89,9 +89,9 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7378575ff571966e99a744addeff0bff98b8ada0dedf1956d59e634db95eaac1" dependencies = [ - "proc-macro2 1.0.69", - "quote 1.0.33", - "syn 2.0.39", + "proc-macro2 1.0.80", + "quote 1.0.36", + "syn 2.0.59", "synstructure 0.13.1", ] @@ -101,16 +101,16 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" dependencies = [ - "proc-macro2 1.0.69", - "quote 1.0.33", - "syn 2.0.39", + "proc-macro2 1.0.80", + "quote 1.0.36", + "syn 2.0.59", ] [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "base64" @@ -192,9 +192,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" dependencies = [ "libc", ] @@ -210,9 +210,9 @@ dependencies = [ [[package]] name = "crc32fast" -version = "1.3.2" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" dependencies = [ "cfg-if", ] @@ -238,9 +238,9 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" +checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5" [[package]] name = "der-parser" @@ -252,7 +252,7 @@ dependencies = [ "displaydoc", "nom", "num-bigint 0.4.4", - "num-traits 0.2.17", + "num-traits 0.2.18", "rusticata-macros", ] @@ -273,9 +273,9 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ - "proc-macro2 1.0.69", - "quote 1.0.33", - "syn 2.0.39", + "proc-macro2 1.0.80", + "quote 1.0.36", + "syn 2.0.59", ] [[package]] @@ -302,8 +302,8 @@ version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" dependencies = [ - "proc-macro2 1.0.69", - "quote 1.0.33", + "proc-macro2 1.0.80", + "quote 1.0.36", "syn 1.0.109", "synstructure 0.12.6", ] @@ -318,6 +318,12 @@ dependencies = [ "miniz_oxide", ] +[[package]] +name = "fs_extra" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" + [[package]] name = "generic-array" version = "0.14.7" @@ -330,9 +336,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.11" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" +checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" dependencies = [ "cfg-if", "libc", @@ -357,9 +363,9 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "hkdf" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437" +checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" dependencies = [ "hmac", ] @@ -385,9 +391,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.9" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "kerberos-parser" @@ -408,9 +414,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.150" +version = "0.2.153" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" [[package]] name = "lzma-rs" @@ -446,9 +452,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" dependencies = [ "adler", ] @@ -480,8 +486,8 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd0b9a93a84b0d3ec3e70e02d332dc33ac6dfac9cde63e17fcb77172dededa62" dependencies = [ - "proc-macro2 1.0.69", - "quote 1.0.33", + "proc-macro2 1.0.80", + "quote 1.0.36", "syn 1.0.109", ] @@ -506,7 +512,7 @@ dependencies = [ "num-integer", "num-iter", "num-rational", - "num-traits 0.2.17", + "num-traits 0.2.18", ] [[package]] @@ -517,7 +523,7 @@ checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" dependencies = [ "autocfg", "num-integer", - "num-traits 0.2.17", + "num-traits 0.2.18", ] [[package]] @@ -528,7 +534,7 @@ checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" dependencies = [ "autocfg", "num-integer", - "num-traits 0.2.17", + "num-traits 0.2.18", ] [[package]] @@ -538,7 +544,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95" dependencies = [ "autocfg", - "num-traits 0.2.17", + "num-traits 0.2.18", ] [[package]] @@ -554,23 +560,22 @@ dependencies = [ [[package]] name = "num-integer" -version = "0.1.45" +version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" dependencies = [ - "autocfg", - "num-traits 0.2.17", + "num-traits 0.2.18", ] [[package]] name = "num-iter" -version = "0.1.43" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +checksum = "d869c01cc0c455284163fd0092f1f93835385ccab5a98a0dcc497b2f8bf055a9" dependencies = [ "autocfg", "num-integer", - "num-traits 0.2.17", + "num-traits 0.2.18", ] [[package]] @@ -582,7 +587,7 @@ dependencies = [ "autocfg", "num-bigint 0.2.6", "num-integer", - "num-traits 0.2.17", + "num-traits 0.2.18", ] [[package]] @@ -591,14 +596,14 @@ version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31" dependencies = [ - "num-traits 0.2.17", + "num-traits 0.2.18", ] [[package]] name = "num-traits" -version = "0.2.17" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" dependencies = [ "autocfg", ] @@ -619,8 +624,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" dependencies = [ "proc-macro-crate", - "proc-macro2 1.0.69", - "quote 1.0.33", + "proc-macro2 1.0.80", + "quote 1.0.36", "syn 1.0.109", ] @@ -635,9 +640,9 @@ dependencies = [ [[package]] name = "opaque-debug" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "phf" @@ -716,9 +721,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.69" +version = "1.0.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" +checksum = "a56dea16b0a29e94408b9aa5e2940a4eedbd128a1ba20e8f7ae60fd3d465af0e" dependencies = [ "unicode-ident", ] @@ -734,11 +739,11 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.33" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ - "proc-macro2 1.0.69", + "proc-macro2 1.0.80", ] [[package]] @@ -799,9 +804,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" +checksum = "80af6f9131f277a45a3fba6ce8e2258037bb0477a67e610d3c1fe046ab31de47" [[package]] name = "sawp" @@ -828,8 +833,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49a585d3c22887d23bb06dd602b8ce96c2a716e1fa89beec8bfb49e466f2d643" dependencies = [ "proc-macro-crate", - "proc-macro2 1.0.69", - "quote 1.0.33", + "proc-macro2 1.0.80", + "quote 1.0.36", "syn 1.0.109", ] @@ -847,22 +852,22 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.192" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bca2a08484b285dcb282d0f67b26cadc0df8b19f8c12502c13d966bf9482f001" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.192" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6c7207fbec9faa48073f3e3074cbe553af6ea512d7c21ba46e434e70ea9fbc1" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ - "proc-macro2 1.0.69", - "quote 1.0.33", - "syn 2.0.39", + "proc-macro2 1.0.80", + "quote 1.0.36", + "syn 2.0.59", ] [[package]] @@ -940,7 +945,7 @@ dependencies = [ "ntp-parser", "num", "num-derive", - "num-traits 0.2.17", + "num-traits 0.2.18", "regex", "sawp", "sawp-modbus", @@ -948,6 +953,7 @@ dependencies = [ "sha2", "snmp-parser", "suricata-derive", + "suricata-lua-sys", "test-case", "time", "tls-parser", @@ -961,11 +967,19 @@ name = "suricata-derive" version = "8.0.0-dev" dependencies = [ "proc-macro-crate", - "proc-macro2 1.0.69", - "quote 1.0.33", + "proc-macro2 1.0.80", + "quote 1.0.36", "syn 1.0.109", ] +[[package]] +name = "suricata-lua-sys" +version = "0.1.0-alpha.1" +source = "git+https://github.com/jasonish/suricata-lua-sys#fc4a25144000b052e77861ea53baab74aa3f27af" +dependencies = [ + "fs_extra", +] + [[package]] name = "syn" version = "0.15.44" @@ -983,19 +997,19 @@ version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ - "proc-macro2 1.0.69", - "quote 1.0.33", + "proc-macro2 1.0.80", + "quote 1.0.36", "unicode-ident", ] [[package]] name = "syn" -version = "2.0.39" +version = "2.0.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a" +checksum = "4a6531ffc7b071655e4ce2e04bd464c4830bb585a61cabb96cf808f05172615a" dependencies = [ - "proc-macro2 1.0.69", - "quote 1.0.33", + "proc-macro2 1.0.80", + "quote 1.0.36", "unicode-ident", ] @@ -1005,8 +1019,8 @@ version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" dependencies = [ - "proc-macro2 1.0.69", - "quote 1.0.33", + "proc-macro2 1.0.80", + "quote 1.0.36", "syn 1.0.109", "unicode-xid 0.2.4", ] @@ -1017,9 +1031,9 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ - "proc-macro2 1.0.69", - "quote 1.0.33", - "syn 2.0.39", + "proc-macro2 1.0.80", + "quote 1.0.36", + "syn 2.0.59", ] [[package]] @@ -1038,9 +1052,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adcb7fd841cd518e279be3d5a3eb0636409487998a4aff22f3de87b81e88384f" dependencies = [ "cfg-if", - "proc-macro2 1.0.69", - "quote 1.0.33", - "syn 2.0.39", + "proc-macro2 1.0.80", + "quote 1.0.36", + "syn 2.0.59", ] [[package]] @@ -1049,30 +1063,30 @@ version = "3.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" dependencies = [ - "proc-macro2 1.0.69", - "quote 1.0.33", - "syn 2.0.39", + "proc-macro2 1.0.80", + "quote 1.0.36", + "syn 2.0.59", "test-case-core", ] [[package]] name = "thiserror" -version = "1.0.50" +version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" +checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.50" +version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" +checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" dependencies = [ - "proc-macro2 1.0.69", - "quote 1.0.33", - "syn 2.0.39", + "proc-macro2 1.0.80", + "quote 1.0.36", + "syn 2.0.59", ] [[package]] diff --git a/rust/Cargo.toml.in b/rust/Cargo.toml.in index 59e28bd03421..f223fc02f4a8 100644 --- a/rust/Cargo.toml.in +++ b/rust/Cargo.toml.in @@ -67,6 +67,8 @@ time = "=0.3.20" suricata-derive = { path = "./derive", version = "@PACKAGE_VERSION@" } +suricata-lua-sys = { git = "https://github.com/jasonish/suricata-lua-sys", version = "0.1.0-alpha.1" } + [dev-dependencies] test-case = "~3.3.1" hex = "~0.4.3" diff --git a/rust/Makefile.am b/rust/Makefile.am index 8bf685e5c74a..73d19780262b 100644 --- a/rust/Makefile.am +++ b/rust/Makefile.am @@ -53,6 +53,9 @@ endif $(RUST_SURICATA_LIBDIR)/${RUST_SURICATA_LIBNAME}; \ fi $(MAKE) gen/rust-bindings.h + mkdir -p $(abs_top_builddir)/rust/gen + cp -a $(RUST_SURICATA_LIBDIR)/build/suricata-lua-sys-*/out/lua/*.h \ + $(abs_top_builddir)/rust/gen/ install-library: $(MKDIR_P) "$(DESTDIR)$(libdir)" @@ -62,16 +65,10 @@ uninstall-local: rm -f "$(DESTDIR)$(libdir)/$(RUST_SURICATA_LIBNAME)" clean-local: - rm -rf target -if HAVE_CBINDGEN - rm -rf gen dist -endif + rm -rf target gen distclean-local: - rm -f Cargo.lock - -maintainer-clean-local: - rm -rf vendor gen + rm -rf vendor dist check: cd $(abs_top_srcdir)/rust && \ @@ -84,7 +81,8 @@ vendor: if HAVE_CBINDGEN gen/rust-bindings.h: $(RUST_SURICATA_LIB) - cbindgen --config $(abs_top_srcdir)/rust/cbindgen.toml \ + cd $(abs_top_srcdir)/rust && \ + cbindgen --config $(abs_top_srcdir)/rust/cbindgen.toml \ --quiet --verify --output $(abs_top_builddir)/rust/gen/rust-bindings.h || true else gen/rust-bindings.h: diff --git a/rust/src/lib.rs b/rust/src/lib.rs index 15e21c4057d1..73ba6cadfc8e 100644 --- a/rust/src/lib.rs +++ b/rust/src/lib.rs @@ -120,3 +120,6 @@ pub mod lzma; pub mod util; pub mod ffi; pub mod feature; + +#[allow(unused_imports)] +pub use suricata_lua_sys; diff --git a/src/detect-lua-extensions.c b/src/detect-lua-extensions.c index 897b0874021a..9a0850b9e919 100644 --- a/src/detect-lua-extensions.c +++ b/src/detect-lua-extensions.c @@ -160,7 +160,7 @@ static int GetFlowVarByKey(lua_State *luastate, Flow *f, FlowVar **ret_fv) LUA_ERROR("key len out of range: max 256"); } - FlowVar *fv = FlowVarGetByKey(f, (const uint8_t *)keystr, keylen); + FlowVar *fv = FlowVarGetByKey(f, (const uint8_t *)keystr, (uint16_t)keylen); if (fv == NULL) { LUA_ERROR("no flow var"); } @@ -272,7 +272,7 @@ static int LuaSetFlowvarById(lua_State *luastate) memcpy(buffer, str, len); buffer[len] = '\0'; - FlowVarAddIdValue(f, idx, buffer, len); + FlowVarAddIdValue(f, idx, buffer, (uint16_t)len); return 0; } @@ -333,7 +333,7 @@ static int LuaSetFlowvarByKey(lua_State *luastate) } memcpy(keybuf, keystr, keylen); keybuf[keylen] = '\0'; - FlowVarAddKeyValue(f, keybuf, keylen, buffer, len); + FlowVarAddKeyValue(f, keybuf, (uint16_t)keylen, buffer, (uint16_t)len); return 0; } diff --git a/src/suricata-common.h b/src/suricata-common.h index 30fa7998e031..a156aeb126e2 100644 --- a/src/suricata-common.h +++ b/src/suricata-common.h @@ -493,19 +493,9 @@ typedef enum { LOGGER_SIZE, } LoggerId; -#ifndef HAVE_LUA - /* If we don't have Lua, create a typedef for lua_State so the * exported Lua functions don't fail the build. */ -typedef void lua_State; - -#else - -#include -#include -#include - -#endif +typedef struct lua_State lua_State; #include "tm-threads-common.h" #include "util-optimize.h" diff --git a/src/util-lua.h b/src/util-lua.h index ef15d9365253..dd069384d5d2 100644 --- a/src/util-lua.h +++ b/src/util-lua.h @@ -31,6 +31,11 @@ typedef void lua_State; #else + +#include "lua.h" +#include "lualib.h" +#include "lauxlib.h" + #include "threadvars.h" #include "detect.h"