Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions examples/simple_example_using_c/test.c
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,8 @@ int main (int argc, char **argv)
msc_process_response_body(transaction);
msc_process_logging(transaction);
end:
if(error != NULL)
msc_rules_error_cleanup(error);
msc_rules_cleanup(rules);
msc_cleanup(modsec);

Expand Down
1 change: 1 addition & 0 deletions headers/modsecurity/rules_set.h
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@ int msc_rules_add_remote(RulesSet *rules, const char *key, const char *uri,
const char **error);
int msc_rules_add_file(RulesSet *rules, const char *file, const char **error);
int msc_rules_add(RulesSet *rules, const char *plain_rules, const char **error);
void msc_rules_error_cleanup(const char *error);
int msc_rules_cleanup(RulesSet *rules);

#ifdef __cplusplus
Expand Down
3 changes: 3 additions & 0 deletions headers/modsecurity/transaction.h
Original file line number Diff line number Diff line change
Expand Up @@ -723,6 +723,9 @@ void msc_transaction_cleanup(Transaction *transaction);
/** @ingroup ModSecurity_C_API */
int msc_intervention(Transaction *transaction, ModSecurityIntervention *it);

/** @ingroup ModSecurity_C_API */
void msc_intervention_cleanup(ModSecurityIntervention *it);

/** @ingroup ModSecurity_C_API */
int msc_process_logging(Transaction *transaction);

Expand Down
15 changes: 15 additions & 0 deletions src/rules_set.cc
Original file line number Diff line number Diff line change
Expand Up @@ -311,6 +311,21 @@ extern "C" int msc_rules_add(RulesSet *rules, const char *plain_rules,
}


/**
* @name msc_rules_error_cleanup
* @brief Deallocates an error message buffer returned by a msc_rules_xxx function.
*
* This is a helper function to free the error message buffer allocated
* by a msc_rules_xxx function.
*
* @param error Error message pointer.
*
*/
extern "C" void msc_rules_error_cleanup(const char *error) {
free((void*) error);
}


extern "C" int msc_rules_cleanup(RulesSet *rules) {
delete rules;
return true;
Expand Down
16 changes: 16 additions & 0 deletions src/transaction.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2273,6 +2273,22 @@ extern "C" int msc_intervention(Transaction *transaction,
}


/**
* @name msc_intervention_cleanup
* @brief Removes all the resources allocated by a given Intervention.
*
* This is a helper function to free any allocated buffers owned by the
* intervention.
*
* @param it ModSecurity intervention.
*
*/
extern "C" void msc_intervention_cleanup(ModSecurityIntervention *it) {
intervention::free(it);
intervention::clean(it);
}


/**
* @name msc_get_response_body
* @brief Retrieve a buffer with the updated response body.
Expand Down
4 changes: 3 additions & 1 deletion test/benchmark/benchmark.cc
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ int main(int argc, char *argv[]) {
modsecurity::ModSecurity *modsec;
modsecurity::RulesSet *rules;
modsecurity::ModSecurityIntervention it;
modsecurity::intervention::reset(&it);
modsecurity::intervention::clean(&it);
modsec = new modsecurity::ModSecurity();
modsec->setConnectorInformation("ModSecurity-benchmark v0.0.1-alpha" \
" (ModSecurity benchmark utility)");
Expand Down Expand Up @@ -167,6 +167,8 @@ int main(int argc, char *argv[]) {
next_request:
modsecTransaction->processLogging();
delete modsecTransaction;
modsecurity::intervention::free(&it);
modsecurity::intervention::clean(&it);
}

delete rules;
Expand Down
Loading