WARNING: REDESIGNED: EncodeDataBase64(), NULL terminated string returned

Note that returned output size considers the NULL terminator as an additional byte.
This commit is contained in:
Ray
2025-05-22 17:06:55 +02:00
parent 21f0fe2a73
commit afb52b19a4
2 changed files with 5 additions and 2 deletions

View File

@@ -2539,6 +2539,7 @@ unsigned char *DecompressData(const unsigned char *compData, int compDataSize, i
}
// Encode data to Base64 string
// NOTE: Returned string includes NULL terminator, considered on outputSize
char *EncodeDataBase64(const unsigned char *data, int dataSize, int *outputSize)
{
static const unsigned char base64encodeTable[] = {
@@ -2549,7 +2550,7 @@ char *EncodeDataBase64(const unsigned char *data, int dataSize, int *outputSize)
static const int modTable[] = { 0, 2, 1 };
*outputSize = 4*((dataSize + 2)/3);
*outputSize = 4*((dataSize + 2)/3) + 1; // Adding +1 for NULL terminator
char *encodedData = (char *)RL_MALLOC(*outputSize);
@@ -2571,6 +2572,8 @@ char *EncodeDataBase64(const unsigned char *data, int dataSize, int *outputSize)
for (int i = 0; i < modTable[dataSize%3]; i++) encodedData[*outputSize - 1 - i] = '='; // Padding character
encodedData[*outputSize - 1] = '\0';
return encodedData;
}