You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by js...@apache.org on 2006/12/16 00:54:40 UTC
svn commit: r487722 -
/incubator/tuscany/cpp/sca/runtime/core/src/tuscany/sca/util/Logger.cpp
Author: jsdelfino
Date: Fri Dec 15 15:54:39 2006
New Revision: 487722
URL: http://svn.apache.org/viewvc?view=rev&rev=487722
Log:
Check length of log formatted output to avoid buffer overruns when logging XML documents for example. Changed the size of the pre-allocated buffer from 4096 to 256 as most messages are smaller than that, and added code to allocate bigger buffers from the heap.
Modified:
incubator/tuscany/cpp/sca/runtime/core/src/tuscany/sca/util/Logger.cpp
Modified: incubator/tuscany/cpp/sca/runtime/core/src/tuscany/sca/util/Logger.cpp
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/sca/runtime/core/src/tuscany/sca/util/Logger.cpp?view=diff&rev=487722&r1=487721&r2=487722
==============================================================================
--- incubator/tuscany/cpp/sca/runtime/core/src/tuscany/sca/util/Logger.cpp (original)
+++ incubator/tuscany/cpp/sca/runtime/core/src/tuscany/sca/util/Logger.cpp Fri Dec 15 15:54:39 2006
@@ -125,9 +125,19 @@
{
va_list variableArguments;
va_start(variableArguments, msg);
- char messageBuffer[4096];
- vsprintf(messageBuffer, msg, variableArguments);
- logWriter->log(0, pid, messageBuffer);
+ char messageBuffer[256];
+ int size = vsnprintf(messageBuffer, 256, msg, variableArguments);
+ if (size > 256)
+ {
+ char* bigMessageBuffer = new char[size];
+ vsnprintf(bigMessageBuffer, size, msg, variableArguments);
+ logWriter->log(0, pid, bigMessageBuffer);
+ delete bigMessageBuffer;
+ }
+ else
+ {
+ logWriter->log(0, pid, messageBuffer);
+ }
va_end(variableArguments);
}
}
@@ -137,9 +147,19 @@
{
va_list variableArguments;
va_start(variableArguments, msg);
- char messageBuffer[4096];
- vsprintf(messageBuffer, msg, variableArguments);
- logWriter->log(1, pid, messageBuffer);
+ char messageBuffer[256];
+ int size = vsnprintf(messageBuffer, 256, msg, variableArguments);
+ if (size > 256)
+ {
+ char* bigMessageBuffer = new char[size];
+ vsnprintf(bigMessageBuffer, size, msg, variableArguments);
+ logWriter->log(1, pid, bigMessageBuffer);
+ delete bigMessageBuffer;
+ }
+ else
+ {
+ logWriter->log(1, pid, messageBuffer);
+ }
va_end(variableArguments);
}
}
@@ -149,9 +169,19 @@
{
va_list variableArguments;
va_start(variableArguments, msg);
- char messageBuffer[4096];
- vsprintf(messageBuffer, msg, variableArguments);
- logWriter->log(2, pid, messageBuffer);
+ char messageBuffer[256];
+ int size = vsnprintf(messageBuffer, 256, msg, variableArguments);
+ if (size > 256)
+ {
+ char* bigMessageBuffer = new char[size];
+ vsnprintf(bigMessageBuffer, size, msg, variableArguments);
+ logWriter->log(2, pid, bigMessageBuffer);
+ delete bigMessageBuffer;
+ }
+ else
+ {
+ logWriter->log(2, pid, messageBuffer);
+ }
va_end(variableArguments);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org