diff --git a/Lidgren.Network/Encryption/NetAESEncryption.cs b/Lidgren.Network/Encryption/NetAESEncryption.cs index 2938414..487a903 100644 --- a/Lidgren.Network/Encryption/NetAESEncryption.cs +++ b/Lidgren.Network/Encryption/NetAESEncryption.cs @@ -14,8 +14,8 @@ namespace Lidgren.Network private readonly byte[] m_key; private readonly byte[] m_iv; private readonly int m_bitSize; - private static readonly List m_keysizes; - private static readonly List m_blocksizes; + private static readonly List s_keysizes; + private static readonly List s_blocksizes; static NetAESEncryption() { @@ -32,7 +32,7 @@ namespace Lidgren.Network break; } } - m_keysizes = temp; + s_keysizes = temp; temp = new List(); foreach (KeySizes keysize in aes.LegalBlockSizes) { @@ -45,7 +45,7 @@ namespace Lidgren.Network break; } } - m_blocksizes = temp; + s_blocksizes = temp; #endif } @@ -54,11 +54,11 @@ namespace Lidgren.Network /// public NetAESEncryption(byte[] key, byte[] iv) { - if (!m_keysizes.Contains(key.Length * 8)) - throw new NetException(string.Format("Not a valid key size. (Valid values are: {0})", NetUtility.MakeCommaDelimitedList(m_keysizes))); + if (!s_keysizes.Contains(key.Length * 8)) + throw new NetException(string.Format("Not a valid key size. (Valid values are: {0})", NetUtility.MakeCommaDelimitedList(s_keysizes))); - if (!m_blocksizes.Contains(iv.Length * 8)) - throw new NetException(string.Format("Not a valid iv size. (Valid values are: {0})", NetUtility.MakeCommaDelimitedList(m_blocksizes))); + if (!s_blocksizes.Contains(iv.Length * 8)) + throw new NetException(string.Format("Not a valid iv size. (Valid values are: {0})", NetUtility.MakeCommaDelimitedList(s_blocksizes))); m_key = key; m_iv = iv; @@ -70,8 +70,8 @@ namespace Lidgren.Network /// public NetAESEncryption(string key, int bitsize) { - if (!m_keysizes.Contains(bitsize)) - throw new NetException(string.Format("Not a valid key size. (Valid values are: {0})", NetUtility.MakeCommaDelimitedList(m_keysizes))); + if (!s_keysizes.Contains(bitsize)) + throw new NetException(string.Format("Not a valid key size. (Valid values are: {0})", NetUtility.MakeCommaDelimitedList(s_keysizes))); byte[] entropy = Encoding.UTF32.GetBytes(key); // I know hardcoding salts is bad, but in this case I think it is acceptable. @@ -84,7 +84,7 @@ namespace Lidgren.Network int keylen = bitsize / 8; m_key = new byte[keylen]; Buffer.BlockCopy(entropy, 0, m_key, 0, keylen); - m_iv = new byte[m_blocksizes[0] / 8]; + m_iv = new byte[s_blocksizes[0] / 8]; Buffer.BlockCopy(entropy, entropy.Length - m_iv.Length - 1, m_iv, 0, m_iv.Length); m_bitSize = bitsize; @@ -94,7 +94,7 @@ namespace Lidgren.Network /// NetAESEncryption constructor /// public NetAESEncryption(string key) - : this(key, m_keysizes[0]) + : this(key, s_keysizes[0]) { } @@ -111,12 +111,11 @@ namespace Lidgren.Network { using (ICryptoTransform cryptoTransform = aesCryptoServiceProvider.CreateEncryptor(m_key, m_iv)) { - using (MemoryStream memoryStream = new MemoryStream()) + var memoryStream = new MemoryStream(); + using (CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoTransform, CryptoStreamMode.Write)) { - using (CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoTransform, CryptoStreamMode.Write)) - { - cryptoStream.Write(msg.m_data, 0, msg.m_data.Length); - } + cryptoStream.Write(msg.m_data, 0, msg.m_data.Length); + cryptoStream.Close(); msg.m_data = memoryStream.ToArray(); } } @@ -146,13 +145,11 @@ namespace Lidgren.Network { using (ICryptoTransform cryptoTransform = aesCryptoServiceProvider.CreateDecryptor(m_key, m_iv)) { - using (MemoryStream memoryStream = new MemoryStream()) + var memoryStream = new MemoryStream(); + using (CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoTransform, CryptoStreamMode.Write)) { - using (CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoTransform, - CryptoStreamMode.Write)) - { - cryptoStream.Write(msg.m_data, 0, msg.m_data.Length); - } + cryptoStream.Write(msg.m_data, 0, msg.m_data.Length); + cryptoStream.Close(); msg.m_data = memoryStream.ToArray(); } } diff --git a/Lidgren.Network/Encryption/NetDESEncryption.cs b/Lidgren.Network/Encryption/NetDESEncryption.cs index 4e9ef09..58f5e1f 100644 --- a/Lidgren.Network/Encryption/NetDESEncryption.cs +++ b/Lidgren.Network/Encryption/NetDESEncryption.cs @@ -14,8 +14,8 @@ namespace Lidgren.Network private readonly byte[] m_key; private readonly byte[] m_iv; private readonly int m_bitSize; - private static readonly List m_keysizes; - private static readonly List m_blocksizes; + private static readonly List s_keysizes; + private static readonly List s_blocksizes; static NetDESEncryption() { @@ -32,7 +32,7 @@ namespace Lidgren.Network break; } } - m_keysizes = temp; + s_keysizes = temp; temp = new List(); foreach (KeySizes keysize in des.LegalBlockSizes) { @@ -45,7 +45,7 @@ namespace Lidgren.Network break; } } - m_blocksizes = temp; + s_blocksizes = temp; } /// @@ -53,11 +53,11 @@ namespace Lidgren.Network /// public NetDESEncryption(byte[] key, byte[] iv) { - if (!m_keysizes.Contains(key.Length * 8)) - throw new NetException(string.Format("Not a valid key size. (Valid values are: {0})", NetUtility.MakeCommaDelimitedList(m_keysizes))); + if (!s_keysizes.Contains(key.Length * 8)) + throw new NetException(string.Format("Not a valid key size. (Valid values are: {0})", NetUtility.MakeCommaDelimitedList(s_keysizes))); - if (!m_blocksizes.Contains(iv.Length * 8)) - throw new NetException(string.Format("Not a valid iv size. (Valid values are: {0})", NetUtility.MakeCommaDelimitedList(m_blocksizes))); + if (!s_blocksizes.Contains(iv.Length * 8)) + throw new NetException(string.Format("Not a valid iv size. (Valid values are: {0})", NetUtility.MakeCommaDelimitedList(s_blocksizes))); m_key = key; m_iv = iv; @@ -69,8 +69,8 @@ namespace Lidgren.Network /// public NetDESEncryption(string key, int bitsize) { - if (!m_keysizes.Contains(bitsize)) - throw new NetException(string.Format("Not a valid key size. (Valid values are: {0})", NetUtility.MakeCommaDelimitedList(m_keysizes))); + if (!s_keysizes.Contains(bitsize)) + throw new NetException(string.Format("Not a valid key size. (Valid values are: {0})", NetUtility.MakeCommaDelimitedList(s_keysizes))); byte[] entropy = Encoding.UTF32.GetBytes(key); // I know hardcoding salts is bad, but in this case I think it is acceptable. @@ -83,7 +83,7 @@ namespace Lidgren.Network int keylen = bitsize / 8; m_key = new byte[keylen]; Buffer.BlockCopy(entropy, 0, m_key, 0, keylen); - m_iv = new byte[m_blocksizes[0] / 8]; + m_iv = new byte[s_blocksizes[0] / 8]; Buffer.BlockCopy(entropy, entropy.Length - m_iv.Length - 1, m_iv, 0, m_iv.Length); m_bitSize = bitsize; @@ -93,7 +93,7 @@ namespace Lidgren.Network /// NetDESEncryption constructor /// public NetDESEncryption(string key) - : this(key, m_keysizes[0]) + : this(key, s_keysizes[0]) { } @@ -109,13 +109,11 @@ namespace Lidgren.Network { using (ICryptoTransform cryptoTransform = desCryptoServiceProvider.CreateEncryptor(m_key, m_iv)) { - using (MemoryStream memoryStream = new MemoryStream()) + var memoryStream = new MemoryStream(); + using (CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoTransform, CryptoStreamMode.Write)) { - using (CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoTransform, - CryptoStreamMode.Write)) - { - cryptoStream.Write(msg.m_data, 0, msg.m_data.Length); - } + cryptoStream.Write(msg.m_data, 0, msg.m_data.Length); + cryptoStream.Close(); msg.m_data = memoryStream.ToArray(); } } @@ -141,13 +139,11 @@ namespace Lidgren.Network { using (ICryptoTransform cryptoTransform = desCryptoServiceProvider.CreateDecryptor(m_key, m_iv)) { - using (MemoryStream memoryStream = new MemoryStream()) + var memoryStream = new MemoryStream(); + using (CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoTransform, CryptoStreamMode.Write)) { - using (CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoTransform, - CryptoStreamMode.Write)) - { - cryptoStream.Write(msg.m_data, 0, msg.m_data.Length); - } + cryptoStream.Write(msg.m_data, 0, msg.m_data.Length); + cryptoStream.Close(); msg.m_data = memoryStream.ToArray(); } } diff --git a/Lidgren.Network/Encryption/NetRC2Encryption.cs b/Lidgren.Network/Encryption/NetRC2Encryption.cs index c5f36f8..35b752f 100644 --- a/Lidgren.Network/Encryption/NetRC2Encryption.cs +++ b/Lidgren.Network/Encryption/NetRC2Encryption.cs @@ -14,8 +14,8 @@ namespace Lidgren.Network private readonly byte[] m_key; private readonly byte[] m_iv; private readonly int m_bitSize; - private static readonly List m_keysizes; - private static readonly List m_blocksizes; + private static readonly List s_keysizes; + private static readonly List s_blocksizes; static NetRC2Encryption() { @@ -32,7 +32,7 @@ namespace Lidgren.Network break; } } - m_keysizes = temp; + s_keysizes = temp; temp = new List(); foreach (KeySizes keysize in rc2.LegalBlockSizes) { @@ -45,7 +45,7 @@ namespace Lidgren.Network break; } } - m_blocksizes = temp; + s_blocksizes = temp; } /// @@ -53,11 +53,11 @@ namespace Lidgren.Network /// public NetRC2Encryption(byte[] key, byte[] iv) { - if (!m_keysizes.Contains(key.Length * 8)) - throw new NetException(string.Format("Not a valid key size. (Valid values are: {0})", NetUtility.MakeCommaDelimitedList(m_keysizes))); + if (!s_keysizes.Contains(key.Length * 8)) + throw new NetException(string.Format("Not a valid key size. (Valid values are: {0})", NetUtility.MakeCommaDelimitedList(s_keysizes))); - if (!m_blocksizes.Contains(iv.Length * 8)) - throw new NetException(string.Format("Not a valid iv size. (Valid values are: {0})", NetUtility.MakeCommaDelimitedList(m_blocksizes))); + if (!s_blocksizes.Contains(iv.Length * 8)) + throw new NetException(string.Format("Not a valid iv size. (Valid values are: {0})", NetUtility.MakeCommaDelimitedList(s_blocksizes))); m_key = key; m_iv = iv; @@ -69,8 +69,8 @@ namespace Lidgren.Network /// public NetRC2Encryption(string key, int bitsize) { - if (!m_keysizes.Contains(bitsize)) - throw new NetException(string.Format("Not a valid key size. (Valid values are: {0})", NetUtility.MakeCommaDelimitedList(m_keysizes))); + if (!s_keysizes.Contains(bitsize)) + throw new NetException(string.Format("Not a valid key size. (Valid values are: {0})", NetUtility.MakeCommaDelimitedList(s_keysizes))); byte[] entropy = Encoding.UTF32.GetBytes(key); // I know hardcoding salts is bad, but in this case I think it is acceptable. @@ -83,7 +83,7 @@ namespace Lidgren.Network int keylen = bitsize / 8; m_key = new byte[keylen]; Buffer.BlockCopy(entropy, 0, m_key, 0, keylen); - m_iv = new byte[m_blocksizes[0] / 8]; + m_iv = new byte[s_blocksizes[0] / 8]; Buffer.BlockCopy(entropy, entropy.Length - m_iv.Length - 1, m_iv, 0, m_iv.Length); m_bitSize = bitsize; @@ -94,7 +94,7 @@ namespace Lidgren.Network /// /// public NetRC2Encryption(string key) - : this(key, m_keysizes[0]) + : this(key, s_keysizes[0]) { } @@ -110,13 +110,11 @@ namespace Lidgren.Network { using (ICryptoTransform cryptoTransform = rc2CryptoServiceProvider.CreateEncryptor(m_key, m_iv)) { - using (MemoryStream memoryStream = new MemoryStream()) + var memoryStream = new MemoryStream(); + using (CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoTransform, CryptoStreamMode.Write)) { - using (CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoTransform, - CryptoStreamMode.Write)) - { - cryptoStream.Write(msg.m_data, 0, msg.m_data.Length); - } + cryptoStream.Write(msg.m_data, 0, msg.m_data.Length); + cryptoStream.Close(); msg.m_data = memoryStream.ToArray(); } } @@ -142,13 +140,11 @@ namespace Lidgren.Network { using (ICryptoTransform cryptoTransform = rc2CryptoServiceProvider.CreateDecryptor(m_key, m_iv)) { - using (MemoryStream memoryStream = new MemoryStream()) + var memoryStream = new MemoryStream(); + using (CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoTransform, CryptoStreamMode.Write)) { - using (CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoTransform, - CryptoStreamMode.Write)) - { - cryptoStream.Write(msg.m_data, 0, msg.m_data.Length); - } + cryptoStream.Write(msg.m_data, 0, msg.m_data.Length); + cryptoStream.Close(); msg.m_data = memoryStream.ToArray(); } } diff --git a/Lidgren.Network/Encryption/NetTripleDESEncryption.cs b/Lidgren.Network/Encryption/NetTripleDESEncryption.cs index 0995399..1c9c00d 100644 --- a/Lidgren.Network/Encryption/NetTripleDESEncryption.cs +++ b/Lidgren.Network/Encryption/NetTripleDESEncryption.cs @@ -14,8 +14,8 @@ namespace Lidgren.Network private readonly byte[] m_key; private readonly byte[] m_iv; private readonly int m_bitSize; - private static readonly List m_keysizes; - private static readonly List m_blocksizes; + private static readonly List s_keysizes; + private static readonly List s_blocksizes; static NetTripleDESEncryption() { @@ -32,7 +32,7 @@ namespace Lidgren.Network break; } } - m_keysizes = temp; + s_keysizes = temp; temp = new List(); foreach (KeySizes keysize in tripleDES.LegalBlockSizes) { @@ -45,7 +45,7 @@ namespace Lidgren.Network break; } } - m_blocksizes = temp; + s_blocksizes = temp; } /// @@ -53,11 +53,11 @@ namespace Lidgren.Network /// public NetTripleDESEncryption(byte[] key, byte[] iv) { - if (!m_keysizes.Contains(key.Length * 8)) - throw new NetException(string.Format("Not a valid key size. (Valid values are: {0})", NetUtility.MakeCommaDelimitedList(m_keysizes))); + if (!s_keysizes.Contains(key.Length * 8)) + throw new NetException(string.Format("Not a valid key size. (Valid values are: {0})", NetUtility.MakeCommaDelimitedList(s_keysizes))); - if (!m_blocksizes.Contains(iv.Length * 8)) - throw new NetException(string.Format("Not a valid iv size. (Valid values are: {0})", NetUtility.MakeCommaDelimitedList(m_blocksizes))); + if (!s_blocksizes.Contains(iv.Length * 8)) + throw new NetException(string.Format("Not a valid iv size. (Valid values are: {0})", NetUtility.MakeCommaDelimitedList(s_blocksizes))); m_key = key; m_iv = iv; @@ -69,8 +69,8 @@ namespace Lidgren.Network /// public NetTripleDESEncryption(string key, int bitsize) { - if (!m_keysizes.Contains(bitsize)) - throw new NetException(string.Format("Not a valid key size. (Valid values are: {0})", NetUtility.MakeCommaDelimitedList(m_keysizes))); + if (!s_keysizes.Contains(bitsize)) + throw new NetException(string.Format("Not a valid key size. (Valid values are: {0})", NetUtility.MakeCommaDelimitedList(s_keysizes))); byte[] entropy = Encoding.UTF32.GetBytes(key); // I know hardcoding salts is bad, but in this case I think it is acceptable. @@ -83,7 +83,7 @@ namespace Lidgren.Network int keylen = bitsize / 8; m_key = new byte[keylen]; Buffer.BlockCopy(entropy, 0, m_key, 0, keylen); - m_iv = new byte[m_blocksizes[0] / 8]; + m_iv = new byte[s_blocksizes[0] / 8]; Buffer.BlockCopy(entropy, entropy.Length - m_iv.Length - 1, m_iv, 0, m_iv.Length); m_bitSize = bitsize; @@ -93,7 +93,7 @@ namespace Lidgren.Network /// NetTriplsDESEncryption constructor /// public NetTripleDESEncryption(string key) - : this(key, m_keysizes[0]) + : this(key, s_keysizes[0]) { } @@ -109,13 +109,11 @@ namespace Lidgren.Network { using (ICryptoTransform cryptoTransform = tripleDESCryptoServiceProvider.CreateEncryptor(m_key, m_iv)) { - using (MemoryStream memoryStream = new MemoryStream()) + var memoryStream = new MemoryStream(); + using (CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoTransform, CryptoStreamMode.Write)) { - using (CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoTransform, - CryptoStreamMode.Write)) - { - cryptoStream.Write(msg.m_data, 0, msg.m_data.Length); - } + cryptoStream.Write(msg.m_data, 0, msg.m_data.Length); + cryptoStream.Close(); msg.m_data = memoryStream.ToArray(); } } @@ -141,13 +139,11 @@ namespace Lidgren.Network { using (ICryptoTransform cryptoTransform = tripleDESCryptoServiceProvider.CreateDecryptor(m_key, m_iv)) { - using (MemoryStream memoryStream = new MemoryStream()) + var memoryStream = new MemoryStream(); + using (CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoTransform, CryptoStreamMode.Write)) { - using (CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoTransform, - CryptoStreamMode.Write)) - { - cryptoStream.Write(msg.m_data, 0, msg.m_data.Length); - } + cryptoStream.Write(msg.m_data, 0, msg.m_data.Length); + cryptoStream.Close(); msg.m_data = memoryStream.ToArray(); } } diff --git a/Lidgren.Network/Encryption/NetXteaEncryption.cs b/Lidgren.Network/Encryption/NetXteaEncryption.cs index bb10d89..504b773 100644 --- a/Lidgren.Network/Encryption/NetXteaEncryption.cs +++ b/Lidgren.Network/Encryption/NetXteaEncryption.cs @@ -82,7 +82,7 @@ namespace Lidgren.Network /// String to hash for key /// public NetXtea(string key) - : this(SHA1.Create().ComputeHash(Encoding.UTF8.GetBytes(key)), 32) + : this(NetUtility.CreateSHA1Hash(key), 32) { } diff --git a/Lidgren.Network/NetPeer.Fragmentation.cs b/Lidgren.Network/NetPeer.Fragmentation.cs index afb092d..5062c8f 100644 --- a/Lidgren.Network/NetPeer.Fragmentation.cs +++ b/Lidgren.Network/NetPeer.Fragmentation.cs @@ -6,7 +6,7 @@ namespace Lidgren.Network { internal class ReceivedFragmentGroup { - public float LastReceived; + //public float LastReceived; public byte[] Data; public NetBitVector ReceivedChunks; } @@ -126,7 +126,7 @@ namespace Lidgren.Network } info.ReceivedChunks[chunkNumber] = true; - info.LastReceived = (float)NetTime.Now; + //info.LastReceived = (float)NetTime.Now; // copy to data int offset = (chunkNumber * chunkByteSize); diff --git a/Lidgren.Network/NetPeer.Internal.cs b/Lidgren.Network/NetPeer.Internal.cs index ec90677..0bf4c71 100644 --- a/Lidgren.Network/NetPeer.Internal.cs +++ b/Lidgren.Network/NetPeer.Internal.cs @@ -179,7 +179,7 @@ namespace Lidgren.Network byte[] combined = new byte[epBytes.Length + macBytes.Length]; Array.Copy(epBytes, 0, combined, 0, epBytes.Length); Array.Copy(macBytes, 0, combined, epBytes.Length, macBytes.Length); - m_uniqueIdentifier = BitConverter.ToInt64(SHA1.Create().ComputeHash(combined), 0); + m_uniqueIdentifier = BitConverter.ToInt64(NetUtility.CreateSHA1Hash(combined), 0); m_status = NetPeerStatus.Running; } diff --git a/Lidgren.Network/NetRandomSeed.cs b/Lidgren.Network/NetRandomSeed.cs index f6e0b00..892126d 100644 --- a/Lidgren.Network/NetRandomSeed.cs +++ b/Lidgren.Network/NetRandomSeed.cs @@ -3,6 +3,9 @@ using System.Threading; namespace Lidgren.Network { + /// + /// Class for generating random seeds + /// public static class NetRandomSeed { private static int m_seedIncrement = -1640531527; diff --git a/Lidgren.Network/NetUPnP.cs b/Lidgren.Network/NetUPnP.cs index e4cdf8b..9a130ab 100644 --- a/Lidgren.Network/NetUPnP.cs +++ b/Lidgren.Network/NetUPnP.cs @@ -168,11 +168,11 @@ namespace Lidgren.Network try { - XmlDocument xdoc = SOAPRequest(m_serviceUrl, + SOAPRequest(m_serviceUrl, "" + "" + "" + port.ToString() + "" + - "" + ProtocolType.Udp.ToString().ToUpper() + "" + + "" + ProtocolType.Udp.ToString().ToUpper(System.Globalization.CultureInfo.InvariantCulture) + "" + "" + port.ToString() + "" + "" + client.ToString() + "" + "1" + @@ -202,12 +202,12 @@ namespace Lidgren.Network try { - XmlDocument xdoc = SOAPRequest(m_serviceUrl, + SOAPRequest(m_serviceUrl, "" + "" + "" + "" + port + "" + - "" + ProtocolType.Udp.ToString().ToUpper() + "" + + "" + ProtocolType.Udp.ToString().ToUpper(System.Globalization.CultureInfo.InvariantCulture) + "" + "", "DeletePortMapping"); return true; } diff --git a/Lidgren.Network/NetUtility.cs b/Lidgren.Network/NetUtility.cs index 645fdb7..f00e52c 100644 --- a/Lidgren.Network/NetUtility.cs +++ b/Lidgren.Network/NetUtility.cs @@ -31,6 +31,7 @@ using System.Net.Sockets; using System.Text; using System.Text.RegularExpressions; using System.Collections.Generic; +using System.Security.Cryptography; namespace Lidgren.Network { @@ -592,5 +593,23 @@ namespace Lidgren.Network } return bdr.ToString(); } + + /// + /// Create a SHA1 digest from a string + /// + public static byte[] CreateSHA1Hash(string key) + { + using (var sha = SHA1.Create()) + return sha.ComputeHash(Encoding.UTF8.GetBytes(key)); + } + + /// + /// Create a SHA1 digest from a byte buffer + /// + public static byte[] CreateSHA1Hash(byte[] data) + { + using (var sha = SHA1.Create()) + return sha.ComputeHash(data); + } } } \ No newline at end of file diff --git a/UnitTests/EncryptionTests.cs b/UnitTests/EncryptionTests.cs index 0b071b0..cf0bfbd 100644 --- a/UnitTests/EncryptionTests.cs +++ b/UnitTests/EncryptionTests.cs @@ -36,9 +36,12 @@ namespace UnitTests // convert to incoming message NetIncomingMessage im = Program.CreateIncomingMessage(om.PeekDataBuffer(), om.LengthBits); + if (im.Data == null || im.Data.Length == 0) + throw new NetException("bad im!"); + im.Decrypt(algo); - if (im.LengthBits != trueLen) + if (im.Data == null || im.Data.Length == 0 || im.LengthBits != trueLen) throw new NetException("Length fail"); if (im.ReadString() != "Hallon") diff --git a/UnitTests/Program.cs b/UnitTests/Program.cs index 5e5900c..8ecc7f4 100644 --- a/UnitTests/Program.cs +++ b/UnitTests/Program.cs @@ -36,7 +36,7 @@ namespace UnitTests catch (NetException nex) { if (nex.Message != "This message has already been sent! Use NetPeer.SendMessage() to send to multiple recipients efficiently") - throw nex; + throw; } peer.Shutdown("bye");