diff --git a/MemoryModule.c b/MemoryModule.c index cf38388..1f2bdc8 100644 --- a/MemoryModule.c +++ b/MemoryModule.c @@ -27,6 +27,10 @@ #include #include #include +#ifdef __MINGW32__ +// for mbstowcs_s and wcstombs_s +#include +#endif #include #ifdef DEBUG_OUTPUT #include @@ -851,8 +855,9 @@ static PIMAGE_RESOURCE_DIRECTORY_ENTRY _MemorySearchResourceEntry( // using a pre-allocated array. wchar_t _searchKeySpace[MAX_LOCAL_KEY_LENGTH+1]; LPWSTR _searchKey; + size_t _searchKeySize; if (searchKeyLen > MAX_LOCAL_KEY_LENGTH) { - size_t _searchKeySize = (searchKeyLen + 1) * sizeof(wchar_t); + _searchKeySize = (searchKeyLen + 1) * sizeof(wchar_t); _searchKey = (LPWSTR) malloc(_searchKeySize); if (_searchKey == NULL) { SetLastError(ERROR_OUTOFMEMORY); @@ -860,10 +865,10 @@ static PIMAGE_RESOURCE_DIRECTORY_ENTRY _MemorySearchResourceEntry( } } else { _searchKey = &_searchKeySpace[0]; + _searchKeySize = sizeof(_searchKeySpace); } - mbstowcs(_searchKey, key, searchKeyLen); - _searchKey[searchKeyLen] = 0; + mbstowcs_s(NULL, _searchKey, _searchKeySize, key, searchKeyLen); searchKey = _searchKey; #endif start = 0; @@ -990,7 +995,7 @@ MemoryLoadStringEx(HMEMORYMODULE module, UINT id, LPTSTR buffer, int maxsize, WO { HMEMORYRSRC resource; PIMAGE_RESOURCE_DIR_STRING_U data; - DWORD size; + int size; if (maxsize == 0) { return 0; } @@ -1013,15 +1018,13 @@ MemoryLoadStringEx(HMEMORYMODULE module, UINT id, LPTSTR buffer, int maxsize, WO } size = data->Length; - if (size >= (DWORD) maxsize) { - size = maxsize; - } else { - buffer[size] = 0; + if (size >= maxsize) { + size = maxsize - 1; } #if defined(UNICODE) - wcsncpy(buffer, data->NameString, size); + wcsncpy_s(buffer, maxsize, data->NameString, size); #else - wcstombs(buffer, data->NameString, size); + wcstombs_s(NULL, buffer, maxsize, data->NameString, size); #endif return size; } pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy