Mercurial > hg > shenandoah-preopenjdk-archive > openjdk8 > jdk
changeset 10251:1861e9730374
8063700: -Xcheck:jni changes cause many JCK failures in api/javax_crypto tests in SunPKCS11
Reviewed-by: mullan, valeriep
author | ascarpino |
---|---|
date | Sat, 08 Nov 2014 09:42:45 -0800 |
parents | a73b9a26a9ae |
children | f4a778ce0cab |
files | src/share/native/sun/security/pkcs11/wrapper/p11_crypt.c test/sun/security/pkcs11/Cipher/JNICheck.java |
diffstat | 2 files changed, 70 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/native/sun/security/pkcs11/wrapper/p11_crypt.c Fri Apr 18 18:46:50 2014 +0400 +++ b/src/share/native/sun/security/pkcs11/wrapper/p11_crypt.c Sat Nov 08 09:42:45 2014 -0800 @@ -141,8 +141,8 @@ (CK_BYTE_PTR)(outBufP + jOutOfs), &ckEncryptedPartLen); - (*env)->ReleasePrimitiveArrayCritical(env, jOut, outBufP, JNI_ABORT); (*env)->ReleasePrimitiveArrayCritical(env, jIn, inBufP, JNI_ABORT); + (*env)->ReleasePrimitiveArrayCritical(env, jOut, outBufP, JNI_COMMIT); ckAssertReturnValueOK(env, rv); return ckEncryptedPartLen; @@ -214,7 +214,7 @@ } if (directOut == 0) { - (*env)->ReleasePrimitiveArrayCritical(env, jOut, outBufP, JNI_ABORT); + (*env)->ReleasePrimitiveArrayCritical(env, jOut, outBufP, JNI_COMMIT); } ckAssertReturnValueOK(env, rv); @@ -266,7 +266,7 @@ //printf("EF: ckLastEncryptedPartLen=%i", ckLastEncryptedPartLen); if (directOut == 0) { - (*env)->ReleasePrimitiveArrayCritical(env, jOut, outBufP, JNI_ABORT); + (*env)->ReleasePrimitiveArrayCritical(env, jOut, outBufP, JNI_COMMIT); } ckAssertReturnValueOK(env, rv); @@ -361,8 +361,8 @@ (CK_BYTE_PTR)(outBufP + jOutOfs), &ckPartLen); - (*env)->ReleasePrimitiveArrayCritical(env, jOut, outBufP, JNI_ABORT); (*env)->ReleasePrimitiveArrayCritical(env, jIn, inBufP, JNI_ABORT); + (*env)->ReleasePrimitiveArrayCritical(env, jOut, outBufP, JNI_COMMIT); ckAssertReturnValueOK(env, rv); @@ -429,7 +429,7 @@ } if (directOut == 0) { - (*env)->ReleasePrimitiveArrayCritical(env, jOut, outBufP, JNI_ABORT); + (*env)->ReleasePrimitiveArrayCritical(env, jOut, outBufP, JNI_COMMIT); } ckAssertReturnValueOK(env, rv); @@ -478,7 +478,7 @@ &ckLastPartLen); if (directOut == 0) { - (*env)->ReleasePrimitiveArrayCritical(env, jOut, outBufP, JNI_ABORT); + (*env)->ReleasePrimitiveArrayCritical(env, jOut, outBufP, JNI_COMMIT); }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/sun/security/pkcs11/Cipher/JNICheck.java Sat Nov 08 09:42:45 2014 -0800 @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8063700 + * @run main/othervm -Xcheck:jni JNICheck + */ + +import javax.crypto.Cipher; +import javax.crypto.SealedObject; +import javax.crypto.SecretKey; +import javax.crypto.KeyGenerator; +import java.security.NoSuchProviderException; + +public class JNICheck { + + /* This test is similar to the JCK test that found 8063700. */ + static class SealedObjectTest { + Cipher c; + + SealedObjectTest() throws Exception { + try { + c = Cipher.getInstance("AES", "SunPKCS11-Solaris"); + } catch (NoSuchProviderException nspe) { + System.out.println("No SunPKCS11-Solaris provider. Test skipped"); + return; + } + + String s = "Test string"; + SealedObject so; + SecretKey key = KeyGenerator.getInstance("AES").generateKey(); + + c.init(Cipher.ENCRYPT_MODE, key); + so = new SealedObject(s, c); + + so.getObject(key, "SunPKCS11-Solaris"); + } + } + + public static void main(String args[]) throws Exception { + new SealedObjectTest(); + } +}