Remove two potential out of bounds crashes in GuiTextBoxMulti (#211)

This commit is contained in:
gulrak 2022-06-09 21:07:10 +02:00 committed by GitHub
parent 1b18e43768
commit 798da1b522
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -2319,9 +2319,11 @@ bool GuiTextBoxMulti(Rectangle bounds, char *text, int textSize, bool editMode)
// We get an Unicode codepoint // We get an Unicode codepoint
int codepoint = GetCharPressed(); int codepoint = GetCharPressed();
int textLength = (int)strlen(text); // Length in bytes (UTF-8 string) int textLength = (int)strlen(text); // Length in bytes (UTF-8 string)
int byteSize = 0;
const char *textUTF8 = CodepointToUTF8(key, &byteSize)
// Introduce characters // Introduce characters
if (textLength < (textSize - 1)) if ((textLength + byteSize) < textSize)
{ {
if (IsKeyPressed(KEY_ENTER)) if (IsKeyPressed(KEY_ENTER))
{ {
@ -2353,7 +2355,7 @@ bool GuiTextBoxMulti(Rectangle bounds, char *text, int textSize, bool editMode)
{ {
// Remove latest UTF-8 unicode character introduced (n bytes) // Remove latest UTF-8 unicode character introduced (n bytes)
int charUTF8Length = 0; int charUTF8Length = 0;
while (((unsigned char)text[textLength - 1 - charUTF8Length] & 0b01000000) == 0) charUTF8Length++; while (charUTF8Length < textLength && ((unsigned char)text[textLength - 1 - charUTF8Length] & 0b01000000) == 0) charUTF8Length++;
textLength -= (charUTF8Length + 1); textLength -= (charUTF8Length + 1);
text[textLength] = '\0'; text[textLength] = '\0';