List:Commits« Previous MessageNext Message »
From:Vladislav Vaintroub Date:September 1 2009 2:01pm
Subject:bzr commit into connector-net-6.0 branch (vvaintroub:761) Bug#46844
View as plain text  
#At file:///H:/connector_net/6.0/ based on revid:reggie.burnett@stripped

  761 Vladislav Vaintroub	2009-09-01
      Ensure that MySqlPacket always has a valid encoding. This prevents null reference exceptions in ReadString() (bug#46844)

    modified:
      CHANGES
      MySql.Data/Provider/Source/MySqlPacket.cs
      MySql.Data/Provider/Source/MySqlStream.cs
=== modified file 'CHANGES'
--- a/CHANGES	2009-08-27 22:56:43 +0000
+++ b/CHANGES	2009-09-01 14:01:55 +0000
@@ -1,4 +1,6 @@
 Version 6.0.5
+- ensure that MySqlPacket always has a valid encoding. This prevents null reference exceptions in ReadString()
+  (bug#46844)
 - fixed memory leak in server when calling stored procedure with output parameter many times 
   in the same session (bug#36027)
 - workaround for .NET compact framework problems when writing behind the end of MemoryStream 

=== modified file 'MySql.Data/Provider/Source/MySqlPacket.cs'
--- a/MySql.Data/Provider/Source/MySqlPacket.cs	2009-08-27 22:33:05 +0000
+++ b/MySql.Data/Provider/Source/MySqlPacket.cs	2009-09-01 14:01:55 +0000
@@ -34,14 +34,14 @@ namespace MySql.Data.MySqlClient
         private MemoryStream buffer = new MemoryStream(5);
         private DBVersion version;
 
-        public MySqlPacket()
+        private MySqlPacket()
         {
             Clear();
         }
 
-        public MySqlPacket(Encoding encoding) : this()
+        public MySqlPacket(Encoding enc) : this()
         {
-            this.encoding = encoding;
+            Encoding = enc;
         }
 
         public MySqlPacket(MemoryStream stream)
@@ -55,7 +55,11 @@ namespace MySql.Data.MySqlClient
         public Encoding Encoding
         {
             get { return encoding; }
-            set { encoding = value; }
+            set 
+            {
+                Debug.Assert(value != null);
+                encoding = value; 
+            }
         }
 
         public bool HasMoreData

=== modified file 'MySql.Data/Provider/Source/MySqlStream.cs'
--- a/MySql.Data/Provider/Source/MySqlStream.cs	2009-09-01 03:54:56 +0000
+++ b/MySql.Data/Provider/Source/MySqlStream.cs	2009-09-01 14:01:55 +0000
@@ -33,14 +33,13 @@ namespace MySql.Data.MySqlClient
 	internal class MySqlStream
 	{
 		private byte sequenceByte;
-		private Encoding encoding;
 		private MemoryStream bufferStream;
 		private int maxBlockSize;
 		private ulong maxPacketSize;
 		private Stream inStream;
 		private Stream outStream;
 		private byte[] tempBuffer = new byte[4];
-        MySqlPacket packet = new MySqlPacket();
+        MySqlPacket packet;
 
 
 		public MySqlStream(Encoding encoding)
@@ -54,7 +53,7 @@ namespace MySql.Data.MySqlClient
 			// true maxBlockSize prior to that.
 			maxBlockSize = Int32.MaxValue;
 
-			this.encoding = encoding;
+			packet = new MySqlPacket(encoding);
 			bufferStream = new MemoryStream();
 		}
 
@@ -83,8 +82,8 @@ namespace MySql.Data.MySqlClient
 
 		public Encoding Encoding
 		{
-			get { return encoding; }
-			set { encoding = value; }
+			get { return packet.Encoding; }
+			set { packet.Encoding = value; }
 		}
 
 		public byte SequenceByte
@@ -136,8 +135,6 @@ namespace MySql.Data.MySqlClient
                 }
 				throw new MySqlException(msg, code);
 			}
-
-            packet.Encoding = encoding;
             return packet;
 		}
 


Attachment: [text/bzr-bundle] bzr/vvaintroub@mysql.com-20090901140155-ptffskfck76nt7eh.bundle
Thread
bzr commit into connector-net-6.0 branch (vvaintroub:761) Bug#46844Vladislav Vaintroub1 Sep