Skip to content

Commit 0ab4732

Browse files
committed
Fix memory leak
Signed-off-by: xybei <xybei@outlook.com>
1 parent a662f82 commit 0ab4732

2 files changed

Lines changed: 8 additions & 8 deletions

File tree

src/main/c/KeyEncapsulation.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,8 @@ JNIEXPORT jint JNICALL Java_org_openquantumsafe_KeyEncapsulation_generate_1keypa
105105
// Invoke liboqs KEM keypair generation function
106106
OQS_STATUS rv_ = OQS_KEM_keypair(kem, (uint8_t*) public_key_native, (uint8_t*) secret_key_native);
107107

108-
(*env)->ReleaseByteArrayElements(env, jpublic_key, public_key_native, JNI_COMMIT);
109-
(*env)->ReleaseByteArrayElements(env, jsecret_key, secret_key_native, JNI_COMMIT);
108+
(*env)->ReleaseByteArrayElements(env, jpublic_key, public_key_native, 0);
109+
(*env)->ReleaseByteArrayElements(env, jsecret_key, secret_key_native, 0);
110110
return (rv_ == OQS_SUCCESS) ? 0 : -1;
111111
}
112112

@@ -129,8 +129,8 @@ JNIEXPORT jint JNICALL Java_org_openquantumsafe_KeyEncapsulation_encap_1secret
129129

130130
// Release C public_key
131131
(*env)->ReleaseByteArrayElements(env, jpublic_key, public_key, JNI_ABORT);
132-
(*env)->ReleaseByteArrayElements(env, jciphertext, ciphertext, JNI_COMMIT);
133-
(*env)->ReleaseByteArrayElements(env, jshared_secret, shared_secret, JNI_COMMIT);
132+
(*env)->ReleaseByteArrayElements(env, jciphertext, ciphertext, 0);
133+
(*env)->ReleaseByteArrayElements(env, jshared_secret, shared_secret, 0);
134134
return (rv_ == OQS_SUCCESS) ? 0 : -1;
135135
}
136136

@@ -150,7 +150,7 @@ JNIEXPORT jint JNICALL Java_org_openquantumsafe_KeyEncapsulation_decap_1secret
150150
OQS_STATUS rv_ = OQS_KEM_decaps(kem, (uint8_t*) shared_secret_native, (uint8_t*) ciphertext_native, (uint8_t*) secret_key_native);
151151

152152
// release memory
153-
(*env)->ReleaseByteArrayElements(env, jshared_secret, shared_secret_native, JNI_COMMIT);
153+
(*env)->ReleaseByteArrayElements(env, jshared_secret, shared_secret_native, 0);
154154
(*env)->ReleaseByteArrayElements(env, jciphertext, ciphertext_native, JNI_ABORT);
155155
(*env)->ReleaseByteArrayElements(env, jsecret_key, secret_key_native, JNI_ABORT);
156156
return (rv_ == OQS_SUCCESS) ? 0 : -1;

src/main/c/Signature.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,8 @@ JNIEXPORT jint JNICALL Java_org_openquantumsafe_Signature_generate_1keypair
101101
// Invoke liboqs sig keypair generation function
102102
OQS_STATUS rv_ = OQS_SIG_keypair(sig, (uint8_t*) public_key_native, (uint8_t*) secret_key_native);
103103

104-
(*env)->ReleaseByteArrayElements(env, jpublic_key, public_key_native, JNI_COMMIT);
105-
(*env)->ReleaseByteArrayElements(env, jsecret_key, secret_key_native, JNI_COMMIT);
104+
(*env)->ReleaseByteArrayElements(env, jpublic_key, public_key_native, 0);
105+
(*env)->ReleaseByteArrayElements(env, jsecret_key, secret_key_native, 0);
106106
return (rv_ == OQS_SUCCESS) ? 0 : -1;
107107
}
108108

@@ -140,7 +140,7 @@ JNIEXPORT jint JNICALL Java_org_openquantumsafe_Signature_sign
140140
(*env)->SetObjectField(env, sig_len_obj, value_fid, jlong_obj);
141141

142142
// Release C memory
143-
(*env)->ReleaseByteArrayElements(env, jsignature, signature_native, JNI_COMMIT);
143+
(*env)->ReleaseByteArrayElements(env, jsignature, signature_native, 0);
144144
(*env)->ReleaseByteArrayElements(env, jmessage, message_native, JNI_ABORT);
145145
(*env)->ReleaseByteArrayElements(env, jsecret_key, secret_key_native, JNI_ABORT);
146146

0 commit comments

Comments
 (0)