2008-10-12 Zoltan Varga <vargaz@gmail.com>
authorZoltan Varga <vargaz@gmail.com>
Sun, 12 Oct 2008 10:45:11 +0000 (10:45 -0000)
committerZoltan Varga <vargaz@gmail.com>
Sun, 12 Oct 2008 10:45:11 +0000 (10:45 -0000)
* BinaryReader.cs (Read7BitEncodedInt): Check for an invalid encoding.
Fixes #434581.

svn path=/trunk/mcs/; revision=115560

mcs/class/corlib/System.IO/BinaryReader.cs
mcs/class/corlib/System.IO/ChangeLog

index 1530a91172be0615c89dac949f05e7fc3bfd54e4..600b2ca2ed0e4e55e91405758ed6cbe5f3f762b8 100644 (file)
@@ -254,16 +254,22 @@ namespace System.IO {
                protected int Read7BitEncodedInt() {
                        int ret = 0;
                        int shift = 0;
+                       int len;
                        byte b;
 
-                       do {
+                       for (len = 0; len < 5; ++len) {
                                b = ReadByte();
                                
                                ret = ret | ((b & 0x7f) << shift);
                                shift += 7;
-                       } while ((b & 0x80) == 0x80);
+                               if ((b & 0x80) == 0)
+                                       break;
+                       }
 
-                       return ret;
+                       if (len < 5)
+                               return ret;
+                       else
+                               throw new FormatException ("Too many bytes in what should have been a 7 bit encoded Int32.");
                }
 
                public virtual bool ReadBoolean() {
index cf0ca1757f665241ac3c6e551b21683a89f80865..2f77638f85f10aeb89d9f673935bee9c7e3f74bc 100644 (file)
@@ -1,3 +1,8 @@
+2008-10-12  Zoltan Varga  <vargaz@gmail.com>
+
+       * BinaryReader.cs (Read7BitEncodedInt): Check for an invalid encoding.
+       Fixes #434581.
+
 2008-08-22  Sebastien Pouliot  <sebastien@ximian.com>
 
        * FileStream.cs, MonoIO.cs: For Silverlight 2.0 (NET_2_1) we always