From: Shivani Bhardwaj Date: Thu, 9 Jan 2025 06:47:13 +0000 (+0530) Subject: rust: add C callback for FatalErrorOnInit X-Git-Tag: suricata-8.0.0-beta1~433 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=015da2c7ed129def291bc41838daa001fa9c6746;p=thirdparty%2Fsuricata.git rust: add C callback for FatalErrorOnInit --- diff --git a/rust/src/debug.rs b/rust/src/debug.rs index 16b128390f..72f7b737c3 100644 --- a/rust/src/debug.rs +++ b/rust/src/debug.rs @@ -20,12 +20,19 @@ use std::{ffi::CString, path::Path}; use crate::core::SC; +use std::os::raw::c_char; /// cbindgen:ignore -extern { +extern "C" { pub fn SCLogGetLogLevel() -> i32; } +// Defined in util-debug.c +/// cbindgen:ignore +extern "C" { + pub fn SCFatalErrorOnInitStatic(arg: *const c_char); +} + #[derive(Debug)] #[repr(C)] pub enum Level { @@ -62,6 +69,12 @@ fn basename(filename: &str) -> &str { return filename; } +pub fn fatalerror(message: &str) { + unsafe { + SCFatalErrorOnInitStatic(to_safe_cstring(message).as_ptr()); + } +} + pub fn sclog(level: Level, file: &str, line: u32, function: &str, message: &str) { let filename = basename(file); let noext = &filename[0..filename.len() - 3]; @@ -203,13 +216,19 @@ macro_rules! SCLogDebug { ($($arg:tt)*) => {}; } +#[macro_export] +macro_rules!SCFatalErrorOnInit { + ($($arg:tt)*) => { + $crate::debug::fatalerror(&format!($($arg)*)); + } +} + #[cfg(not(feature = "debug-validate"))] #[macro_export] macro_rules! debug_validate_bug_on ( ($item:expr) => {}; ); - #[cfg(feature = "debug-validate")] #[macro_export] macro_rules! debug_validate_bug_on ( diff --git a/src/util-debug.c b/src/util-debug.c index 56258a034f..f315d12890 100644 --- a/src/util-debug.c +++ b/src/util-debug.c @@ -1614,6 +1614,11 @@ void SCLogDeInitLogModule(void) #endif /* OS_WIN32 */ } +void SCFatalErrorOnInitStatic(const char *arg) +{ + FatalErrorOnInit("%s", arg); +} + //------------------------------------Unit_Tests-------------------------------- /* The logging engine should be tested to the maximum extent possible, since diff --git a/src/util-debug.h b/src/util-debug.h index 29beb912c9..6ed0eccf5b 100644 --- a/src/util-debug.h +++ b/src/util-debug.h @@ -530,6 +530,8 @@ SCLogInitData *SCLogAllocLogInitData(void); void SCLogAppendOPIfaceCtx(SCLogOPIfaceCtx *, SCLogInitData *); +void SCFatalErrorOnInitStatic(const char *); + void SCLogInitLogModule(SCLogInitData *); void SCLogDeInitLogModule(void);