mirror of
https://github.com/SWG-Source/src.git
synced 2026-07-31 00:15:55 -04:00
enable more thread safety and buffer safety
This commit is contained in:
@@ -91,7 +91,7 @@ void FileLogObserver::log(LogMessage const &msg)
|
||||
std::string uniAttach(Unicode::wideToNarrow(msg.getUnicodeAttach()));
|
||||
char tsbuf[16]; // yyyymmddhhmmss (14)
|
||||
|
||||
IGNORE_RETURN( sprintf(tsbuf, UINT64_FORMAT_SPECIFIER, timestamp) );
|
||||
IGNORE_RETURN( snprintf(tsbuf, 16, UINT64_FORMAT_SPECIFIER, timestamp) );
|
||||
IGNORE_RETURN( m_file->write(14, tsbuf) );
|
||||
IGNORE_RETURN( m_file->write(1, ":") );
|
||||
IGNORE_RETURN( m_file->write(static_cast<int>(procId.length()), procId.c_str()) );
|
||||
|
||||
@@ -157,19 +157,20 @@ void LogManager::log(char const *format, ...)
|
||||
if (!s_data)
|
||||
return;
|
||||
// if noone is observing log messages, no need to process them
|
||||
if (s_data->observers.size() && s_data->logging == 1)
|
||||
if (s_data->logging == 1 && s_data->observers.size())
|
||||
{
|
||||
++s_data->logging;
|
||||
static char text[MaxLogMessageLen];
|
||||
{
|
||||
va_list ap;
|
||||
va_start(ap, format); //lint !e746 !e1055
|
||||
IGNORE_RETURN( _vsnprintf(text, sizeof(text), format, ap) );
|
||||
text[sizeof(text)-1] = '\0';
|
||||
size_t sizeOfText = sizeof(text);
|
||||
size_t len = strlen(text);
|
||||
IGNORE_RETURN( _vsnprintf(text, sizeOfText, format, ap) );
|
||||
text[sizeOfText-1] = '\0';
|
||||
// if string was truncated, stick a + on the end
|
||||
if (len == sizeof(text)-1)
|
||||
text[len-1] = '+';
|
||||
if (len == (sizeOfText-1))
|
||||
text[len-1] = '+';
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
@@ -264,7 +265,7 @@ void LogManager::registerObserverType(std::string const &name, LogObserverCreate
|
||||
for (int i = 0; i < 20; ++i)
|
||||
{
|
||||
char const * result = 0;
|
||||
sprintf(key+9, "%d", i);
|
||||
snprintf(key+9, 25, "%d", i);
|
||||
int count = 0;
|
||||
do
|
||||
{
|
||||
|
||||
@@ -123,7 +123,7 @@ void TailFileLogObserver::log(LogMessage const &msg)
|
||||
char tsbuf[16]; // yyyymmddhhmmss (14)
|
||||
|
||||
newLogMessage.clear();
|
||||
IGNORE_RETURN( sprintf(tsbuf, UINT64_FORMAT_SPECIFIER, timestamp) );
|
||||
IGNORE_RETURN( snprintf(tsbuf, 16, UINT64_FORMAT_SPECIFIER, timestamp) );
|
||||
newLogMessage.append(tsbuf);
|
||||
newLogMessage.append(":");
|
||||
newLogMessage.append(procId);
|
||||
|
||||
Reference in New Issue
Block a user