From df798627b95e6e5312f6a6eac937c88be6c2299d Mon Sep 17 00:00:00 2001 From: esdeathlove Date: Mon, 31 Jul 2017 19:49:04 +0800 Subject: [PATCH] Fix memory leak(2) --- shadowsocks/crypto/aead.py | 3 --- shadowsocks/crypto/openssl.py | 6 ++++++ shadowsocks/crypto/sodium.py | 6 ++++++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/shadowsocks/crypto/aead.py b/shadowsocks/crypto/aead.py index 7c52843..c7240b3 100644 --- a/shadowsocks/crypto/aead.py +++ b/shadowsocks/crypto/aead.py @@ -155,9 +155,6 @@ class AeadCryptoBase(object): # n, n > 0, waiting data self._chunk = {'mlen': AEAD_MSG_LEN_UNKNOWN, 'data': b''} - self.encrypt_once = self.aead_encrypt - self.decrypt_once = self.aead_decrypt - # load libsodium for nonce increment if not sodium_loaded: crypto_path = dict(crypto_path) if crypto_path else dict() diff --git a/shadowsocks/crypto/openssl.py b/shadowsocks/crypto/openssl.py index 6abeaa6..c9245d5 100644 --- a/shadowsocks/crypto/openssl.py +++ b/shadowsocks/crypto/openssl.py @@ -270,6 +270,12 @@ class OpenSSLAeadCrypto(OpenSSLCryptoBase, AeadCryptoBase): self.cipher_ctx_init() return plaintext + def encrypt_once(self, data): + return self.aead_encrypt(data) + + def decrypt_once(self, data): + return self.aead_decrypt(data) + class OpenSSLStreamCrypto(OpenSSLCryptoBase): """ diff --git a/shadowsocks/crypto/sodium.py b/shadowsocks/crypto/sodium.py index 35927e8..981321e 100644 --- a/shadowsocks/crypto/sodium.py +++ b/shadowsocks/crypto/sodium.py @@ -308,6 +308,12 @@ class SodiumAeadCrypto(AeadCryptoBase): self.cipher_ctx_init() return buf.raw[:cipher_out_len.value] + def encrypt_once(self, data): + return self.aead_encrypt(data) + + def decrypt_once(self, data): + return self.aead_decrypt(data) + ciphers = { 'salsa20': (32, 8, SodiumCrypto),