From ba046a5d60fe40ebb815822d4972e1dd3944e3cf Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 4 Sep 2025 10:44:20 +0200 Subject: [PATCH] REVIEWED: `DecompressData()`, fixed buffer copying --- src/rcore.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/rcore.c b/src/rcore.c index d1b1a8219..97fc9e799 100644 --- a/src/rcore.c +++ b/src/rcore.c @@ -2563,19 +2563,19 @@ unsigned char *DecompressData(const unsigned char *compData, int compDataSize, i #if defined(SUPPORT_COMPRESSION_API) // Decompress data from a valid DEFLATE stream unsigned char *data0 = (unsigned char *)RL_CALLOC(MAX_DECOMPRESSION_SIZE*1024*1024, 1); - int length = sinflate(data, MAX_DECOMPRESSION_SIZE*1024*1024, compData, compDataSize); + int size = sinflate(data0, MAX_DECOMPRESSION_SIZE*1024*1024, compData, compDataSize); // WARNING: RL_REALLOC can make (and leave) data copies in memory, // that can be a security concern in case of compression of sensitive data // So, we use a second buffer to copy data manually, wiping original buffer memory - data = (unsigned char *)RL_CALLOC(length, 1); - memcpy(data, data0, length); + data = (unsigned char *)RL_CALLOC(size, 1); + memcpy(data, data0, size); memset(data0, 0, MAX_DECOMPRESSION_SIZE*1024*1024); // Wipe memory, is memset() safe? RL_FREE(data0); - TRACELOG(LOG_INFO, "SYSTEM: Decompress data: Comp. size: %i -> Original size: %i", compDataSize, length); + TRACELOG(LOG_INFO, "SYSTEM: Decompress data: Comp. size: %i -> Original size: %i", compDataSize, size); - *dataSize = length; + *dataSize = size; #endif return data;