summaryrefslogtreecommitdiffstats
path: root/openssl/src/main/native/BNInterface.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'openssl/src/main/native/BNInterface.cpp')
-rw-r--r--openssl/src/main/native/BNInterface.cpp23
1 files changed, 10 insertions, 13 deletions
diff --git a/openssl/src/main/native/BNInterface.cpp b/openssl/src/main/native/BNInterface.cpp
index a40192c..ea93895 100644
--- a/openssl/src/main/native/BNInterface.cpp
+++ b/openssl/src/main/native/BNInterface.cpp
@@ -20,6 +20,7 @@
#include "JNIHelp.h"
#include "ScopedPrimitiveArray.h"
+#include "ScopedUtfChars.h"
#include "jni.h"
#include <assert.h>
#include <openssl/bn.h>
@@ -150,27 +151,23 @@ static jboolean NativeBN_putLongInt(JNIEnv* env, jclass cls, BIGNUM* a, long lon
*/
static int NativeBN_BN_dec2bn(JNIEnv* env, jclass, BIGNUM* a, jstring str) {
if (!oneValidHandle(env, a)) return -1;
- char* tmpStr = (char*)env->GetStringUTFChars(str, NULL);
- if (tmpStr != NULL) {
- int len = BN_dec2bn(&a, tmpStr);
- env->ReleaseStringUTFChars(str, tmpStr);
- return len; // len == 0: Error
+ ScopedUtfChars chars(env, str);
+ if (chars.c_str() == NULL) {
+ return -1;
}
- else return -1; // Error outside BN.
+ return BN_dec2bn(&a, chars.c_str());
}
/**
* public static native int BN_hex2bn(int, java.lang.String)
*/
static int NativeBN_BN_hex2bn(JNIEnv* env, jclass, BIGNUM* a, jstring str) {
- if (!oneValidHandle(env, a)) return -1;
- char* tmpStr = (char*)env->GetStringUTFChars(str, NULL);
- if (tmpStr != NULL) {
- int len = BN_hex2bn(&a, tmpStr);
- env->ReleaseStringUTFChars(str, tmpStr);
- return len; // len == 0: Error
+ if (!oneValidHandle(env, a)) return -1;
+ ScopedUtfChars chars(env, str);
+ if (chars.c_str() == NULL) {
+ return -1;
}
- else return -1; // Error outside BN.
+ return BN_hex2bn(&a, chars.c_str());
}
/**