From 1297af77fc3c3e82a2e0906686a9bea49aa757c1 Mon Sep 17 00:00:00 2001 From: clowwindy Date: Sun, 9 Nov 2014 23:59:53 +0800 Subject: [PATCH] check disposed in encryption #46 #42 --- .../Encrypt/PolarSSLEncryptor.cs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/shadowsocks-csharp/Encrypt/PolarSSLEncryptor.cs b/shadowsocks-csharp/Encrypt/PolarSSLEncryptor.cs index 3b00c6cb..68293a8a 100755 --- a/shadowsocks-csharp/Encrypt/PolarSSLEncryptor.cs +++ b/shadowsocks-csharp/Encrypt/PolarSSLEncryptor.cs @@ -175,6 +175,10 @@ namespace Shadowsocks.Encrypt // C# could be multi-threaded lock (_encryptCtx) { + if (_disposed) + { + throw new ObjectDisposedException(this.ToString()); + } switch (_cipher) { case CIPHER_AES: @@ -197,6 +201,10 @@ namespace Shadowsocks.Encrypt outlength = length; lock (_encryptCtx) { + if (_disposed) + { + throw new ObjectDisposedException(this.ToString()); + } switch (_cipher) { case CIPHER_AES: @@ -225,6 +233,10 @@ namespace Shadowsocks.Encrypt Buffer.BlockCopy(buf, ivLen, tempbuf, 0, length - ivLen); lock (_decryptCtx) { + if (_disposed) + { + throw new ObjectDisposedException(this.ToString()); + } switch (_cipher) { case CIPHER_AES: @@ -245,6 +257,10 @@ namespace Shadowsocks.Encrypt outlength = length; lock (_decryptCtx) { + if (_disposed) + { + throw new ObjectDisposedException(this.ToString()); + } switch (_cipher) { case CIPHER_AES: @@ -304,7 +320,6 @@ namespace Shadowsocks.Encrypt PolarSSL.arc4_free(_encryptCtx); break; } - _encryptCtx = null; } } if (_decryptCtx != null) @@ -323,7 +338,6 @@ namespace Shadowsocks.Encrypt PolarSSL.arc4_free(_decryptCtx); break; } - _decryptCtx = null; } } }