1
1
/*
2
- * Copyright (c) 2003, 2020 , Oracle and/or its affiliates. All rights reserved.
2
+ * Copyright (c) 2003, 2023 , Oracle and/or its affiliates. All rights reserved.
3
3
*/
4
4
5
5
/* Copyright (c) 2002 Graz University of Technology. All rights reserved.
@@ -155,7 +155,10 @@ Java_sun_security_pkcs11_wrapper_PKCS11_C_1Encrypt
155
155
} else {
156
156
outBufP = (* env )-> GetPrimitiveArrayCritical (env , jOut , NULL );
157
157
if (outBufP == NULL ) {
158
- goto cleanup ;
158
+ if (directIn == 0 ) {
159
+ (* env )-> ReleasePrimitiveArrayCritical (env , jIn , inBufP , JNI_ABORT );
160
+ }
161
+ return 0 ;
159
162
}
160
163
}
161
164
@@ -166,15 +169,13 @@ Java_sun_security_pkcs11_wrapper_PKCS11_C_1Encrypt
166
169
(CK_BYTE_PTR )(outBufP + jOutOfs ),
167
170
& ckEncryptedLen );
168
171
169
- ckAssertReturnValueOK (env , rv );
170
-
171
- cleanup :
172
- if (directIn == 0 && inBufP != NULL ) {
172
+ if (directIn == 0 ) {
173
173
(* env )-> ReleasePrimitiveArrayCritical (env , jIn , inBufP , JNI_ABORT );
174
174
}
175
- if (directOut == 0 && outBufP != NULL ) {
175
+ if (directOut == 0 ) {
176
176
(* env )-> ReleasePrimitiveArrayCritical (env , jOut , outBufP , 0 );
177
177
}
178
+ ckAssertReturnValueOK (env , rv );
178
179
return ckEncryptedLen ;
179
180
}
180
181
#endif
@@ -221,7 +222,10 @@ Java_sun_security_pkcs11_wrapper_PKCS11_C_1EncryptUpdate
221
222
} else {
222
223
outBufP = (* env )-> GetPrimitiveArrayCritical (env , jOut , NULL );
223
224
if (outBufP == NULL ) {
224
- goto cleanup ;
225
+ if (directIn == 0 ) {
226
+ (* env )-> ReleasePrimitiveArrayCritical (env , jIn , inBufP , JNI_ABORT );
227
+ }
228
+ return 0 ;
225
229
}
226
230
}
227
231
@@ -232,15 +236,13 @@ Java_sun_security_pkcs11_wrapper_PKCS11_C_1EncryptUpdate
232
236
(CK_BYTE_PTR )(outBufP + jOutOfs ),
233
237
& ckEncryptedPartLen );
234
238
235
- ckAssertReturnValueOK (env , rv );
236
-
237
- cleanup :
238
- if (directIn == 0 && inBufP != NULL ) {
239
+ if (directIn == 0 ) {
239
240
(* env )-> ReleasePrimitiveArrayCritical (env , jIn , inBufP , JNI_ABORT );
240
241
}
241
- if (directOut == 0 && outBufP != NULL ) {
242
+ if (directOut == 0 ) {
242
243
(* env )-> ReleasePrimitiveArrayCritical (env , jOut , outBufP , 0 );
243
244
}
245
+ ckAssertReturnValueOK (env , rv );
244
246
return ckEncryptedPartLen ;
245
247
}
246
248
#endif
@@ -391,7 +393,10 @@ Java_sun_security_pkcs11_wrapper_PKCS11_C_1Decrypt
391
393
} else {
392
394
outBufP = (* env )-> GetPrimitiveArrayCritical (env , jOut , NULL );
393
395
if (outBufP == NULL ) {
394
- goto cleanup ;
396
+ if (directIn == 0 ) {
397
+ (* env )-> ReleasePrimitiveArrayCritical (env , jIn , inBufP , JNI_ABORT );
398
+ }
399
+ return 0 ;
395
400
}
396
401
}
397
402
ckOutLen = jOutLen ;
@@ -401,15 +406,13 @@ Java_sun_security_pkcs11_wrapper_PKCS11_C_1Decrypt
401
406
(CK_BYTE_PTR )(outBufP + jOutOfs ),
402
407
& ckOutLen );
403
408
404
- ckAssertReturnValueOK (env , rv );
405
-
406
- cleanup :
407
- if (directIn == 0 && inBufP != NULL ) {
409
+ if (directIn == 0 ) {
408
410
(* env )-> ReleasePrimitiveArrayCritical (env , jIn , inBufP , JNI_ABORT );
409
411
}
410
- if (directOut == 0 && outBufP != NULL ) {
412
+ if (directOut == 0 ) {
411
413
(* env )-> ReleasePrimitiveArrayCritical (env , jOut , outBufP , 0 );
412
414
}
415
+ ckAssertReturnValueOK (env , rv );
413
416
return ckOutLen ;
414
417
}
415
418
#endif
@@ -456,7 +459,10 @@ Java_sun_security_pkcs11_wrapper_PKCS11_C_1DecryptUpdate
456
459
} else {
457
460
outBufP = (* env )-> GetPrimitiveArrayCritical (env , jOut , NULL );
458
461
if (outBufP == NULL ) {
459
- goto cleanup ;
462
+ if (directIn == 0 ) {
463
+ (* env )-> ReleasePrimitiveArrayCritical (env , jIn , inBufP , JNI_ABORT );
464
+ }
465
+ return 0 ;
460
466
}
461
467
}
462
468
@@ -465,15 +471,14 @@ Java_sun_security_pkcs11_wrapper_PKCS11_C_1DecryptUpdate
465
471
(CK_BYTE_PTR )(inBufP + jInOfs ), jInLen ,
466
472
(CK_BYTE_PTR )(outBufP + jOutOfs ),
467
473
& ckDecryptedPartLen );
468
- ckAssertReturnValueOK (env , rv );
469
474
470
- cleanup :
471
- if (directIn == 0 && inBufP != NULL ) {
475
+ if (directIn == 0 ) {
472
476
(* env )-> ReleasePrimitiveArrayCritical (env , jIn , inBufP , JNI_ABORT );
473
477
}
474
- if (directOut == 0 && outBufP != NULL ) {
478
+ if (directOut == 0 ) {
475
479
(* env )-> ReleasePrimitiveArrayCritical (env , jOut , outBufP , 0 );
476
480
}
481
+ ckAssertReturnValueOK (env , rv );
477
482
return ckDecryptedPartLen ;
478
483
}
479
484
0 commit comments