diff --git a/assets/shadowsocks b/assets/shadowsocks index 6c5b63ea..4a06e40d 100755 Binary files a/assets/shadowsocks and b/assets/shadowsocks differ diff --git a/jni/Android.mk b/jni/Android.mk index 2e834537..132540ee 100755 --- a/jni/Android.mk +++ b/jni/Android.mk @@ -17,7 +17,7 @@ LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := libev -LOCAL_CFLAGS += -O2 -DEV_MULTIPLICITY +LOCAL_CFLAGS += -O2 -DNDEBUG -DHAVE_CONFIG_H LOCAL_SRC_FILES := \ libev/ev.c \ libev/event.c diff --git a/jni/shadowsocks/encrypt.c b/jni/shadowsocks/encrypt.c index c104a95a..6ee0b4a4 100755 --- a/jni/shadowsocks/encrypt.c +++ b/jni/shadowsocks/encrypt.c @@ -114,9 +114,10 @@ static void mergesort(uint8_t array[], int length) void encrypt(char *buf, int len, EVP_CIPHER_CTX *ctx) { if (ctx != NULL) { int outlen; - unsigned char mybuf[BUF_SIZE]; + unsigned char *mybuf = malloc(BUF_SIZE); EVP_CipherUpdate(ctx, mybuf, &outlen, (unsigned char*)buf, len); memcpy(buf, mybuf, len); + free(mybuf); } else { char *end = buf + len; while (buf < end) { @@ -129,9 +130,10 @@ void encrypt(char *buf, int len, EVP_CIPHER_CTX *ctx) { void decrypt(char *buf, int len, EVP_CIPHER_CTX *ctx) { if (ctx != NULL) { int outlen; - unsigned char mybuf[BUF_SIZE]; + unsigned char *mybuf = malloc(BUF_SIZE); EVP_CipherUpdate(ctx, mybuf, &outlen, (unsigned char*) buf, len); memcpy(buf, mybuf, len); + free(mybuf); } else { char *end = buf + len; while (buf < end) { diff --git a/libs/armeabi/shadowsocks b/libs/armeabi/shadowsocks index 6c5b63ea..4a06e40d 100755 Binary files a/libs/armeabi/shadowsocks and b/libs/armeabi/shadowsocks differ