{
WCHAR buf[10]; /* big enough for L"GivenName" */
LPWSTR keyName; /* usually = buf, but may be allocated */
- DWORD keyLen;
+ DWORD keyLen; /* full available buffer size in WCHARs */
};
static void CRYPT_InitializeKeynameKeeper(struct KeynameKeeper *keeper)
{
DWORD len = key->end - key->start;
- if (len > keeper->keyLen)
+ if (len >= keeper->keyLen)
{
- if (keeper->keyName == keeper->buf)
- keeper->keyName = CryptMemAlloc(len * sizeof(WCHAR));
- else
- keeper->keyName = CryptMemRealloc(keeper->keyName,
- len * sizeof(WCHAR));
- keeper->keyLen = len;
+ CRYPT_FreeKeynameKeeper( keeper );
+ keeper->keyLen = len + 1;
+ keeper->keyName = CryptMemAlloc(keeper->keyLen * sizeof(WCHAR));
}
- memcpy(keeper->keyName, key->start, (key->end - key->start) *
- sizeof(WCHAR));
+ memcpy(keeper->keyName, key->start, len * sizeof(WCHAR));
keeper->keyName[len] = '\0';
TRACE("Keyname is %s\n", debugstr_w(keeper->keyName));
}
reactos/dll/win32/comdlg32 # Synced to WineStaging-1.9.4
reactos/dll/win32/compstui # Synced to WineStaging-1.7.55
reactos/dll/win32/credui # Synced to WineStaging-1.7.55
-reactos/dll/win32/crypt32 # Synced to WineStaging-1.7.55
+reactos/dll/win32/crypt32 # Synced to WineStaging-1.9.4
reactos/dll/win32/cryptdlg # Synced to WineStaging-1.7.55
reactos/dll/win32/cryptdll # Synced to WineStaging-1.7.55
reactos/dll/win32/cryptnet # Synced to WineStaging-1.7.55