From bc570c58df70e58dbe7baf3e18b29993d1c58556 Mon Sep 17 00:00:00 2001 From: Mark Stemm Date: Fri, 2 Oct 2020 16:56:22 -0700 Subject: [PATCH] More rule error/warnings handling cleanups --- userspace/engine/rules.cpp | 3 +-- userspace/falco/falco.cpp | 18 +++++++++++++----- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/userspace/engine/rules.cpp b/userspace/engine/rules.cpp index 4760b5fb..e5596efb 100644 --- a/userspace/engine/rules.cpp +++ b/userspace/engine/rules.cpp @@ -491,8 +491,7 @@ void falco_rules::load_rules(const string &rules_content, if(!successful) { - std::string err = "Could not load rules content: " + os.str(); - throw falco_exception(err); + throw falco_exception(os.str()); } if (verbose && os.str() != "") { diff --git a/userspace/falco/falco.cpp b/userspace/falco/falco.cpp index 7e160867..7e6ba1c8 100644 --- a/userspace/falco/falco.cpp +++ b/userspace/falco/falco.cpp @@ -804,7 +804,7 @@ int falco_init(int argc, char **argv) } catch(falco_exception &e) { - printf("%s%s\n", prefix.c_str(), e.what()); + printf("%s%s", prefix.c_str(), e.what()); throw; } printf("%sOk\n", prefix.c_str()); @@ -861,7 +861,15 @@ int falco_init(int argc, char **argv) falco_logger::log(LOG_INFO, "Loading rules from file " + filename + ":\n"); uint64_t required_engine_version; - engine->load_rules_file(filename, verbose, all_events, required_engine_version); + try { + engine->load_rules_file(filename, verbose, all_events, required_engine_version); + } + catch(falco_exception &e) + { + std::string prefix = "Could not load rules file " + filename + ": "; + + throw falco_exception(prefix + e.what()); + } required_engine_versions[filename] = required_engine_version; } @@ -1171,8 +1179,8 @@ int falco_init(int argc, char **argv) falco_logger::log(LOG_ERR, "Unable to load the driver.\n"); } open_f(inspector); - } - else + } + else { rethrow_exception(current_exception()); } @@ -1281,7 +1289,7 @@ int falco_init(int argc, char **argv) if(!trace_filename.empty() && !trace_is_scap) { -#ifndef MINIMAL_BUILD +#ifndef MINIMAL_BUILD read_k8s_audit_trace_file(engine, outputs, trace_filename);