211 (*env)->DeleteLocalRef(env, jPKCS11ExceptionClass); |
211 (*env)->DeleteLocalRef(env, jPKCS11ExceptionClass); |
212 } |
212 } |
213 return jErrorCode ; |
213 return jErrorCode ; |
214 } |
214 } |
215 |
215 |
216 /* |
216 |
217 * This function simply throws an IOException |
217 /* |
218 * |
218 * Throws a Java Exception by name |
219 * @param env Used to call JNI funktions and to get the Exception class. |
219 */ |
220 * @param message The message string of the Exception object. |
220 void throwByName(JNIEnv *env, const char *name, const char *msg) |
221 */ |
221 { |
222 void throwIOException(JNIEnv *env, const char *message) |
222 jclass cls = (*env)->FindClass(env, name); |
223 { |
223 |
224 JNU_ThrowByName(env, CLASS_IO_EXCEPTION, message); |
224 if (cls != 0) /* Otherwise an exception has already been thrown */ |
|
225 (*env)->ThrowNew(env, cls, msg); |
|
226 } |
|
227 |
|
228 /* |
|
229 * Throws java.lang.OutOfMemoryError |
|
230 */ |
|
231 void throwOutOfMemoryError(JNIEnv *env, const char *msg) |
|
232 { |
|
233 throwByName(env, "java/lang/OutOfMemoryError", msg); |
|
234 } |
|
235 |
|
236 /* |
|
237 * Throws java.lang.NullPointerException |
|
238 */ |
|
239 void throwNullPointerException(JNIEnv *env, const char *msg) |
|
240 { |
|
241 throwByName(env, "java/lang/NullPointerException", msg); |
|
242 } |
|
243 |
|
244 /* |
|
245 * Throws java.io.IOException |
|
246 */ |
|
247 void throwIOException(JNIEnv *env, const char *msg) |
|
248 { |
|
249 throwByName(env, "java/io/IOException", msg); |
225 } |
250 } |
226 |
251 |
227 /* |
252 /* |
228 * This function simply throws a PKCS#11RuntimeException with the given |
253 * This function simply throws a PKCS#11RuntimeException with the given |
229 * string as its message. If the message is NULL, the exception is created |
254 * string as its message. |
230 * using the default constructor. |
|
231 * |
255 * |
232 * @param env Used to call JNI funktions and to get the Exception class. |
256 * @param env Used to call JNI funktions and to get the Exception class. |
233 * @param jmessage The message string of the Exception object. |
257 * @param jmessage The message string of the Exception object. |
234 */ |
258 */ |
235 void throwPKCS11RuntimeException(JNIEnv *env, const char *message) |
259 void throwPKCS11RuntimeException(JNIEnv *env, const char *message) |
236 { |
260 { |
237 JNU_ThrowByName(env, CLASS_PKCS11RUNTIMEEXCEPTION, message); |
261 throwByName(env, CLASS_PKCS11RUNTIMEEXCEPTION, message); |
238 } |
262 } |
239 |
263 |
240 /* |
264 /* |
241 * This function simply throws a PKCS#11RuntimeException. The message says that |
265 * This function simply throws a PKCS#11RuntimeException. The message says that |
242 * the object is not connected to the module. |
266 * the object is not connected to the module. |
316 return; |
340 return; |
317 } |
341 } |
318 *ckpLength = (*env)->GetArrayLength(env, jArray); |
342 *ckpLength = (*env)->GetArrayLength(env, jArray); |
319 jpTemp = (jboolean*) malloc((*ckpLength) * sizeof(jboolean)); |
343 jpTemp = (jboolean*) malloc((*ckpLength) * sizeof(jboolean)); |
320 if (jpTemp == NULL) { |
344 if (jpTemp == NULL) { |
321 JNU_ThrowOutOfMemoryError(env, 0); |
345 throwOutOfMemoryError(env, 0); |
322 return; |
346 return; |
323 } |
347 } |
324 (*env)->GetBooleanArrayRegion(env, jArray, 0, *ckpLength, jpTemp); |
348 (*env)->GetBooleanArrayRegion(env, jArray, 0, *ckpLength, jpTemp); |
325 if ((*env)->ExceptionCheck(env)) { |
349 if ((*env)->ExceptionCheck(env)) { |
326 free(jpTemp); |
350 free(jpTemp); |
328 } |
352 } |
329 |
353 |
330 *ckpArray = (CK_BBOOL*) malloc ((*ckpLength) * sizeof(CK_BBOOL)); |
354 *ckpArray = (CK_BBOOL*) malloc ((*ckpLength) * sizeof(CK_BBOOL)); |
331 if (*ckpArray == NULL) { |
355 if (*ckpArray == NULL) { |
332 free(jpTemp); |
356 free(jpTemp); |
333 JNU_ThrowOutOfMemoryError(env, 0); |
357 throwOutOfMemoryError(env, 0); |
334 return; |
358 return; |
335 } |
359 } |
336 for (i=0; i<(*ckpLength); i++) { |
360 for (i=0; i<(*ckpLength); i++) { |
337 (*ckpArray)[i] = jBooleanToCKBBool(jpTemp[i]); |
361 (*ckpArray)[i] = jBooleanToCKBBool(jpTemp[i]); |
338 } |
362 } |
358 return; |
382 return; |
359 } |
383 } |
360 *ckpLength = (*env)->GetArrayLength(env, jArray); |
384 *ckpLength = (*env)->GetArrayLength(env, jArray); |
361 jpTemp = (jbyte*) malloc((*ckpLength) * sizeof(jbyte)); |
385 jpTemp = (jbyte*) malloc((*ckpLength) * sizeof(jbyte)); |
362 if (jpTemp == NULL) { |
386 if (jpTemp == NULL) { |
363 JNU_ThrowOutOfMemoryError(env, 0); |
387 throwOutOfMemoryError(env, 0); |
364 return; |
388 return; |
365 } |
389 } |
366 (*env)->GetByteArrayRegion(env, jArray, 0, *ckpLength, jpTemp); |
390 (*env)->GetByteArrayRegion(env, jArray, 0, *ckpLength, jpTemp); |
367 if ((*env)->ExceptionCheck(env)) { |
391 if ((*env)->ExceptionCheck(env)) { |
368 free(jpTemp); |
392 free(jpTemp); |
374 *ckpArray = (CK_BYTE_PTR) jpTemp; |
398 *ckpArray = (CK_BYTE_PTR) jpTemp; |
375 } else { |
399 } else { |
376 *ckpArray = (CK_BYTE_PTR) malloc ((*ckpLength) * sizeof(CK_BYTE)); |
400 *ckpArray = (CK_BYTE_PTR) malloc ((*ckpLength) * sizeof(CK_BYTE)); |
377 if (*ckpArray == NULL) { |
401 if (*ckpArray == NULL) { |
378 free(jpTemp); |
402 free(jpTemp); |
379 JNU_ThrowOutOfMemoryError(env, 0); |
403 throwOutOfMemoryError(env, 0); |
380 return; |
404 return; |
381 } |
405 } |
382 for (i=0; i<(*ckpLength); i++) { |
406 for (i=0; i<(*ckpLength); i++) { |
383 (*ckpArray)[i] = jByteToCKByte(jpTemp[i]); |
407 (*ckpArray)[i] = jByteToCKByte(jpTemp[i]); |
384 } |
408 } |
405 return; |
429 return; |
406 } |
430 } |
407 *ckpLength = (*env)->GetArrayLength(env, jArray); |
431 *ckpLength = (*env)->GetArrayLength(env, jArray); |
408 jTemp = (jlong*) malloc((*ckpLength) * sizeof(jlong)); |
432 jTemp = (jlong*) malloc((*ckpLength) * sizeof(jlong)); |
409 if (jTemp == NULL) { |
433 if (jTemp == NULL) { |
410 JNU_ThrowOutOfMemoryError(env, 0); |
434 throwOutOfMemoryError(env, 0); |
411 return; |
435 return; |
412 } |
436 } |
413 (*env)->GetLongArrayRegion(env, jArray, 0, *ckpLength, jTemp); |
437 (*env)->GetLongArrayRegion(env, jArray, 0, *ckpLength, jTemp); |
414 if ((*env)->ExceptionCheck(env)) { |
438 if ((*env)->ExceptionCheck(env)) { |
415 free(jTemp); |
439 free(jTemp); |
417 } |
441 } |
418 |
442 |
419 *ckpArray = (CK_ULONG_PTR) malloc (*ckpLength * sizeof(CK_ULONG)); |
443 *ckpArray = (CK_ULONG_PTR) malloc (*ckpLength * sizeof(CK_ULONG)); |
420 if (*ckpArray == NULL) { |
444 if (*ckpArray == NULL) { |
421 free(jTemp); |
445 free(jTemp); |
422 JNU_ThrowOutOfMemoryError(env, 0); |
446 throwOutOfMemoryError(env, 0); |
423 return; |
447 return; |
424 } |
448 } |
425 for (i=0; i<(*ckpLength); i++) { |
449 for (i=0; i<(*ckpLength); i++) { |
426 (*ckpArray)[i] = jLongToCKULong(jTemp[i]); |
450 (*ckpArray)[i] = jLongToCKULong(jTemp[i]); |
427 } |
451 } |
447 return; |
471 return; |
448 } |
472 } |
449 *ckpLength = (*env)->GetArrayLength(env, jArray); |
473 *ckpLength = (*env)->GetArrayLength(env, jArray); |
450 jpTemp = (jchar*) malloc((*ckpLength) * sizeof(jchar)); |
474 jpTemp = (jchar*) malloc((*ckpLength) * sizeof(jchar)); |
451 if (jpTemp == NULL) { |
475 if (jpTemp == NULL) { |
452 JNU_ThrowOutOfMemoryError(env, 0); |
476 throwOutOfMemoryError(env, 0); |
453 return; |
477 return; |
454 } |
478 } |
455 (*env)->GetCharArrayRegion(env, jArray, 0, *ckpLength, jpTemp); |
479 (*env)->GetCharArrayRegion(env, jArray, 0, *ckpLength, jpTemp); |
456 if ((*env)->ExceptionCheck(env)) { |
480 if ((*env)->ExceptionCheck(env)) { |
457 free(jpTemp); |
481 free(jpTemp); |
459 } |
483 } |
460 |
484 |
461 *ckpArray = (CK_CHAR_PTR) malloc (*ckpLength * sizeof(CK_CHAR)); |
485 *ckpArray = (CK_CHAR_PTR) malloc (*ckpLength * sizeof(CK_CHAR)); |
462 if (*ckpArray == NULL) { |
486 if (*ckpArray == NULL) { |
463 free(jpTemp); |
487 free(jpTemp); |
464 JNU_ThrowOutOfMemoryError(env, 0); |
488 throwOutOfMemoryError(env, 0); |
465 return; |
489 return; |
466 } |
490 } |
467 for (i=0; i<(*ckpLength); i++) { |
491 for (i=0; i<(*ckpLength); i++) { |
468 (*ckpArray)[i] = jCharToCKChar(jpTemp[i]); |
492 (*ckpArray)[i] = jCharToCKChar(jpTemp[i]); |
469 } |
493 } |
489 return; |
513 return; |
490 } |
514 } |
491 *ckpLength = (*env)->GetArrayLength(env, jArray); |
515 *ckpLength = (*env)->GetArrayLength(env, jArray); |
492 jTemp = (jchar*) malloc((*ckpLength) * sizeof(jchar)); |
516 jTemp = (jchar*) malloc((*ckpLength) * sizeof(jchar)); |
493 if (jTemp == NULL) { |
517 if (jTemp == NULL) { |
494 JNU_ThrowOutOfMemoryError(env, 0); |
518 throwOutOfMemoryError(env, 0); |
495 return; |
519 return; |
496 } |
520 } |
497 (*env)->GetCharArrayRegion(env, jArray, 0, *ckpLength, jTemp); |
521 (*env)->GetCharArrayRegion(env, jArray, 0, *ckpLength, jTemp); |
498 if ((*env)->ExceptionCheck(env)) { |
522 if ((*env)->ExceptionCheck(env)) { |
499 free(jTemp); |
523 free(jTemp); |
501 } |
525 } |
502 |
526 |
503 *ckpArray = (CK_UTF8CHAR_PTR) malloc (*ckpLength * sizeof(CK_UTF8CHAR)); |
527 *ckpArray = (CK_UTF8CHAR_PTR) malloc (*ckpLength * sizeof(CK_UTF8CHAR)); |
504 if (*ckpArray == NULL) { |
528 if (*ckpArray == NULL) { |
505 free(jTemp); |
529 free(jTemp); |
506 JNU_ThrowOutOfMemoryError(env, 0); |
530 throwOutOfMemoryError(env, 0); |
507 return; |
531 return; |
508 } |
532 } |
509 for (i=0; i<(*ckpLength); i++) { |
533 for (i=0; i<(*ckpLength); i++) { |
510 (*ckpArray)[i] = jCharToCKUTF8Char(jTemp[i]); |
534 (*ckpArray)[i] = jCharToCKUTF8Char(jTemp[i]); |
511 } |
535 } |
536 |
560 |
537 *ckpLength = strlen(pCharArray); |
561 *ckpLength = strlen(pCharArray); |
538 *ckpArray = (CK_UTF8CHAR_PTR) malloc((*ckpLength + 1) * sizeof(CK_UTF8CHAR)); |
562 *ckpArray = (CK_UTF8CHAR_PTR) malloc((*ckpLength + 1) * sizeof(CK_UTF8CHAR)); |
539 if (*ckpArray == NULL) { |
563 if (*ckpArray == NULL) { |
540 (*env)->ReleaseStringUTFChars(env, (jstring) jArray, pCharArray); |
564 (*env)->ReleaseStringUTFChars(env, (jstring) jArray, pCharArray); |
541 JNU_ThrowOutOfMemoryError(env, 0); |
565 throwOutOfMemoryError(env, 0); |
542 return; |
566 return; |
543 } |
567 } |
544 strcpy((char*)*ckpArray, pCharArray); |
568 strcpy((char*)*ckpArray, pCharArray); |
545 (*env)->ReleaseStringUTFChars(env, (jstring) jArray, pCharArray); |
569 (*env)->ReleaseStringUTFChars(env, (jstring) jArray, pCharArray); |
546 } |
570 } |
569 } |
593 } |
570 jLength = (*env)->GetArrayLength(env, jArray); |
594 jLength = (*env)->GetArrayLength(env, jArray); |
571 *ckpLength = jLongToCKULong(jLength); |
595 *ckpLength = jLongToCKULong(jLength); |
572 *ckpArray = (CK_ATTRIBUTE_PTR) malloc(*ckpLength * sizeof(CK_ATTRIBUTE)); |
596 *ckpArray = (CK_ATTRIBUTE_PTR) malloc(*ckpLength * sizeof(CK_ATTRIBUTE)); |
573 if (*ckpArray == NULL) { |
597 if (*ckpArray == NULL) { |
574 JNU_ThrowOutOfMemoryError(env, 0); |
598 throwOutOfMemoryError(env, 0); |
575 return; |
599 return; |
576 } |
600 } |
577 TRACE1(", converting %d attibutes", jLength); |
601 TRACE1(", converting %d attibutes", jLength); |
578 for (i=0; i<(*ckpLength); i++) { |
602 for (i=0; i<(*ckpLength); i++) { |
579 TRACE1(", getting %d. attibute", i); |
603 TRACE1(", getting %d. attibute", i); |
611 if (sizeof(CK_BYTE) == sizeof(jbyte)) { |
635 if (sizeof(CK_BYTE) == sizeof(jbyte)) { |
612 jpTemp = (jbyte*) ckpArray; |
636 jpTemp = (jbyte*) ckpArray; |
613 } else { |
637 } else { |
614 jpTemp = (jbyte*) malloc((ckLength) * sizeof(jbyte)); |
638 jpTemp = (jbyte*) malloc((ckLength) * sizeof(jbyte)); |
615 if (jpTemp == NULL) { |
639 if (jpTemp == NULL) { |
616 JNU_ThrowOutOfMemoryError(env, 0); |
640 throwOutOfMemoryError(env, 0); |
617 return NULL; |
641 return NULL; |
618 } |
642 } |
619 for (i=0; i<ckLength; i++) { |
643 for (i=0; i<ckLength; i++) { |
620 jpTemp[i] = ckByteToJByte(ckpArray[i]); |
644 jpTemp[i] = ckByteToJByte(ckpArray[i]); |
621 } |
645 } |
645 jlong* jpTemp; |
669 jlong* jpTemp; |
646 jlongArray jArray; |
670 jlongArray jArray; |
647 |
671 |
648 jpTemp = (jlong*) malloc((ckLength) * sizeof(jlong)); |
672 jpTemp = (jlong*) malloc((ckLength) * sizeof(jlong)); |
649 if (jpTemp == NULL) { |
673 if (jpTemp == NULL) { |
650 JNU_ThrowOutOfMemoryError(env, 0); |
674 throwOutOfMemoryError(env, 0); |
651 return NULL; |
675 return NULL; |
652 } |
676 } |
653 for (i=0; i<ckLength; i++) { |
677 for (i=0; i<ckLength; i++) { |
654 jpTemp[i] = ckLongToJLong(ckpArray[i]); |
678 jpTemp[i] = ckLongToJLong(ckpArray[i]); |
655 } |
679 } |
676 jchar* jpTemp; |
700 jchar* jpTemp; |
677 jcharArray jArray; |
701 jcharArray jArray; |
678 |
702 |
679 jpTemp = (jchar*) malloc(ckLength * sizeof(jchar)); |
703 jpTemp = (jchar*) malloc(ckLength * sizeof(jchar)); |
680 if (jpTemp == NULL) { |
704 if (jpTemp == NULL) { |
681 JNU_ThrowOutOfMemoryError(env, 0); |
705 throwOutOfMemoryError(env, 0); |
682 return NULL; |
706 return NULL; |
683 } |
707 } |
684 for (i=0; i<ckLength; i++) { |
708 for (i=0; i<ckLength; i++) { |
685 jpTemp[i] = ckCharToJChar(ckpArray[i]); |
709 jpTemp[i] = ckCharToJChar(ckpArray[i]); |
686 } |
710 } |
707 jchar* jpTemp; |
731 jchar* jpTemp; |
708 jcharArray jArray; |
732 jcharArray jArray; |
709 |
733 |
710 jpTemp = (jchar*) malloc(ckLength * sizeof(jchar)); |
734 jpTemp = (jchar*) malloc(ckLength * sizeof(jchar)); |
711 if (jpTemp == NULL) { |
735 if (jpTemp == NULL) { |
712 JNU_ThrowOutOfMemoryError(env, 0); |
736 throwOutOfMemoryError(env, 0); |
713 return NULL; |
737 return NULL; |
714 } |
738 } |
715 for (i=0; i<ckLength; i++) { |
739 for (i=0; i<ckLength; i++) { |
716 jpTemp[i] = ckUTF8CharToJChar(ckpArray[i]); |
740 jpTemp[i] = ckUTF8CharToJChar(ckpArray[i]); |
717 } |
741 } |
810 jValueMethod = (*env)->GetMethodID(env, jObjectClass, "booleanValue", "()Z"); |
834 jValueMethod = (*env)->GetMethodID(env, jObjectClass, "booleanValue", "()Z"); |
811 if (jValueMethod == NULL) { return NULL; } |
835 if (jValueMethod == NULL) { return NULL; } |
812 jValue = (*env)->CallBooleanMethod(env, jObject, jValueMethod); |
836 jValue = (*env)->CallBooleanMethod(env, jObject, jValueMethod); |
813 ckpValue = (CK_BBOOL *) malloc(sizeof(CK_BBOOL)); |
837 ckpValue = (CK_BBOOL *) malloc(sizeof(CK_BBOOL)); |
814 if (ckpValue == NULL) { |
838 if (ckpValue == NULL) { |
815 JNU_ThrowOutOfMemoryError(env, 0); |
839 throwOutOfMemoryError(env, 0); |
816 return NULL; |
840 return NULL; |
817 } |
841 } |
818 *ckpValue = jBooleanToCKBBool(jValue); |
842 *ckpValue = jBooleanToCKBBool(jValue); |
819 |
843 |
820 return ckpValue ; |
844 return ckpValue ; |
840 jValueMethod = (*env)->GetMethodID(env, jObjectClass, "byteValue", "()B"); |
864 jValueMethod = (*env)->GetMethodID(env, jObjectClass, "byteValue", "()B"); |
841 if (jValueMethod == NULL) { return NULL; } |
865 if (jValueMethod == NULL) { return NULL; } |
842 jValue = (*env)->CallByteMethod(env, jObject, jValueMethod); |
866 jValue = (*env)->CallByteMethod(env, jObject, jValueMethod); |
843 ckpValue = (CK_BYTE_PTR) malloc(sizeof(CK_BYTE)); |
867 ckpValue = (CK_BYTE_PTR) malloc(sizeof(CK_BYTE)); |
844 if (ckpValue == NULL) { |
868 if (ckpValue == NULL) { |
845 JNU_ThrowOutOfMemoryError(env, 0); |
869 throwOutOfMemoryError(env, 0); |
846 return NULL; |
870 return NULL; |
847 } |
871 } |
848 *ckpValue = jByteToCKByte(jValue); |
872 *ckpValue = jByteToCKByte(jValue); |
849 return ckpValue ; |
873 return ckpValue ; |
850 } |
874 } |
869 jValueMethod = (*env)->GetMethodID(env, jObjectClass, "intValue", "()I"); |
893 jValueMethod = (*env)->GetMethodID(env, jObjectClass, "intValue", "()I"); |
870 if (jValueMethod == NULL) { return NULL; } |
894 if (jValueMethod == NULL) { return NULL; } |
871 jValue = (*env)->CallIntMethod(env, jObject, jValueMethod); |
895 jValue = (*env)->CallIntMethod(env, jObject, jValueMethod); |
872 ckpValue = (CK_ULONG *) malloc(sizeof(CK_ULONG)); |
896 ckpValue = (CK_ULONG *) malloc(sizeof(CK_ULONG)); |
873 if (ckpValue == NULL) { |
897 if (ckpValue == NULL) { |
874 JNU_ThrowOutOfMemoryError(env, 0); |
898 throwOutOfMemoryError(env, 0); |
875 return NULL; |
899 return NULL; |
876 } |
900 } |
877 *ckpValue = jLongToCKLong(jValue); |
901 *ckpValue = jLongToCKLong(jValue); |
878 return ckpValue ; |
902 return ckpValue ; |
879 } |
903 } |
898 jValueMethod = (*env)->GetMethodID(env, jObjectClass, "longValue", "()J"); |
922 jValueMethod = (*env)->GetMethodID(env, jObjectClass, "longValue", "()J"); |
899 if (jValueMethod == NULL) { return NULL; } |
923 if (jValueMethod == NULL) { return NULL; } |
900 jValue = (*env)->CallLongMethod(env, jObject, jValueMethod); |
924 jValue = (*env)->CallLongMethod(env, jObject, jValueMethod); |
901 ckpValue = (CK_ULONG *) malloc(sizeof(CK_ULONG)); |
925 ckpValue = (CK_ULONG *) malloc(sizeof(CK_ULONG)); |
902 if (ckpValue == NULL) { |
926 if (ckpValue == NULL) { |
903 JNU_ThrowOutOfMemoryError(env, 0); |
927 throwOutOfMemoryError(env, 0); |
904 return NULL; |
928 return NULL; |
905 } |
929 } |
906 *ckpValue = jLongToCKULong(jValue); |
930 *ckpValue = jLongToCKULong(jValue); |
907 |
931 |
908 return ckpValue ; |
932 return ckpValue ; |
928 jValueMethod = (*env)->GetMethodID(env, jObjectClass, "charValue", "()C"); |
952 jValueMethod = (*env)->GetMethodID(env, jObjectClass, "charValue", "()C"); |
929 if (jValueMethod == NULL) { return NULL; } |
953 if (jValueMethod == NULL) { return NULL; } |
930 jValue = (*env)->CallCharMethod(env, jObject, jValueMethod); |
954 jValue = (*env)->CallCharMethod(env, jObject, jValueMethod); |
931 ckpValue = (CK_CHAR_PTR) malloc(sizeof(CK_CHAR)); |
955 ckpValue = (CK_CHAR_PTR) malloc(sizeof(CK_CHAR)); |
932 if (ckpValue == NULL) { |
956 if (ckpValue == NULL) { |
933 JNU_ThrowOutOfMemoryError(env, 0); |
957 throwOutOfMemoryError(env, 0); |
934 return NULL; |
958 return NULL; |
935 } |
959 } |
936 *ckpValue = jCharToCKChar(jValue); |
960 *ckpValue = jCharToCKChar(jValue); |
937 |
961 |
938 return ckpValue ; |
962 return ckpValue ; |
1085 exceptionMsgPrefix = "Java object of this class cannot be converted to native PKCS#11 type: "; |
1109 exceptionMsgPrefix = "Java object of this class cannot be converted to native PKCS#11 type: "; |
1086 exceptionMsg = (char *) |
1110 exceptionMsg = (char *) |
1087 malloc((strlen(exceptionMsgPrefix) + strlen(classNameString) + 1)); |
1111 malloc((strlen(exceptionMsgPrefix) + strlen(classNameString) + 1)); |
1088 if (exceptionMsg == NULL) { |
1112 if (exceptionMsg == NULL) { |
1089 (*env)->ReleaseStringUTFChars(env, jClassNameString, classNameString); |
1113 (*env)->ReleaseStringUTFChars(env, jClassNameString, classNameString); |
1090 JNU_ThrowOutOfMemoryError(env, 0); |
1114 throwOutOfMemoryError(env, 0); |
1091 return; |
1115 return; |
1092 } |
1116 } |
1093 strcpy(exceptionMsg, exceptionMsgPrefix); |
1117 strcpy(exceptionMsg, exceptionMsgPrefix); |
1094 strcat(exceptionMsg, classNameString); |
1118 strcat(exceptionMsg, classNameString); |
1095 (*env)->ReleaseStringUTFChars(env, jClassNameString, classNameString); |
1119 (*env)->ReleaseStringUTFChars(env, jClassNameString, classNameString); |