--- old/src/jdk.crypto.mscapi/windows/native/libsunmscapi/security.cpp 2018-03-06 22:22:36.000000000 +0800 +++ new/src/jdk.crypto.mscapi/windows/native/libsunmscapi/security.cpp 2018-03-06 22:22:35.000000000 +0800 @@ -92,7 +92,7 @@ * Overloaded 'operator new[]' variant, which will raise Java's * OutOfMemoryError in the case of a failure. */ -static void* operator new[](std::size_t size, JNIEnv *env) +void* operator new[](std::size_t size, JNIEnv *env) { void* buf = ::operator new[](size, std::nothrow); if (buf == NULL) { @@ -1539,20 +1539,18 @@ (JNIEnv *env, jobject obj, jlong hKey) { DWORD dwDataLen = sizeof(DWORD); - BYTE pbData[sizeof(DWORD)]; DWORD length = 0; __try { // Get key length (in bits) //TODO - may need to use KP_BLOCKLEN instead? - if (!(::CryptGetKeyParam((HCRYPTKEY) hKey, KP_KEYLEN, (BYTE *)pbData, &dwDataLen, + if (!(::CryptGetKeyParam((HCRYPTKEY) hKey, KP_KEYLEN, (PBYTE)&length, &dwDataLen, 0))) { ThrowException(env, KEY_EXCEPTION, GetLastError()); __leave; } - length = (DWORD) pbData; } __finally {