1
0
mirror of https://github.com/fumiama/android-base16384.git synced 2026-06-05 02:00:30 +08:00
Files
android-base16384/app/src/main/cpp/base14/base16384.cpp
fumiama 06e85077c3 v3.2
1. 修复指针越界
2. 修复整数溢出
3. 修复内存泄漏
2021-10-29 00:22:29 +08:00

37 lines
1.4 KiB
C++

#include <jni.h>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include "base16384.hpp"
#define execute(function){\
const char *inputFileDir = env->GetStringUTFChars(sf, JNI_FALSE);\
const char *outputFileDir = env->GetStringUTFChars(df, JNI_FALSE);\
int re = function(inputFileDir, outputFileDir);\
env->ReleaseStringUTFChars(sf, inputFileDir);\
env->ReleaseStringUTFChars(df, outputFileDir);\
return re;\
}
#define exe_byte(fun) {\
jsize len = env->GetArrayLength(buf);\
const uint8_t* data = (uint8_t*)env->GetByteArrayElements(buf, JNI_FALSE);\
LENDAT* ld = fun(data, len);\
jbyteArray out = env->NewByteArray(ld->len);\
env->SetByteArrayRegion(out, 0, ld->len, reinterpret_cast<const jbyte *>(ld->data));\
free(ld->data);\
free(ld);\
return out;\
}
extern "C" JNIEXPORT int JNICALL
Java_top_fumiama_base16384_MainActivity_encode(JNIEnv* env, jobject, jstring sf, jstring df) execute(encode_file)
extern "C" JNIEXPORT int JNICALL
Java_top_fumiama_base16384_MainActivity_decode(JNIEnv* env, jobject, jstring sf, jstring df) execute(decode_file)
extern "C" JNIEXPORT jbyteArray JNICALL
Java_top_fumiama_base16384_MainActivity_encodeByteArray(JNIEnv* env, jobject, jbyteArray buf) exe_byte(encode)
extern "C" JNIEXPORT jbyteArray JNICALL
Java_top_fumiama_base16384_MainActivity_decodeByteArray(JNIEnv* env, jobject, jbyteArray buf) exe_byte(decode)