Localize the buffer for less error possibility of heap corruption, messed with messagelog buffers

too... commented changes.
This commit is contained in:
phr0z3nt04st
2010-05-26 22:46:47 -05:00
parent af880575e4
commit 8c6ca51927
3 changed files with 13 additions and 10 deletions

View File

@@ -20,7 +20,11 @@ LLMessageLogEntry::LLMessageLogEntry(EType type, LLHost from_host, LLHost to_hos
LLMessageLogEntry::~LLMessageLogEntry()
{
// wtf, I'm not supposed to do this?
//if(mData && mDataSize) delete[] mData;
/*if(mData && mDataSize)
{
delete[] mData;
mData = NULL;
}*/
}
U32 LLMessageLog::sMaxSize = 4096; // testzone fixme todo boom
std::deque<LLMessageLogEntry> LLMessageLog::sDeque;

View File

@@ -26,7 +26,7 @@ LLNetListItem::LLNetListItem(LLUUID id)
////////////////////////////////
// LLFloaterMessageLogItem
////////////////////////////////
U8 LLFloaterMessageLogItem::sDecodeBuffer[8192];
#define MAX_PACKET_LEN (0x2000)
LLTemplateMessageReader* LLFloaterMessageLogItem::sTemplateMessageReader = NULL;
LLFloaterMessageLogItem::LLFloaterMessageLogItem(LLMessageLogEntry entry)
: LLMessageLogEntry(entry.mType, entry.mFromHost, entry.mToHost, entry.mData, entry.mDataSize)
@@ -41,9 +41,10 @@ LLFloaterMessageLogItem::LLFloaterMessageLogItem(LLMessageLogEntry entry)
{
BOOL decode_invalid = FALSE;
S32 decode_len = mDataSize;
memcpy(sDecodeBuffer, mData, decode_len);
mFlags = sDecodeBuffer[0];
U8* decodep = &(sDecodeBuffer[0]);
U8 DecodeBuffer[MAX_PACKET_LEN];
memcpy(DecodeBuffer, mData, decode_len);
mFlags = DecodeBuffer[0];
U8* decodep = &(DecodeBuffer[0]);
gMessageSystem->zeroCodeExpand(&decodep, &decode_len);
if(decode_len < 7)
decode_invalid = TRUE;
@@ -120,8 +121,6 @@ LLFloaterMessageLogItem::LLFloaterMessageLogItem(LLMessageLogEntry entry)
for(S32 i = 0; i < mDataSize; i++)
mSummary.append(llformat("%02X ", mData[i]));
}
//lets play cleanup
memset(sDecodeBuffer, 0, mDataSize);
}
else // not template
{
@@ -143,8 +142,9 @@ std::string LLFloaterMessageLogItem::getFull(BOOL show_header)
{
BOOL decode_invalid = FALSE;
S32 decode_len = mDataSize;
memcpy(sDecodeBuffer, mData, decode_len);
U8* decodep = &(sDecodeBuffer[0]);
U8 DecodeBuffer[MAX_PACKET_LEN];
memcpy(DecodeBuffer, mData, decode_len);
U8* decodep = &(DecodeBuffer[0]);
gMessageSystem->zeroCodeExpand(&decodep, &decode_len);
if(decode_len < 7)
decode_invalid = TRUE;

View File

@@ -25,7 +25,6 @@ public:
std::string getFull(BOOL show_header = TRUE);
BOOL isOutgoing();
private:
static U8 sDecodeBuffer[8192];
static LLTemplateMessageReader* sTemplateMessageReader;
static std::string getString(LLTemplateMessageReader* readerp, const char* block_name, S32 block_num, const char* var_name, e_message_variable_type var_type, BOOL &returned_hex, BOOL summary_mode = FALSE);
};