aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorigerasim <none@none>2014-05-31 00:58:28 +0400
committerigerasim <none@none>2014-05-31 00:58:28 +0400
commit595cea5f05c70f847503304bbfa848591d574ee6 (patch)
tree12ffd568703321a17d294f664c4fee8739591bc6
parent26e2b29142fadee8c6b221b4e5e8aa001a210a1d (diff)
8033571: [parfait] warning from b128 for security/smartcardio/pcsc_md.c: JNI exception pending
Summary: Fix pending exception errors found by parfait. Reviewed-by: xuelei, ascarpino
-rw-r--r--src/solaris/native/sun/security/smartcardio/pcsc_md.c33
1 files changed, 32 insertions, 1 deletions
diff --git a/src/solaris/native/sun/security/smartcardio/pcsc_md.c b/src/solaris/native/sun/security/smartcardio/pcsc_md.c
index 3ba2e9387..f344f4a00 100644
--- a/src/solaris/native/sun/security/smartcardio/pcsc_md.c
+++ b/src/solaris/native/sun/security/smartcardio/pcsc_md.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -89,6 +89,10 @@ void *findFunction(JNIEnv *env, void *hModule, char *functionName) {
JNIEXPORT void JNICALL Java_sun_security_smartcardio_PlatformPCSC_initialize
(JNIEnv *env, jclass thisClass, jstring jLibName) {
const char *libName = (*env)->GetStringUTFChars(env, jLibName, NULL);
+ if (libName == NULL) {
+ throwNullPointerException(env, "PCSC library name is null");
+ return;
+ }
hModule = dlopen(libName, RTLD_LAZY);
(*env)->ReleaseStringUTFChars(env, jLibName, libName);
@@ -97,14 +101,41 @@ JNIEXPORT void JNICALL Java_sun_security_smartcardio_PlatformPCSC_initialize
return;
}
scardEstablishContext = (FPTR_SCardEstablishContext)findFunction(env, hModule, "SCardEstablishContext");
+ if ((*env)->ExceptionCheck(env)) {
+ return;
+ }
scardConnect = (FPTR_SCardConnect) findFunction(env, hModule, "SCardConnect");
+ if ((*env)->ExceptionCheck(env)) {
+ return;
+ }
scardDisconnect = (FPTR_SCardDisconnect) findFunction(env, hModule, "SCardDisconnect");
+ if ((*env)->ExceptionCheck(env)) {
+ return;
+ }
scardStatus = (FPTR_SCardStatus) findFunction(env, hModule, "SCardStatus");
+ if ((*env)->ExceptionCheck(env)) {
+ return;
+ }
scardGetStatusChange = (FPTR_SCardGetStatusChange) findFunction(env, hModule, "SCardGetStatusChange");
+ if ((*env)->ExceptionCheck(env)) {
+ return;
+ }
scardTransmit = (FPTR_SCardTransmit) findFunction(env, hModule, "SCardTransmit");
+ if ((*env)->ExceptionCheck(env)) {
+ return;
+ }
scardListReaders = (FPTR_SCardListReaders) findFunction(env, hModule, "SCardListReaders");
+ if ((*env)->ExceptionCheck(env)) {
+ return;
+ }
scardBeginTransaction = (FPTR_SCardBeginTransaction)findFunction(env, hModule, "SCardBeginTransaction");
+ if ((*env)->ExceptionCheck(env)) {
+ return;
+ }
scardEndTransaction = (FPTR_SCardEndTransaction) findFunction(env, hModule, "SCardEndTransaction");
+ if ((*env)->ExceptionCheck(env)) {
+ return;
+ }
#ifndef __APPLE__
scardControl = (FPTR_SCardControl) findFunction(env, hModule, "SCardControl");
#else