Skip to content

Commit

Permalink
Initialize variable in if statement to avoid doing dynamic_cast twice
Browse files Browse the repository at this point in the history
- Refactored duplicate code in RuleWithOperator::getVariablesExceptions
- Leveraged auto to simplify declaration of dynamic_cast pointers.
  • Loading branch information
eduar-hte committed Aug 8, 2024
1 parent a78aa35 commit ba11edd
Show file tree
Hide file tree
Showing 7 changed files with 836 additions and 851 deletions.
2 changes: 1 addition & 1 deletion headers/modsecurity/rule_with_operator.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ class RuleWithOperator : public RuleWithActions {
bool evaluate(Transaction *transaction,
std::shared_ptr<RuleMessage> rm) override;

void getVariablesExceptions(Transaction *t,
void getVariablesExceptions(Transaction &t,
variables::Variables *exclusion, variables::Variables *addition);
inline void getFinalVars(variables::Variables *vars,
variables::Variables *eclusion, Transaction *trans);
Expand Down
18 changes: 6 additions & 12 deletions src/actions/set_var.cc
Original file line number Diff line number Diff line change
Expand Up @@ -51,18 +51,12 @@ bool SetVar::evaluate(RuleWithActions *rule, Transaction *t) {
std::string m_variableNameExpanded;

auto *v = m_variable.get();
variables::Tx_DynamicElement *tx = dynamic_cast<
variables::Tx_DynamicElement *> (v);
variables::Session_DynamicElement *session = dynamic_cast<
variables::Session_DynamicElement *> (v);
variables::Ip_DynamicElement *ip = dynamic_cast<
variables::Ip_DynamicElement *> (v);
variables::Resource_DynamicElement *resource = dynamic_cast<
variables::Resource_DynamicElement *> (v);
variables::Global_DynamicElement *global = dynamic_cast<
variables::Global_DynamicElement *> (v);
variables::User_DynamicElement *user = dynamic_cast<
variables::User_DynamicElement *> (v);
auto tx = dynamic_cast<variables::Tx_DynamicElement *> (v);
auto session = dynamic_cast<variables::Session_DynamicElement *> (v);
auto ip = dynamic_cast<variables::Ip_DynamicElement *> (v);
auto resource = dynamic_cast<variables::Resource_DynamicElement *> (v);
auto global = dynamic_cast<variables::Global_DynamicElement *> (v);
auto user = dynamic_cast<variables::User_DynamicElement *> (v);
if (tx) {
m_variableNameExpanded = tx->m_string->evaluate(t, rule);
} else if (session) {
Expand Down
Loading

0 comments on commit ba11edd

Please sign in to comment.