mirror of
https://github.com/edubart/otclient.git
synced 2025-04-29 17:19:20 +02:00
Merge pull request #1052 from diath/fix_demangle_name
Fix a possible missing null terminator in the demangle_name output buffer
This commit is contained in:
commit
23bc0ab4b7
@ -45,21 +45,25 @@ namespace stdext {
|
|||||||
const char* demangle_name(const char* name)
|
const char* demangle_name(const char* name)
|
||||||
{
|
{
|
||||||
static const unsigned BufferSize = 1024;
|
static const unsigned BufferSize = 1024;
|
||||||
static char Buffer[1024] = {};
|
static char Buffer[BufferSize] = {};
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
UnDecorateSymbolName(name, Buffer, BufferSize, UNDNAME_COMPLETE);
|
int written = UnDecorateSymbolName(name, Buffer, BufferSize - 1, UNDNAME_COMPLETE);
|
||||||
return Buffer;
|
Buffer[written] = '\0';
|
||||||
#else
|
#else
|
||||||
size_t len;
|
size_t len;
|
||||||
int status;
|
int status;
|
||||||
char* demangled = abi::__cxa_demangle(name, nullptr, &len, &status);
|
char* demangled = abi::__cxa_demangle(name, nullptr, &len, &status);
|
||||||
if(demangled) {
|
if(demangled) {
|
||||||
strncpy(Buffer, demangled, BufferSize);
|
strncpy(Buffer, demangled, BufferSize - 1);
|
||||||
|
Buffer[BufferSize - 1] = '\0';
|
||||||
free(demangled);
|
free(demangled);
|
||||||
|
} else {
|
||||||
|
Buffer[0] = '\0';
|
||||||
}
|
}
|
||||||
return Buffer;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
return Buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user