SL-14766 long unicode display names corrupt the conversation.log

Contribution by Beq Janus
master
Andrey Kleshchev 2021-01-26 20:28:31 +02:00
parent 0e4faf7d9c
commit a3d31ca683
2 changed files with 13 additions and 7 deletions

View File

@ -264,10 +264,10 @@ Benja Kepler
Benjamin Bigdipper
Beq Janus
BUG-227094
Beth Walcher
Beq Janus
SL-10288
SL-13583
SL-14766
Beth Walcher
Bezilon Kasei
Biancaluce Robbiani
CT-225

View File

@ -535,7 +535,9 @@ bool LLConversationLog::loadFromFile(const std::string& filename)
}
bool purge_required = false;
char buffer[MAX_STRING];
static constexpr int UTF_BUFFER{ 1024 }; // long enough to handle the most extreme Unicode nonsense and some to spare
char buffer[UTF_BUFFER];
char conv_name_buffer[MAX_STRING];
char part_id_buffer[MAX_STRING];
char conv_id_buffer[MAX_STRING];
@ -546,11 +548,14 @@ bool LLConversationLog::loadFromFile(const std::string& filename)
// before CHUI-348 it was a flag of conversation voice state
int prereserved_unused;
while (!feof(fp) && fgets(buffer, MAX_STRING, fp))
memset(buffer, '\0', UTF_BUFFER);
while (!feof(fp) && fgets(buffer, UTF_BUFFER, fp))
{
conv_name_buffer[0] = '\0';
part_id_buffer[0] = '\0';
conv_id_buffer[0] = '\0';
// force blank for added safety
memset(conv_name_buffer, '\0', MAX_STRING);
memset(part_id_buffer, '\0', MAX_STRING);
memset(conv_id_buffer, '\0', MAX_STRING);
memset(history_file_name, '\0', MAX_STRING);
sscanf(buffer, "[%lld] %d %d %d %[^|]| %s %s %[^|]|",
&time,
@ -587,6 +592,7 @@ bool LLConversationLog::loadFromFile(const std::string& filename)
}
mConversations.push_back(conversation);
memset(buffer, '\0', UTF_BUFFER);
}
fclose(fp);