aboutsummaryrefslogtreecommitdiff
path: root/src/cz/crcs/ectester/standalone/libs/jni/c_utils.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cz/crcs/ectester/standalone/libs/jni/c_utils.c')
-rw-r--r--src/cz/crcs/ectester/standalone/libs/jni/c_utils.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/cz/crcs/ectester/standalone/libs/jni/c_utils.c b/src/cz/crcs/ectester/standalone/libs/jni/c_utils.c
index c36d3c9..81d1fb8 100644
--- a/src/cz/crcs/ectester/standalone/libs/jni/c_utils.c
+++ b/src/cz/crcs/ectester/standalone/libs/jni/c_utils.c
@@ -198,10 +198,16 @@ bool asn1_der_decode(JNIEnv *env, jbyteArray sig, jbyte **r_data, size_t *r_len,
memcpy(s_out, data + i, s_length);
i += s_length;
+ (*env)->ReleaseByteArrayElements(env, sig, data, JNI_ABORT);
+ if (i != sig_len) {
+ free(r_out);
+ free(s_out);
+ return false;
+ }
+
*r_len = r_length;
*r_data = r_out;
*s_len = s_length;
*s_data = s_out;
- (*env)->ReleaseByteArrayElements(env, sig, data, JNI_ABORT);
return true;
} \ No newline at end of file