Fix segmentation fault in the regression tests

This commit is contained in:
Felipe Zimmerle 2015-08-25 00:24:28 -03:00
parent a168502717
commit fd8578351d
2 changed files with 28 additions and 21 deletions

View File

@ -88,9 +88,13 @@ Rules::~Rules() {
} }
} }
/** Cleanup audit log */ /** Cleanup audit log */
audit_log->refCountDecreaseAndCheck(); if (audit_log) {
audit_log->refCountDecreaseAndCheck();
}
/** Cleanup debug log */ /** Cleanup debug log */
debugLog->refCountDecreaseAndCheck(); if (debugLog) {
debugLog->refCountDecreaseAndCheck();
}
} }

View File

@ -69,9 +69,9 @@ void actions(ModSecurityTestResults<RegressionTest> *r,
void perform_unit_test(std::vector<RegressionTest *> *tests, void perform_unit_test(std::vector<RegressionTest *> *tests,
ModSecurityTestResults<RegressionTest> *res, int *count) { ModSecurityTestResults<RegressionTest> *res, int *count) {
CustomDebugLog *debug_log = new CustomDebugLog();
for (RegressionTest *t : *tests) { for (RegressionTest *t : *tests) {
CustomDebugLog *debug_log = new CustomDebugLog();
ModSecurity::ModSecurity *modsec = NULL; ModSecurity::ModSecurity *modsec = NULL;
ModSecurity::Rules *modsec_rules = NULL; ModSecurity::Rules *modsec_rules = NULL;
ModSecurity::Assay *modsec_assay = NULL; ModSecurity::Assay *modsec_assay = NULL;
@ -193,34 +193,37 @@ end:
CustomDebugLog *d = reinterpret_cast<CustomDebugLog *> CustomDebugLog *d = reinterpret_cast<CustomDebugLog *>
(modsec_rules->debugLog); (modsec_rules->debugLog);
if (!d->contains(t->debug_log)) { if (d != NULL) {
std::cout << "failed!" << std::endl; if (!d->contains(t->debug_log)) {
std::cout << "Debug log was not matching the expected results."; std::cout << "failed!" << std::endl;
std::cout << std::endl; std::cout << "Debug log was not matching the expected results.";
} else if (r.status != t->http_code) { std::cout << std::endl;
std::cout << "failed!" << std::endl; } else if (r.status != t->http_code) {
std::cout << "HTTP code mismatch. expecting: " + \ std::cout << "failed!" << std::endl;
std::to_string(t->http_code) + \ std::cout << "HTTP code mismatch. expecting: " + \
" got: " + std::to_string(r.status) + "\n"; std::to_string(t->http_code) + \
} else { " got: " + std::to_string(r.status) + "\n";
std::cout << "passed!" << std::endl; } else {
goto after_debug_log; std::cout << "passed!" << std::endl;
goto after_debug_log;
}
std::cout << "Debug log:" << std::endl;
std::cout << "" << d->log_messages() << "" <<std::endl;
} }
std::cout << "Debug log:" << std::endl;
std::cout << "" << d->log_messages() << "" <<std::endl;
after_debug_log: after_debug_log:
if (d != NULL) {
res->log_raw_debug_log = d->log_messages(); res->log_raw_debug_log = d->log_messages();
}
delete modsec_assay; delete modsec_assay;
delete modsec_rules; delete modsec_rules;
delete modsec; delete modsec;
delete debug_log;
res->insert(res->end(), r.begin(), r.end()); res->insert(res->end(), r.begin(), r.end());
} }
delete debug_log;
} }