mirror of
https://github.com/EQEmu/Server.git
synced 2026-05-17 03:08:26 +00:00
Changed OP_FormattedMessage code to eliminate possible oob error
This commit is contained in:
+10
-7
@@ -877,26 +877,27 @@ namespace RoF
|
||||
|
||||
unsigned char *__emu_buffer = in->pBuffer;
|
||||
|
||||
char *old_message_ptr = (char *)in->pBuffer;
|
||||
old_message_ptr += sizeof(FormattedMessage_Struct);
|
||||
|
||||
std::string old_message_array[9];
|
||||
|
||||
char *old_message_ptr = (char *)__emu_buffer + sizeof(FormattedMessage_Struct);
|
||||
|
||||
for (int i = 0; i < 9; ++i) {
|
||||
if (*old_message_ptr == 0) { break; }
|
||||
old_message_array[i] = old_message_ptr;
|
||||
old_message_ptr += old_message_array[i].length() + 1;
|
||||
if (old_message_array[i].length() == 0) { break; }
|
||||
}
|
||||
|
||||
uint32 new_message_size = 0;
|
||||
std::string new_message_array[9];
|
||||
|
||||
for (int i = 0; i < 9; ++i) {
|
||||
ServerToRoFTextLink(new_message_array[i], old_message_array[i]);
|
||||
new_message_size += (new_message_array[i].length() + 1);
|
||||
if (new_message_array[i].length() == 0) { break; }
|
||||
ServerToRoFTextLink(new_message_array[i], old_message_array[i]);
|
||||
new_message_size += new_message_array[i].length() + 1;
|
||||
}
|
||||
|
||||
in->size = sizeof(FormattedMessage_Struct) + new_message_size;
|
||||
in->size = sizeof(FormattedMessage_Struct) + new_message_size + 1;
|
||||
in->pBuffer = new unsigned char[in->size];
|
||||
|
||||
char *OutBuffer = (char *)in->pBuffer;
|
||||
@@ -906,10 +907,12 @@ namespace RoF
|
||||
VARSTRUCT_ENCODE_TYPE(uint32, OutBuffer, emu->type);
|
||||
|
||||
for (int i = 0; i < 9; ++i) {
|
||||
VARSTRUCT_ENCODE_STRING(OutBuffer, new_message_array[i].c_str());
|
||||
if (new_message_array[i].length() == 0) { break; }
|
||||
VARSTRUCT_ENCODE_STRING(OutBuffer, new_message_array[i].c_str());
|
||||
}
|
||||
|
||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, 0);
|
||||
|
||||
delete[] __emu_buffer;
|
||||
dest->FastQueuePacket(&in, ack_req);
|
||||
}
|
||||
|
||||
+10
-7
@@ -943,26 +943,27 @@ namespace RoF2
|
||||
|
||||
unsigned char *__emu_buffer = in->pBuffer;
|
||||
|
||||
char *old_message_ptr = (char *)in->pBuffer;
|
||||
old_message_ptr += sizeof(FormattedMessage_Struct);
|
||||
|
||||
std::string old_message_array[9];
|
||||
|
||||
char *old_message_ptr = (char *)__emu_buffer + sizeof(FormattedMessage_Struct);
|
||||
|
||||
for (int i = 0; i < 9; ++i) {
|
||||
if (*old_message_ptr == 0) { break; }
|
||||
old_message_array[i] = old_message_ptr;
|
||||
old_message_ptr += old_message_array[i].length() + 1;
|
||||
if (old_message_array[i].length() == 0) { break; }
|
||||
}
|
||||
|
||||
uint32 new_message_size = 0;
|
||||
std::string new_message_array[9];
|
||||
|
||||
for (int i = 0; i < 9; ++i) {
|
||||
ServerToRoF2TextLink(new_message_array[i], old_message_array[i]);
|
||||
new_message_size += (new_message_array[i].length() + 1);
|
||||
if (new_message_array[i].length() == 0) { break; }
|
||||
ServerToRoF2TextLink(new_message_array[i], old_message_array[i]);
|
||||
new_message_size += new_message_array[i].length() + 1;
|
||||
}
|
||||
|
||||
in->size = sizeof(FormattedMessage_Struct) + new_message_size;
|
||||
in->size = sizeof(FormattedMessage_Struct) + new_message_size + 1;
|
||||
in->pBuffer = new unsigned char[in->size];
|
||||
|
||||
char *OutBuffer = (char *)in->pBuffer;
|
||||
@@ -972,10 +973,12 @@ namespace RoF2
|
||||
VARSTRUCT_ENCODE_TYPE(uint32, OutBuffer, emu->type);
|
||||
|
||||
for (int i = 0; i < 9; ++i) {
|
||||
VARSTRUCT_ENCODE_STRING(OutBuffer, new_message_array[i].c_str());
|
||||
if (new_message_array[i].length() == 0) { break; }
|
||||
VARSTRUCT_ENCODE_STRING(OutBuffer, new_message_array[i].c_str());
|
||||
}
|
||||
|
||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, 0);
|
||||
|
||||
delete[] __emu_buffer;
|
||||
dest->FastQueuePacket(&in, ack_req);
|
||||
}
|
||||
|
||||
+10
-7
@@ -646,26 +646,27 @@ namespace SoD
|
||||
|
||||
unsigned char *__emu_buffer = in->pBuffer;
|
||||
|
||||
char *old_message_ptr = (char *)in->pBuffer;
|
||||
old_message_ptr += sizeof(FormattedMessage_Struct);
|
||||
|
||||
std::string old_message_array[9];
|
||||
|
||||
char *old_message_ptr = (char *)__emu_buffer + sizeof(FormattedMessage_Struct);
|
||||
|
||||
for (int i = 0; i < 9; ++i) {
|
||||
if (*old_message_ptr == 0) { break; }
|
||||
old_message_array[i] = old_message_ptr;
|
||||
old_message_ptr += old_message_array[i].length() + 1;
|
||||
if (old_message_array[i].length() == 0) { break; }
|
||||
}
|
||||
|
||||
uint32 new_message_size = 0;
|
||||
std::string new_message_array[9];
|
||||
|
||||
for (int i = 0; i < 9; ++i) {
|
||||
ServerToSoDTextLink(new_message_array[i], old_message_array[i]);
|
||||
new_message_size += (new_message_array[i].length() + 1);
|
||||
if (new_message_array[i].length() == 0) { break; }
|
||||
ServerToSoDTextLink(new_message_array[i], old_message_array[i]);
|
||||
new_message_size += new_message_array[i].length() + 1;
|
||||
}
|
||||
|
||||
in->size = sizeof(FormattedMessage_Struct) + new_message_size;
|
||||
in->size = sizeof(FormattedMessage_Struct) + new_message_size + 1;
|
||||
in->pBuffer = new unsigned char[in->size];
|
||||
|
||||
char *OutBuffer = (char *)in->pBuffer;
|
||||
@@ -675,10 +676,12 @@ namespace SoD
|
||||
VARSTRUCT_ENCODE_TYPE(uint32, OutBuffer, emu->type);
|
||||
|
||||
for (int i = 0; i < 9; ++i) {
|
||||
VARSTRUCT_ENCODE_STRING(OutBuffer, new_message_array[i].c_str());
|
||||
if (new_message_array[i].length() == 0) { break; }
|
||||
VARSTRUCT_ENCODE_STRING(OutBuffer, new_message_array[i].c_str());
|
||||
}
|
||||
|
||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, 0);
|
||||
|
||||
delete[] __emu_buffer;
|
||||
dest->FastQueuePacket(&in, ack_req);
|
||||
}
|
||||
|
||||
+10
-7
@@ -633,26 +633,27 @@ namespace SoF
|
||||
|
||||
unsigned char *__emu_buffer = in->pBuffer;
|
||||
|
||||
char *old_message_ptr = (char *)in->pBuffer;
|
||||
old_message_ptr += sizeof(FormattedMessage_Struct);
|
||||
|
||||
std::string old_message_array[9];
|
||||
|
||||
char *old_message_ptr = (char *)__emu_buffer + sizeof(FormattedMessage_Struct);
|
||||
|
||||
for (int i = 0; i < 9; ++i) {
|
||||
if (*old_message_ptr == 0) { break; }
|
||||
old_message_array[i] = old_message_ptr;
|
||||
old_message_ptr += old_message_array[i].length() + 1;
|
||||
if (old_message_array[i].length() == 0) { break; }
|
||||
}
|
||||
|
||||
uint32 new_message_size = 0;
|
||||
std::string new_message_array[9];
|
||||
|
||||
for (int i = 0; i < 9; ++i) {
|
||||
ServerToSoFTextLink(new_message_array[i], old_message_array[i]);
|
||||
new_message_size += (new_message_array[i].length() + 1);
|
||||
if (new_message_array[i].length() == 0) { break; }
|
||||
ServerToSoFTextLink(new_message_array[i], old_message_array[i]);
|
||||
new_message_size += new_message_array[i].length() + 1;
|
||||
}
|
||||
|
||||
in->size = sizeof(FormattedMessage_Struct) + new_message_size;
|
||||
in->size = sizeof(FormattedMessage_Struct) + new_message_size + 1;
|
||||
in->pBuffer = new unsigned char[in->size];
|
||||
|
||||
char *OutBuffer = (char *)in->pBuffer;
|
||||
@@ -662,10 +663,12 @@ namespace SoF
|
||||
VARSTRUCT_ENCODE_TYPE(uint32, OutBuffer, emu->type);
|
||||
|
||||
for (int i = 0; i < 9; ++i) {
|
||||
VARSTRUCT_ENCODE_STRING(OutBuffer, new_message_array[i].c_str());
|
||||
if (new_message_array[i].length() == 0) { break; }
|
||||
VARSTRUCT_ENCODE_STRING(OutBuffer, new_message_array[i].c_str());
|
||||
}
|
||||
|
||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, 0);
|
||||
|
||||
delete[] __emu_buffer;
|
||||
dest->FastQueuePacket(&in, ack_req);
|
||||
}
|
||||
|
||||
@@ -492,26 +492,27 @@ namespace Titanium
|
||||
|
||||
unsigned char *__emu_buffer = in->pBuffer;
|
||||
|
||||
char *old_message_ptr = (char *)in->pBuffer;
|
||||
old_message_ptr += sizeof(FormattedMessage_Struct);
|
||||
|
||||
std::string old_message_array[9];
|
||||
|
||||
char *old_message_ptr = (char *)__emu_buffer + sizeof(FormattedMessage_Struct);
|
||||
|
||||
for (int i = 0; i < 9; ++i) {
|
||||
if (*old_message_ptr == 0) { break; }
|
||||
old_message_array[i] = old_message_ptr;
|
||||
old_message_ptr += old_message_array[i].length() + 1;
|
||||
if (old_message_array[i].length() == 0) { break; }
|
||||
}
|
||||
|
||||
uint32 new_message_size = 0;
|
||||
std::string new_message_array[9];
|
||||
|
||||
for (int i = 0; i < 9; ++i) {
|
||||
ServerToTitaniumTextLink(new_message_array[i], old_message_array[i]);
|
||||
new_message_size += (new_message_array[i].length() + 1);
|
||||
if (new_message_array[i].length() == 0) { break; }
|
||||
ServerToTitaniumTextLink(new_message_array[i], old_message_array[i]);
|
||||
new_message_size += new_message_array[i].length() + 1;
|
||||
}
|
||||
|
||||
in->size = sizeof(FormattedMessage_Struct) + new_message_size;
|
||||
in->size = sizeof(FormattedMessage_Struct) + new_message_size + 1;
|
||||
in->pBuffer = new unsigned char[in->size];
|
||||
|
||||
char *OutBuffer = (char *)in->pBuffer;
|
||||
@@ -521,10 +522,12 @@ namespace Titanium
|
||||
VARSTRUCT_ENCODE_TYPE(uint32, OutBuffer, emu->type);
|
||||
|
||||
for (int i = 0; i < 9; ++i) {
|
||||
VARSTRUCT_ENCODE_STRING(OutBuffer, new_message_array[i].c_str());
|
||||
if (new_message_array[i].length() == 0) { break; }
|
||||
VARSTRUCT_ENCODE_STRING(OutBuffer, new_message_array[i].c_str());
|
||||
}
|
||||
|
||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, 0);
|
||||
|
||||
delete[] __emu_buffer;
|
||||
dest->FastQueuePacket(&in, ack_req);
|
||||
}
|
||||
|
||||
@@ -790,26 +790,27 @@ namespace Underfoot
|
||||
|
||||
unsigned char *__emu_buffer = in->pBuffer;
|
||||
|
||||
char *old_message_ptr = (char *)in->pBuffer;
|
||||
old_message_ptr += sizeof(FormattedMessage_Struct);
|
||||
|
||||
std::string old_message_array[9];
|
||||
|
||||
char *old_message_ptr = (char *)__emu_buffer + sizeof(FormattedMessage_Struct);
|
||||
|
||||
for (int i = 0; i < 9; ++i) {
|
||||
if (*old_message_ptr == 0) { break; }
|
||||
old_message_array[i] = old_message_ptr;
|
||||
old_message_ptr += old_message_array[i].length() + 1;
|
||||
if (old_message_array[i].length() == 0) { break; }
|
||||
}
|
||||
|
||||
uint32 new_message_size = 0;
|
||||
std::string new_message_array[9];
|
||||
|
||||
for (int i = 0; i < 9; ++i) {
|
||||
ServerToUnderfootTextLink(new_message_array[i], old_message_array[i]);
|
||||
new_message_size += (new_message_array[i].length() + 1);
|
||||
if (new_message_array[i].length() == 0) { break; }
|
||||
ServerToUnderfootTextLink(new_message_array[i], old_message_array[i]);
|
||||
new_message_size += new_message_array[i].length() + 1;
|
||||
}
|
||||
|
||||
in->size = sizeof(FormattedMessage_Struct) + new_message_size;
|
||||
in->size = sizeof(FormattedMessage_Struct) + new_message_size + 1;
|
||||
in->pBuffer = new unsigned char[in->size];
|
||||
|
||||
char *OutBuffer = (char *)in->pBuffer;
|
||||
@@ -819,10 +820,12 @@ namespace Underfoot
|
||||
VARSTRUCT_ENCODE_TYPE(uint32, OutBuffer, emu->type);
|
||||
|
||||
for (int i = 0; i < 9; ++i) {
|
||||
VARSTRUCT_ENCODE_STRING(OutBuffer, new_message_array[i].c_str());
|
||||
if (new_message_array[i].length() == 0) { break; }
|
||||
VARSTRUCT_ENCODE_STRING(OutBuffer, new_message_array[i].c_str());
|
||||
}
|
||||
|
||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, 0);
|
||||
|
||||
delete[] __emu_buffer;
|
||||
dest->FastQueuePacket(&in, ack_req);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user