src/share/native/sun/security/smartcardio/pcsc.c

Print this page




 163                 return NULL;
 164             }
 165             (*env)->SetObjectArrayElement(env, result, cnt, js);
 166             if ((*env)->ExceptionCheck(env)) {
 167                 free(tab);
 168                 return NULL;
 169             }
 170             (*env)->DeleteLocalRef(env, js);
 171         }
 172     }
 173     free(tab);
 174     return result;
 175 }
 176 
 177 JNIEXPORT jobjectArray JNICALL Java_sun_security_smartcardio_PCSC_SCardListReaders
 178     (JNIEnv *env, jclass thisClass, jlong jContext)
 179 {
 180     SCARDCONTEXT context = (SCARDCONTEXT)jContext;
 181     LONG rv;
 182     LPTSTR mszReaders;
 183     DWORD size;
 184     jobjectArray result;
 185 
 186     dprintf1("-context: %x\n", context);
 187     rv = CALL_SCardListReaders(context, NULL, NULL, &size);
 188     if (handleRV(env, rv)) {
 189         return NULL;
 190     }
 191     dprintf1("-size: %d\n", size);
 192 
 193     mszReaders = malloc(size);
 194     if (mszReaders == NULL) {
 195         throwOutOfMemoryError(env, NULL);
 196         return NULL;
 197     }
 198 
 199     rv = CALL_SCardListReaders(context, NULL, mszReaders, &size);
 200     if (handleRV(env, rv)) {
 201         free(mszReaders);
 202         return NULL;
 203     }




 163                 return NULL;
 164             }
 165             (*env)->SetObjectArrayElement(env, result, cnt, js);
 166             if ((*env)->ExceptionCheck(env)) {
 167                 free(tab);
 168                 return NULL;
 169             }
 170             (*env)->DeleteLocalRef(env, js);
 171         }
 172     }
 173     free(tab);
 174     return result;
 175 }
 176 
 177 JNIEXPORT jobjectArray JNICALL Java_sun_security_smartcardio_PCSC_SCardListReaders
 178     (JNIEnv *env, jclass thisClass, jlong jContext)
 179 {
 180     SCARDCONTEXT context = (SCARDCONTEXT)jContext;
 181     LONG rv;
 182     LPTSTR mszReaders;
 183     DWORD size = 0;
 184     jobjectArray result;
 185 
 186     dprintf1("-context: %x\n", context);
 187     rv = CALL_SCardListReaders(context, NULL, NULL, &size);
 188     if (handleRV(env, rv)) {
 189         return NULL;
 190     }
 191     dprintf1("-size: %d\n", size);
 192 
 193     mszReaders = malloc(size);
 194     if (mszReaders == NULL) {
 195         throwOutOfMemoryError(env, NULL);
 196         return NULL;
 197     }
 198 
 199     rv = CALL_SCardListReaders(context, NULL, mszReaders, &size);
 200     if (handleRV(env, rv)) {
 201         free(mszReaders);
 202         return NULL;
 203     }