Fix for OP_FormattedMessage text link server crashes

This commit is contained in:
Uleat
2015-01-12 01:42:27 -05:00
parent 21e5ccdf88
commit f612082f5d
8 changed files with 62 additions and 38 deletions
+7 -5
View File
@@ -877,7 +877,6 @@ namespace RoF
unsigned char *__emu_buffer = in->pBuffer;
uint32 old_message_size = in->size - sizeof(FormattedMessage_Struct);
std::string old_message_array[9];
char *old_message_ptr = (char *)__emu_buffer + sizeof(FormattedMessage_Struct);
@@ -885,6 +884,7 @@ namespace RoF
for (int i = 0; i < 9; ++i) {
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;
@@ -893,9 +893,10 @@ namespace RoF
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; }
}
in->size = sizeof(FormattedMessage_Struct) + new_message_size + 1;
in->size = sizeof(FormattedMessage_Struct) + new_message_size;
in->pBuffer = new unsigned char[in->size];
char *OutBuffer = (char *)in->pBuffer;
@@ -904,9 +905,10 @@ namespace RoF
VARSTRUCT_ENCODE_TYPE(uint32, OutBuffer, emu->string_id);
VARSTRUCT_ENCODE_TYPE(uint32, OutBuffer, emu->type);
for (int i = 0; i < 9; ++i) { VARSTRUCT_ENCODE_STRING(OutBuffer, new_message_array[i].c_str()); }
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, 0);
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; }
}
delete[] __emu_buffer;
dest->FastQueuePacket(&in, ack_req);
+7 -5
View File
@@ -943,7 +943,6 @@ namespace RoF2
unsigned char *__emu_buffer = in->pBuffer;
uint32 old_message_size = in->size - sizeof(FormattedMessage_Struct);
std::string old_message_array[9];
char *old_message_ptr = (char *)__emu_buffer + sizeof(FormattedMessage_Struct);
@@ -951,6 +950,7 @@ namespace RoF2
for (int i = 0; i < 9; ++i) {
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;
@@ -959,9 +959,10 @@ namespace RoF2
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; }
}
in->size = sizeof(FormattedMessage_Struct) + new_message_size + 1;
in->size = sizeof(FormattedMessage_Struct) + new_message_size;
in->pBuffer = new unsigned char[in->size];
char *OutBuffer = (char *)in->pBuffer;
@@ -970,9 +971,10 @@ namespace RoF2
VARSTRUCT_ENCODE_TYPE(uint32, OutBuffer, emu->string_id);
VARSTRUCT_ENCODE_TYPE(uint32, OutBuffer, emu->type);
for (int i = 0; i < 9; ++i) { VARSTRUCT_ENCODE_STRING(OutBuffer, new_message_array[i].c_str()); }
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, 0);
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; }
}
delete[] __emu_buffer;
dest->FastQueuePacket(&in, ack_req);
+7 -5
View File
@@ -646,7 +646,6 @@ namespace SoD
unsigned char *__emu_buffer = in->pBuffer;
uint32 old_message_size = in->size - sizeof(FormattedMessage_Struct);
std::string old_message_array[9];
char *old_message_ptr = (char *)__emu_buffer + sizeof(FormattedMessage_Struct);
@@ -654,6 +653,7 @@ namespace SoD
for (int i = 0; i < 9; ++i) {
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;
@@ -662,9 +662,10 @@ namespace SoD
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; }
}
in->size = sizeof(FormattedMessage_Struct) + new_message_size + 1;
in->size = sizeof(FormattedMessage_Struct) + new_message_size;
in->pBuffer = new unsigned char[in->size];
char *OutBuffer = (char *)in->pBuffer;
@@ -673,9 +674,10 @@ namespace SoD
VARSTRUCT_ENCODE_TYPE(uint32, OutBuffer, emu->string_id);
VARSTRUCT_ENCODE_TYPE(uint32, OutBuffer, emu->type);
for (int i = 0; i < 9; ++i) { VARSTRUCT_ENCODE_STRING(OutBuffer, new_message_array[i].c_str()); }
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, 0);
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; }
}
delete[] __emu_buffer;
dest->FastQueuePacket(&in, ack_req);
+7 -5
View File
@@ -633,7 +633,6 @@ namespace SoF
unsigned char *__emu_buffer = in->pBuffer;
uint32 old_message_size = in->size - sizeof(FormattedMessage_Struct);
std::string old_message_array[9];
char *old_message_ptr = (char *)__emu_buffer + sizeof(FormattedMessage_Struct);
@@ -641,6 +640,7 @@ namespace SoF
for (int i = 0; i < 9; ++i) {
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;
@@ -649,9 +649,10 @@ namespace SoF
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; }
}
in->size = sizeof(FormattedMessage_Struct) + new_message_size + 1;
in->size = sizeof(FormattedMessage_Struct) + new_message_size;
in->pBuffer = new unsigned char[in->size];
char *OutBuffer = (char *)in->pBuffer;
@@ -660,9 +661,10 @@ namespace SoF
VARSTRUCT_ENCODE_TYPE(uint32, OutBuffer, emu->string_id);
VARSTRUCT_ENCODE_TYPE(uint32, OutBuffer, emu->type);
for (int i = 0; i < 9; ++i) { VARSTRUCT_ENCODE_STRING(OutBuffer, new_message_array[i].c_str()); }
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, 0);
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; }
}
delete[] __emu_buffer;
dest->FastQueuePacket(&in, ack_req);
+7 -5
View File
@@ -492,7 +492,6 @@ namespace Titanium
unsigned char *__emu_buffer = in->pBuffer;
uint32 old_message_size = in->size - sizeof(FormattedMessage_Struct);
std::string old_message_array[9];
char *old_message_ptr = (char *)__emu_buffer + sizeof(FormattedMessage_Struct);
@@ -500,6 +499,7 @@ namespace Titanium
for (int i = 0; i < 9; ++i) {
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;
@@ -508,9 +508,10 @@ namespace Titanium
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; }
}
in->size = sizeof(FormattedMessage_Struct) + new_message_size + 1;
in->size = sizeof(FormattedMessage_Struct) + new_message_size;
in->pBuffer = new unsigned char[in->size];
char *OutBuffer = (char *)in->pBuffer;
@@ -519,9 +520,10 @@ namespace Titanium
VARSTRUCT_ENCODE_TYPE(uint32, OutBuffer, emu->string_id);
VARSTRUCT_ENCODE_TYPE(uint32, OutBuffer, emu->type);
for (int i = 0; i < 9; ++i) { VARSTRUCT_ENCODE_STRING(OutBuffer, new_message_array[i].c_str()); }
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, 0);
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; }
}
delete[] __emu_buffer;
dest->FastQueuePacket(&in, ack_req);
+7 -5
View File
@@ -790,7 +790,6 @@ namespace Underfoot
unsigned char *__emu_buffer = in->pBuffer;
uint32 old_message_size = in->size - sizeof(FormattedMessage_Struct);
std::string old_message_array[9];
char *old_message_ptr = (char *)__emu_buffer + sizeof(FormattedMessage_Struct);
@@ -798,6 +797,7 @@ namespace Underfoot
for (int i = 0; i < 9; ++i) {
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;
@@ -806,9 +806,10 @@ namespace Underfoot
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; }
}
in->size = sizeof(FormattedMessage_Struct) + new_message_size + 1;
in->size = sizeof(FormattedMessage_Struct) + new_message_size;
in->pBuffer = new unsigned char[in->size];
char *OutBuffer = (char *)in->pBuffer;
@@ -817,9 +818,10 @@ namespace Underfoot
VARSTRUCT_ENCODE_TYPE(uint32, OutBuffer, emu->string_id);
VARSTRUCT_ENCODE_TYPE(uint32, OutBuffer, emu->type);
for (int i = 0; i < 9; ++i) { VARSTRUCT_ENCODE_STRING(OutBuffer, new_message_array[i].c_str()); }
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, 0);
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; }
}
delete[] __emu_buffer;
dest->FastQueuePacket(&in, ack_req);