5 # Node ID 610eb1b5fd0beb4c4cf8918f418eeddf9ff58121
6 # Parent 9ed0bdd5de2a5ebfa5fedb9442ee630b8d63ef0e
7 PR2135: Race condition in SunEC provider with system NSS
9 diff -r 9ed0bdd5de2a -r 610eb1b5fd0b make/sun/security/ec/Makefile
10 --- openjdk/jdk/make/sun/security/ec/Makefile Fri Dec 05 09:52:04 2014 +0000
11 +++ openjdk/jdk/make/sun/security/ec/Makefile Tue Dec 09 18:04:39 2014 +0000
14 $(PKGDIR)/ECDHKeyAgreement.java \
15 $(PKGDIR)/ECDSASignature.java \
16 - $(PKGDIR)/ECKeyPairGenerator.java
17 + $(PKGDIR)/ECKeyPairGenerator.java \
18 + $(PKGDIR)/SunEC.java
20 JAVAHFLAGS = -bootclasspath \
21 "$(CLASSDESTDIR)$(CLASSPATH_SEPARATOR)$(CLASSBINDIR)$(JCE_PATH)"
22 diff -r 9ed0bdd5de2a -r 610eb1b5fd0b make/sun/security/ec/mapfile-vers
23 --- openjdk/jdk/make/sun/security/ec/mapfile-vers Fri Dec 05 09:52:04 2014 +0000
24 +++ openjdk/jdk/make/sun/security/ec/mapfile-vers Tue Dec 09 18:04:39 2014 +0000
26 Java_sun_security_ec_ECDSASignature_signDigest;
27 Java_sun_security_ec_ECDSASignature_verifySignedDigest;
28 Java_sun_security_ec_ECDHKeyAgreement_deriveKey;
29 + Java_sun_security_ec_SunEC_initialize;
30 + Java_sun_security_ec_SunEC_cleanup;
34 diff -r 9ed0bdd5de2a -r 610eb1b5fd0b src/share/classes/sun/security/ec/SunEC.java
35 --- openjdk/jdk/src/share/classes/sun/security/ec/SunEC.java Fri Dec 05 09:52:04 2014 +0000
36 +++ openjdk/jdk/src/share/classes/sun/security/ec/SunEC.java Tue Dec 09 18:04:39 2014 +0000
38 AccessController.doPrivileged(new PrivilegedAction<Void>() {
40 System.loadLibrary("sunec"); // check for native library
50 + * Cleanup native resources during finalisation.
53 + protected void finalize() {
58 + * Initialize the native code.
60 + private static native void initialize();
63 + * Cleanup in the native layer.
65 + private static native void cleanup();
68 diff -r 9ed0bdd5de2a -r 610eb1b5fd0b src/share/native/sun/security/ec/ECC_JNI.cpp
69 --- openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp Fri Dec 05 09:52:04 2014 +0000
70 +++ openjdk/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp Tue Dec 09 18:04:39 2014 +0000
73 (unsigned char *) env->GetByteArrayElements(encodedParams, 0);
76 - if (SECOID_Init() != SECSuccess) {
77 - ThrowException(env, INTERNAL_ERROR);
82 // Fill a new ECParams using the supplied OID
83 if (EC_DecodeParams(¶ms_item, &ecparams, 0) != SECSuccess) {
86 if (params_item.data) {
87 env->ReleaseByteArrayElements(encodedParams,
88 (jbyte *) params_item.data, JNI_ABORT);
90 - if (SECOID_Shutdown() != SECSuccess) {
91 - ThrowException(env, INTERNAL_ERROR);
99 (unsigned char *) env->GetByteArrayElements(encodedParams, 0);
102 - if (SECOID_Init() != SECSuccess) {
103 - ThrowException(env, INTERNAL_ERROR);
108 // Fill a new ECParams using the supplied OID
109 if (EC_DecodeParams(¶ms_item, &ecparams, 0) != SECSuccess) {
112 if (params_item.data) {
113 env->ReleaseByteArrayElements(encodedParams,
114 (jbyte *) params_item.data, JNI_ABORT);
116 - if (SECOID_Shutdown() != SECSuccess) {
117 - ThrowException(env, INTERNAL_ERROR);
122 if (privKey.privateValue.data) {
125 (unsigned char *) env->GetByteArrayElements(encodedParams, 0);
128 - if (SECOID_Init() != SECSuccess) {
129 - ThrowException(env, INTERNAL_ERROR);
134 // Fill a new ECParams using the supplied OID
135 if (EC_DecodeParams(¶ms_item, &ecparams, 0) != SECSuccess) {
138 if (params_item.data) {
139 env->ReleaseByteArrayElements(encodedParams,
140 (jbyte *) params_item.data, JNI_ABORT);
142 - if (SECOID_Shutdown() != SECSuccess) {
143 - ThrowException(env, INTERNAL_ERROR);
148 if (pubKey.publicValue.data)
151 (unsigned char *) env->GetByteArrayElements(encodedParams, 0);
154 - if (SECOID_Init() != SECSuccess) {
155 - ThrowException(env, INTERNAL_ERROR);
160 // Fill a new ECParams using the supplied OID
161 if (EC_DecodeParams(¶ms_item, &ecparams, 0) != SECSuccess) {
164 if (params_item.data) {
165 env->ReleaseByteArrayElements(encodedParams,
166 (jbyte *) params_item.data, JNI_ABORT);
168 - if (SECOID_Shutdown() != SECSuccess) {
169 - ThrowException(env, INTERNAL_ERROR);
180 +JNICALL Java_sun_security_ec_SunEC_initialize
181 + (JNIEnv *env, jclass UNUSED(clazz))
184 + if (SECOID_Init() != SECSuccess) {
185 + ThrowException(env, INTERNAL_ERROR);
191 +JNICALL Java_sun_security_ec_SunEC_cleanup
192 + (JNIEnv *env, jclass UNUSED(clazz))
195 + if (SECOID_Shutdown() != SECSuccess) {
196 + ThrowException(env, INTERNAL_ERROR);