Skip to content

Commit ff38eb4

Browse files
committed
Simplify code for JSON audit log
1 parent 01a0615 commit ff38eb4

File tree

3 files changed

+32
-33
lines changed

3 files changed

+32
-33
lines changed

headers/modsecurity/rules_set_properties.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,7 @@ class RulesSetProperties {
311311
};
312312

313313

314-
static const char *ruleEngineStateString(RuleEngine i) {
314+
static std::string ruleEngineStateString(RuleEngine i) {
315315
switch (i) {
316316
case DisabledRuleEngine:
317317
return "Disabled";
@@ -322,7 +322,7 @@ class RulesSetProperties {
322322
case PropertyNotSetRuleEngine:
323323
return "PropertyNotSet/DetectionOnly";
324324
}
325-
return NULL;
325+
return std::string{};
326326
}
327327

328328

headers/modsecurity/transaction.h

+3-4
Original file line numberDiff line numberDiff line change
@@ -80,15 +80,14 @@ typedef struct Rules_t RulesSet;
8080

8181
#define LOGFY_ADD(a, b) \
8282
yajl_gen_string(g, reinterpret_cast<const unsigned char*>(a), strlen(a)); \
83-
if (b == NULL) { \
83+
if (b.data() == NULL) { \
8484
yajl_gen_string(g, reinterpret_cast<const unsigned char*>(""), \
8585
strlen("")); \
8686
} else { \
87-
yajl_gen_string(g, reinterpret_cast<const unsigned char*>(b), \
88-
strlen(b)); \
87+
yajl_gen_string(g, reinterpret_cast<const unsigned char*>(b.data()), \
88+
b.length()); \
8989
}
9090

91-
9291
#define LOGFY_ADD_INT(a, b) \
9392
yajl_gen_string(g, reinterpret_cast<const unsigned char*>(a), strlen(a)); \
9493
yajl_gen_number(g, reinterpret_cast<const char*>(b), strlen(b));

src/transaction.cc

+27-27
Original file line numberDiff line numberDiff line change
@@ -1564,7 +1564,7 @@ std::string Transaction::toJSON(int parts) {
15641564
size_t len;
15651565
yajl_gen g;
15661566
std::string log;
1567-
std::string ts = utils::string::ascTime(&m_timeStamp).c_str();
1567+
std::string ts = utils::string::ascTime(&m_timeStamp);
15681568
std::string uniqueId = UniqueId::uniqueId();
15691569

15701570
g = yajl_gen_alloc(NULL);
@@ -1582,13 +1582,13 @@ std::string Transaction::toJSON(int parts) {
15821582

15831583
yajl_gen_map_open(g);
15841584
/* Part: A (header mandatory) */
1585-
LOGFY_ADD("client_ip", m_clientIpAddress.c_str());
1586-
LOGFY_ADD("time_stamp", ts.c_str());
1587-
LOGFY_ADD("server_id", uniqueId.c_str());
1585+
LOGFY_ADD("client_ip", m_clientIpAddress);
1586+
LOGFY_ADD("time_stamp", ts);
1587+
LOGFY_ADD("server_id", uniqueId);
15881588
LOGFY_ADD_NUM("client_port", m_clientPort);
1589-
LOGFY_ADD("host_ip", m_serverIpAddress.c_str());
1589+
LOGFY_ADD("host_ip", m_serverIpAddress);
15901590
LOGFY_ADD_NUM("host_port", m_serverPort);
1591-
LOGFY_ADD("unique_id", m_id.c_str());
1591+
LOGFY_ADD("unique_id", m_id);
15921592

15931593
/* request */
15941594
yajl_gen_string(g, reinterpret_cast<const unsigned char*>("request"),
@@ -1597,14 +1597,14 @@ std::string Transaction::toJSON(int parts) {
15971597

15981598
LOGFY_ADD("method",
15991599
utils::string::dash_if_empty(
1600-
m_variableRequestMethod.evaluate()).c_str());
1600+
m_variableRequestMethod.evaluate()));
16011601

16021602
LOGFY_ADD_INT("http_version", m_httpVersion.c_str());
1603-
LOGFY_ADD("uri", this->m_uri.c_str());
1603+
LOGFY_ADD("uri", this->m_uri);
16041604

16051605
if (parts & audit_log::AuditLog::CAuditLogPart) {
16061606
// FIXME: check for the binary content size.
1607-
LOGFY_ADD("body", this->m_requestBody.str().c_str());
1607+
LOGFY_ADD("body", this->m_requestBody.str());
16081608
}
16091609

16101610
/* request headers */
@@ -1616,7 +1616,7 @@ std::string Transaction::toJSON(int parts) {
16161616

16171617
m_variableRequestHeaders.resolve(&l);
16181618
for (auto &h : l) {
1619-
LOGFY_ADD(h->getKey().c_str(), h->getValue().c_str());
1619+
LOGFY_ADD(h->getKey().c_str(), h->getValue());
16201620
delete h;
16211621
}
16221622

@@ -1633,7 +1633,7 @@ std::string Transaction::toJSON(int parts) {
16331633
yajl_gen_map_open(g);
16341634

16351635
if (parts & audit_log::AuditLog::EAuditLogPart) {
1636-
LOGFY_ADD("body", this->m_responseBody.str().c_str());
1636+
LOGFY_ADD("body", this->m_responseBody.str());
16371637
}
16381638
LOGFY_ADD_NUM("http_code", m_httpCodeReturned);
16391639

@@ -1646,7 +1646,7 @@ std::string Transaction::toJSON(int parts) {
16461646

16471647
m_variableResponseHeaders.resolve(&l);
16481648
for (auto &h : l) {
1649-
LOGFY_ADD(h->getKey().c_str(), h->getValue().c_str());
1649+
LOGFY_ADD(h->getKey().c_str(), h->getValue());
16501650
delete h;
16511651
}
16521652

@@ -1663,10 +1663,10 @@ std::string Transaction::toJSON(int parts) {
16631663
yajl_gen_map_open(g);
16641664

16651665
/* producer > libmodsecurity */
1666-
LOGFY_ADD("modsecurity", m_ms->whoAmI().c_str());
1666+
LOGFY_ADD("modsecurity", m_ms->whoAmI());
16671667

16681668
/* producer > connector */
1669-
LOGFY_ADD("connector", m_ms->getConnectorInformation().c_str());
1669+
LOGFY_ADD("connector", m_ms->getConnectorInformation());
16701670

16711671
/* producer > engine state */
16721672
LOGFY_ADD("secrules_engine",
@@ -1696,20 +1696,20 @@ std::string Transaction::toJSON(int parts) {
16961696
yajl_gen_array_open(g);
16971697
for (auto a : m_rulesMessages) {
16981698
yajl_gen_map_open(g);
1699-
LOGFY_ADD("message", a.m_message.c_str());
1699+
LOGFY_ADD("message", a.m_message);
17001700
yajl_gen_string(g,
17011701
reinterpret_cast<const unsigned char*>("details"),
17021702
strlen("details"));
17031703
yajl_gen_map_open(g);
1704-
LOGFY_ADD("match", a.m_match.c_str());
1705-
LOGFY_ADD("reference", a.m_reference.c_str());
1706-
LOGFY_ADD("ruleId", std::to_string(a.m_rule.m_ruleId).c_str());
1707-
LOGFY_ADD("file", a.m_rule.getFileName().c_str());
1708-
LOGFY_ADD("lineNumber", std::to_string(a.m_rule.getLineNumber()).c_str());
1709-
LOGFY_ADD("data", a.m_data.c_str());
1710-
LOGFY_ADD("severity", std::to_string(a.m_severity).c_str());
1711-
LOGFY_ADD("ver", a.m_rule.m_ver.c_str());
1712-
LOGFY_ADD("rev", a.m_rule.m_rev.c_str());
1704+
LOGFY_ADD("match", a.m_match);
1705+
LOGFY_ADD("reference", a.m_reference);
1706+
LOGFY_ADD("ruleId", std::to_string(a.m_rule.m_ruleId));
1707+
LOGFY_ADD("file", a.m_rule.getFileName());
1708+
LOGFY_ADD("lineNumber", std::to_string(a.m_rule.getLineNumber()));
1709+
LOGFY_ADD("data", a.m_data);
1710+
LOGFY_ADD("severity", std::to_string(a.m_severity));
1711+
LOGFY_ADD("ver", a.m_rule.m_ver);
1712+
LOGFY_ADD("rev", a.m_rule.m_rev);
17131713

17141714
yajl_gen_string(g,
17151715
reinterpret_cast<const unsigned char*>("tags"),
@@ -1718,12 +1718,12 @@ std::string Transaction::toJSON(int parts) {
17181718
for (auto b : a.m_tags) {
17191719
yajl_gen_string(g,
17201720
reinterpret_cast<const unsigned char*>(b.c_str()),
1721-
strlen(b.c_str()));
1721+
b.size());
17221722
}
17231723
yajl_gen_array_close(g);
17241724

1725-
LOGFY_ADD("maturity", std::to_string(a.m_rule.m_maturity).c_str());
1726-
LOGFY_ADD("accuracy", std::to_string(a.m_rule.m_accuracy).c_str());
1725+
LOGFY_ADD("maturity", std::to_string(a.m_rule.m_maturity));
1726+
LOGFY_ADD("accuracy", std::to_string(a.m_rule.m_accuracy));
17271727
yajl_gen_map_close(g);
17281728
yajl_gen_map_close(g);
17291729
}

0 commit comments

Comments
 (0)