diff options
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.c | 8 |
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 |
