diff options
author | Marek Habersack <grendel@twistedcode.net> | 2015-12-11 00:01:52 +0300 |
---|---|---|
committer | Marek Habersack <grendel@twistedcode.net> | 2015-12-11 00:01:52 +0300 |
commit | 262b4ef73fe6a3a24b8cec48b4123abd5311c1c0 (patch) | |
tree | 4d9c2ed58b63f6b87cde125b2d78dc10e4032817 /mcs/class/System.XML/Test | |
parent | c6d239fa790ef48d932d1243d002253101648f7f (diff) |
Fix endless recursion in XmlCompiledTransform on mobile
One of the XmlCompiledTransform overloads called itself recursively,
leading to either a stack overflow or segfault
Fixes https://bugzilla.xamarin.com/show_bug.cgi?id=36436
Diffstat (limited to 'mcs/class/System.XML/Test')
-rw-r--r-- | mcs/class/System.XML/Test/System.Xml.Xsl/XslCompiledTransformTests.cs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/mcs/class/System.XML/Test/System.Xml.Xsl/XslCompiledTransformTests.cs b/mcs/class/System.XML/Test/System.Xml.Xsl/XslCompiledTransformTests.cs index aa333328d96..3ed7fc3a066 100644 --- a/mcs/class/System.XML/Test/System.Xml.Xsl/XslCompiledTransformTests.cs +++ b/mcs/class/System.XML/Test/System.Xml.Xsl/XslCompiledTransformTests.cs @@ -168,5 +168,31 @@ xmlns:xsl='http://www.w3.org/1999/XSL/Transform' xmlns:msxsl='urn:schemas-micros // Returns true on .NET and False on mono 2.10.2 Assert.IsTrue (xslCompiledTransform.OutputSettings.Indent, "#1"); } + + [Test] // Bug 36436 + public void TransformWithXmlDocument () + { + XmlDocument doc = new XmlDocument (); + doc.LoadXml (@"<ROOT/>"); + XmlDocument st = new XmlDocument (); + st.LoadXml (@"<?xml version=""1.0"" encoding=""utf-8""?> +<xsl:stylesheet version=""1.0"" xmlns:vy=""Vineyard.Elements"" + xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"" xmlns:xlink=""http://www.w3.org/1999/xlink"" xmlns:user=""http://www.mydomain.com/mynamespace""> + <xsl:output method=""xml""/> + + <xsl:param name=""os"" select=""ios""/> + + <xsl:template match=""/ROOT"" > + <xsl:copy/> +</xsl:template> +</xsl:stylesheet>"); + XslCompiledTransform xsl = new XslCompiledTransform (); + xsl.Load (st); + + XsltArgumentList args = new XsltArgumentList (); + + MemoryStream mstr = new MemoryStream (); + xsl.Transform (doc, args, mstr); + } } } |