mirror of
https://github.com/alliedmodders/amxmodx.git
synced 2025-02-03 01:00:31 +03:00
Geoip: Increase buffer and fix potential overflow crash.
This commit is contained in:
parent
d2ed9e70cd
commit
52543481dd
@ -84,7 +84,7 @@ bool lookupByIp(const char *ip, const char **path, MMDB_entry_data_s *result)
|
|||||||
|
|
||||||
const char *lookupString(const char *ip, const char **path, int *length = NULL)
|
const char *lookupString(const char *ip, const char **path, int *length = NULL)
|
||||||
{
|
{
|
||||||
static char buffer[64];
|
static char buffer[256]; // This should be large enough for long name in UTF-8.
|
||||||
MMDB_entry_data_s result;
|
MMDB_entry_data_s result;
|
||||||
|
|
||||||
if (!lookupByIp(ip, path, &result))
|
if (!lookupByIp(ip, path, &result))
|
||||||
@ -92,14 +92,18 @@ const char *lookupString(const char *ip, const char **path, int *length = NULL)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Let's avoid a crash in case we go over the buffer size.
|
||||||
|
size_t maxLength = ke::Min(result.data_size, sizeof(buffer));
|
||||||
|
|
||||||
|
// Strings from database are not null terminated.
|
||||||
|
memcpy(buffer, result.utf8_string, maxLength);
|
||||||
|
buffer[result.data_size] = '\0';
|
||||||
|
|
||||||
if (length)
|
if (length)
|
||||||
{
|
{
|
||||||
*length = result.data_size;
|
*length = maxLength;
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(buffer, result.utf8_string, result.data_size);
|
|
||||||
buffer[result.data_size] = '\0';
|
|
||||||
|
|
||||||
return buffer;
|
return buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user