@@ -851,19 +851,20 @@ static PIMAGE_RESOURCE_DIRECTORY_ENTRY _MemorySearchResourceEntry(
851
851
// using a pre-allocated array.
852
852
wchar_t _searchKeySpace [MAX_LOCAL_KEY_LENGTH + 1 ];
853
853
LPWSTR _searchKey ;
854
+ size_t _searchKeySize ;
854
855
if (searchKeyLen > MAX_LOCAL_KEY_LENGTH ) {
855
- size_t _searchKeySize = (searchKeyLen + 1 ) * sizeof (wchar_t );
856
+ _searchKeySize = (searchKeyLen + 1 ) * sizeof (wchar_t );
856
857
_searchKey = (LPWSTR ) malloc (_searchKeySize );
857
858
if (_searchKey == NULL ) {
858
859
SetLastError (ERROR_OUTOFMEMORY );
859
860
return NULL ;
860
861
}
861
862
} else {
862
863
_searchKey = & _searchKeySpace [0 ];
864
+ _searchKeySize = sizeof (_searchKeySpace );
863
865
}
864
866
865
- mbstowcs (_searchKey , key , searchKeyLen );
866
- _searchKey [searchKeyLen ] = 0 ;
867
+ mbstowcs_s (NULL , _searchKey , _searchKeySize , key , searchKeyLen );
867
868
searchKey = _searchKey ;
868
869
#endif
869
870
start = 0 ;
@@ -990,7 +991,7 @@ MemoryLoadStringEx(HMEMORYMODULE module, UINT id, LPTSTR buffer, int maxsize, WO
990
991
{
991
992
HMEMORYRSRC resource ;
992
993
PIMAGE_RESOURCE_DIR_STRING_U data ;
993
- DWORD size ;
994
+ int size ;
994
995
if (maxsize == 0 ) {
995
996
return 0 ;
996
997
}
@@ -1013,15 +1014,13 @@ MemoryLoadStringEx(HMEMORYMODULE module, UINT id, LPTSTR buffer, int maxsize, WO
1013
1014
}
1014
1015
1015
1016
size = data -> Length ;
1016
- if (size >= (DWORD ) maxsize ) {
1017
- size = maxsize ;
1018
- } else {
1019
- buffer [size ] = 0 ;
1017
+ if (size >= maxsize ) {
1018
+ size = maxsize - 1 ;
1020
1019
}
1021
1020
#if defined(UNICODE )
1022
- wcsncpy (buffer , data -> NameString , size );
1021
+ wcsncpy_s (buffer , maxsize , data -> NameString , size );
1023
1022
#else
1024
- wcstombs ( buffer , data -> NameString , size );
1023
+ wcstombs_s ( NULL , buffer , maxsize , data -> NameString , size );
1025
1024
#endif
1026
1025
return size ;
1027
1026
}
0 commit comments