Skip to content

Commit

Permalink
Use new exceptions
Browse files Browse the repository at this point in the history
  • Loading branch information
Anilm3 committed Feb 9, 2025
1 parent 7a3bd1c commit e825ee6
Show file tree
Hide file tree
Showing 10 changed files with 25 additions and 17 deletions.
2 changes: 1 addition & 1 deletion src/configuration/common/matcher_parser.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ std::pair<std::string, std::unique_ptr<matcher::base>> parse_matcher(
if constexpr (sizeof...(Rest) > 0) {
return parse_matcher<Rest...>(name, params);
} else {
throw ddwaf::parsing_error("unknown matcher: " + std::string(name));
throw unknown_operator(name);
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/configuration/common/transformer_parser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ std::vector<transformer_id> parse_transformers(
} else if (transformer == "values_only") {
source = ddwaf::data_source::values;
} else {
throw ddwaf::parsing_error("invalid transformer " + std::string(transformer));
throw unknown_transformer(transformer);
}
}
return transformers;
Expand Down
7 changes: 7 additions & 0 deletions src/configuration/configuration_manager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
#include "configuration/rule_override_parser.hpp"
#include "configuration/rule_parser.hpp"
#include "configuration/scanner_parser.hpp"
#include "exception.hpp"
#include "log.hpp"
#include "ruleset_info.hpp"

Expand All @@ -39,6 +40,12 @@ void configuration_manager::load(
}

auto schema_version = parse_schema_version(root);
if (schema_version > 2) {
// TODO add the error somewhere
DDWAF_WARN("Usupported schema version: {}", schema_version);
return;
}

if (schema_version == 1) {
// Legacy configurations with schema version 1 will only provide rules
DDWAF_DEBUG("Parsing legacy configuration");
Expand Down
4 changes: 1 addition & 3 deletions src/configuration/processor_parser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -112,9 +112,7 @@ void parse_processors(const raw_configuration::vector &processor_array,
} else if (generator_id == "session_fingerprint") {
type = processor_type::session_fingerprint;
} else {
DDWAF_WARN("Unknown generator: {}", generator_id);
info.add_failed(id, "unknown generator '" + generator_id + "'");
continue;
throw unknown_generator(generator_id);
}

auto conditions_array = at<raw_configuration::vector>(node, "conditions", {});
Expand Down
15 changes: 9 additions & 6 deletions src/exception.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -96,8 +96,9 @@ class unsupported_operator_version : public parsing_warning {

class unknown_operator : public parsing_warning {
public:
explicit unknown_operator(const std::string &name)
: parsing_warning("unknown operator: " + name){};
explicit unknown_operator(std::string_view name)
: parsing_warning("unknown operator: '" + std::string(name) + "'")
{}
unknown_operator(unknown_operator &&) = default;
unknown_operator(const unknown_operator &) = default;
unknown_operator &operator=(unknown_operator &&) = default;
Expand All @@ -107,8 +108,9 @@ class unknown_operator : public parsing_warning {

class unknown_generator : public parsing_warning {
public:
explicit unknown_generator(const std::string &name)
: parsing_warning("unknown generator: " + name){};
explicit unknown_generator(std::string_view name)
: parsing_warning("unknown generator: '" + std::string(name) + "'")
{}
unknown_generator(unknown_generator &&) = default;
unknown_generator(const unknown_generator &) = default;
unknown_generator &operator=(unknown_generator &&) = default;
Expand All @@ -118,8 +120,9 @@ class unknown_generator : public parsing_warning {

class unknown_transformer : public parsing_warning {
public:
explicit unknown_transformer(const std::string &name)
: parsing_warning("unknown transformer: " + name){};
explicit unknown_transformer(std::string_view name)
: parsing_warning("unknown transformer: '" + std::string(name) + "'")
{}
unknown_transformer(unknown_transformer &&) = default;
unknown_transformer(const unknown_transformer &) = default;
unknown_transformer &operator=(unknown_transformer &&) = default;
Expand Down
4 changes: 2 additions & 2 deletions tests/integration/diagnostics/v2/test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,7 @@ TEST(TestDiagnosticsV2Integration, MultipleDiffInvalidRules)
}

{
auto it = errors.find("unknown matcher: squash");
auto it = errors.find("unknown operator: 'squash'");
EXPECT_NE(it, errors.end());

auto error_rules = static_cast<ddwaf::raw_configuration::string_set>(it->second);
Expand Down Expand Up @@ -284,7 +284,7 @@ TEST(TestDiagnosticsV2Integration, MultipleMixInvalidRules)
}

{
auto it = errors.find("unknown matcher: squash");
auto it = errors.find("unknown operator: 'squash'");
EXPECT_NE(it, errors.end());

auto error_rules = static_cast<ddwaf::raw_configuration::string_set>(it->second);
Expand Down
2 changes: 1 addition & 1 deletion tests/unit/configuration/base_rule_parser_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ TEST(TestBaseRuleParser, ParseRuleInvalidTransformer)

auto errors = at<raw_configuration::map>(root_map, "errors");
EXPECT_EQ(errors.size(), 1);
auto it = errors.find("invalid transformer unknown");
auto it = errors.find("unknown transformer: 'unknown'");
EXPECT_NE(it, errors.end());

auto error_rules = static_cast<raw_configuration::string_set>(it->second);
Expand Down
2 changes: 1 addition & 1 deletion tests/unit/configuration/processor_parser_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -584,7 +584,7 @@ TEST(TestProcessorParser, ParseUnknownGenerator)

auto errors = at<raw_configuration::map>(root_map, "errors");
EXPECT_EQ(errors.size(), 1);
auto it = errors.find("unknown generator 'unknown'");
auto it = errors.find("unknown generator: 'unknown'");
EXPECT_NE(it, errors.end());

auto error_rules = static_cast<raw_configuration::string_set>(it->second);
Expand Down
2 changes: 1 addition & 1 deletion tests/unit/configuration/scanner_parser_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -700,7 +700,7 @@ TEST(TestScannerParser, ParseUnknownMatcher)

auto errors = at<raw_configuration::map>(root_map, "errors");
EXPECT_EQ(errors.size(), 1);
auto it = errors.find("unknown matcher: what");
auto it = errors.find("unknown operator: 'what'");
EXPECT_NE(it, errors.end());

auto error_rules = static_cast<ddwaf::raw_configuration::string_set>(it->second);
Expand Down
2 changes: 1 addition & 1 deletion tests/unit/configuration/user_rule_parser_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ TEST(TestUserRuleParser, ParseRuleInvalidTransformer)

auto errors = at<raw_configuration::map>(root_map, "errors");
EXPECT_EQ(errors.size(), 1);
auto it = errors.find("invalid transformer unknown");
auto it = errors.find("unknown transformer: 'unknown'");
EXPECT_NE(it, errors.end());

auto error_rules = static_cast<raw_configuration::string_set>(it->second);
Expand Down

0 comments on commit e825ee6

Please sign in to comment.