@@ -58,11 +58,13 @@ type XmlElement =
5858 static member Create ( reader : TextReader ) =
5959 use reader = reader
6060 // Secure XML parsing: disable DTD processing and external entities to prevent XXE attacks
61- let xmlReaderSettings =
61+ let xmlReaderSettings =
6262 new XmlReaderSettings(
6363 DtdProcessing = DtdProcessing.Prohibit,
6464 XmlResolver = null ,
65- MaxCharactersFromEntities = 1024 L * 1024 L) // 1MB limit
65+ MaxCharactersFromEntities = 1024 L * 1024 L
66+ ) // 1MB limit
67+
6668 use xmlReader = XmlReader.Create( reader, xmlReaderSettings)
6769 let element = XDocument.Load( xmlReader, LoadOptions.PreserveWhitespace) .Root
6870 { XElement = element }
@@ -78,21 +80,24 @@ type XmlElement =
7880 let text = reader.ReadToEnd()
7981
8082 // Secure XML parsing: disable DTD processing and external entities to prevent XXE attacks
81- let xmlReaderSettings =
83+ let xmlReaderSettings =
8284 new XmlReaderSettings(
8385 DtdProcessing = DtdProcessing.Prohibit,
8486 XmlResolver = null ,
85- MaxCharactersFromEntities = 1024 L * 1024 L) // 1MB limit
87+ MaxCharactersFromEntities = 1024 L * 1024 L
88+ ) // 1MB limit
8689
8790 try
8891 use stringReader = new StringReader( text)
8992 use xmlReader = XmlReader.Create( stringReader, xmlReaderSettings)
93+
9094 XDocument.Load( xmlReader, LoadOptions.PreserveWhitespace) .Root.Elements()
9195 |> Seq.map ( fun value -> { XElement = value })
9296 |> Seq.toArray
9397 with _ when text.TrimStart() .StartsWith " <" ->
9498 use stringReader = new StringReader( " <root>" + text + " </root>" )
9599 use xmlReader = XmlReader.Create( stringReader, xmlReaderSettings)
100+
96101 XDocument.Load( xmlReader, LoadOptions.PreserveWhitespace) .Root.Elements()
97102 |> Seq.map ( fun value -> { XElement = value })
98103 |> Seq.toArray
0 commit comments