mirror of
https://github.com/owasp-modsecurity/ModSecurity.git
synced 2025-10-01 12:07:46 +03:00
Calculate sizes of strftime buffers based on format strings
- Leverage std::size to determine buffer size at compile time. - Simplified 'TimeMon::evaluate' implementation as it was using strftime to get the month, convert the string to int, and then decrement it by one to make it zero based. This same value is already available in the 'struct tm' previously generated with the call to localtime_r (and where the month is already zero-based)
This commit is contained in:
@@ -1509,13 +1509,12 @@ bool Transaction::intervention(ModSecurityIntervention *it) {
|
||||
std::string Transaction::toOldAuditLogFormatIndex(const std::string &filename,
|
||||
double size, const std::string &md5) {
|
||||
std::stringstream ss;
|
||||
struct tm timeinfo;
|
||||
char tstr[300];
|
||||
|
||||
memset(tstr, '\0', 300);
|
||||
struct tm timeinfo;
|
||||
localtime_r(&this->m_timeStamp, &timeinfo);
|
||||
|
||||
strftime(tstr, 299, "[%d/%b/%Y:%H:%M:%S %z]", &timeinfo);
|
||||
char tstr[std::size("[dd/Mmm/yyyy:hh:mm:ss shhmm]")];
|
||||
strftime(tstr, std::size(tstr), "[%d/%b/%Y:%H:%M:%S %z]", &timeinfo);
|
||||
|
||||
ss << utils::string::dash_if_empty(
|
||||
m_variableRequestHeaders.resolveFirst("Host").get())
|
||||
@@ -1572,14 +1571,14 @@ std::string Transaction::toOldAuditLogFormatIndex(const std::string &filename,
|
||||
std::string Transaction::toOldAuditLogFormat(int parts,
|
||||
const std::string &trailer) {
|
||||
std::stringstream audit_log;
|
||||
struct tm timeinfo;
|
||||
char tstr[300];
|
||||
|
||||
memset(tstr, '\0', 300);
|
||||
struct tm timeinfo;
|
||||
localtime_r(&this->m_timeStamp, &timeinfo);
|
||||
|
||||
char tstr[std::size("[dd/Mmm/yyyy:hh:mm:ss shhmm]")];
|
||||
strftime(tstr, std::size(tstr), "[%d/%b/%Y:%H:%M:%S %z]", &timeinfo);
|
||||
|
||||
audit_log << "--" << trailer << "-" << "A--" << std::endl;
|
||||
strftime(tstr, 299, "[%d/%b/%Y:%H:%M:%S %z]", &timeinfo);
|
||||
audit_log << tstr;
|
||||
audit_log << " " << m_id->c_str();
|
||||
audit_log << " " << this->m_clientIpAddress->c_str();
|
||||
|
Reference in New Issue
Block a user