فهرست منبع

2007-03-05 Atsushi Enomoto <[email protected]>

	* XmlReader.cs : when Create() returns customized XmlTextReader, set
	  EntityHandling.ExpandEntities. Fixed bug #81000.

	* XmlReaderSettingsTests.cs : added test for bug #81000.


svn path=/trunk/mcs/; revision=73698
Atsushi Eno 19 سال پیش
والد
کامیت
de8c3d5de0

+ 5 - 0
mcs/class/System.XML/System.Xml/ChangeLog

@@ -1,3 +1,8 @@
+2007-03-05  Atsushi Enomoto  <[email protected]>
+
+	* XmlReader.cs : when Create() returns customized XmlTextReader, set
+	  EntityHandling.ExpandEntities. Fixed bug #81000.
+
 2007-02-20  Atsushi Enomoto  <[email protected]>
 
 	* XmlTextReader.cs, XmlTextReader2.cs : Reset() should work now.

+ 1 - 0
mcs/class/System.XML/System.Xml/XmlReader.cs

@@ -337,6 +337,7 @@ namespace System.Xml
 			reader.XmlResolver = settings.XmlResolver;
 			// Normalization is set true by default.
 			reader.Normalization = true;
+			reader.EntityHandling = EntityHandling.ExpandEntities;
 
 			if (settings.ProhibitDtd)
 				reader.ProhibitDtd = true;

+ 4 - 0
mcs/class/System.XML/Test/System.Xml/ChangeLog

@@ -1,3 +1,7 @@
+2007-03-05  Atsushi Enomoto  <[email protected]>
+
+	* XmlReaderSettingsTests.cs : added test for bug #81000.
+
 2007-02-07  Atsushi Enomoto  <[email protected]>
 
 	* XmlReaderCommonTests.cs : added test for bug #80848.

+ 28 - 0
mcs/class/System.XML/Test/System.Xml/XmlReaderSettingsTests.cs

@@ -373,6 +373,34 @@ namespace MonoTests.System.Xml
 				r.Read ();
 			}
 		}
+
+		[Test]
+		public void ResolveEntities () // bug #81000
+		{
+			XmlReaderSettings s = new XmlReaderSettings ();
+			s.ProhibitDtd = false;
+			s.XmlResolver = new XmlResolver81000 ();
+
+			string xml = "<!DOCTYPE root SYSTEM \"foo.dtd\"><root>&alpha;</root>";
+			XmlReader r = XmlReader.Create (new StringReader (xml), s);
+			r.Read ();
+			r.Read ();
+			r.Read ();
+			// not EntityReference but Text
+			AssertEquals ("#1", XmlNodeType.Text, r.NodeType);
+			r.Read ();
+			AssertEquals ("#2", XmlNodeType.EndElement, r.NodeType);
+		}
+
+		public class XmlResolver81000 : XmlResolver
+		{
+			public override ICredentials Credentials { set {} }
+
+			public override object GetEntity (Uri uri, string role, Type type)
+			{
+				return new MemoryStream (Encoding.UTF8.GetBytes ("<!ENTITY alpha \"bravo\">"));
+			}
+		}
 	}
 }
 #endif