diff options
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs | 32 |
1 files changed, 21 insertions, 11 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs index 82bbe6f..a2d512a 100644 --- a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs +++ b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs | |||
@@ -63,7 +63,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
63 | String fixedData = ExternalRepresentationUtils.SanitizeXml(xmlData); | 63 | String fixedData = ExternalRepresentationUtils.SanitizeXml(xmlData); |
64 | using (XmlTextReader wrappedReader = new XmlTextReader(fixedData, XmlNodeType.Element, null)) | 64 | using (XmlTextReader wrappedReader = new XmlTextReader(fixedData, XmlNodeType.Element, null)) |
65 | { | 65 | { |
66 | using (XmlReader reader = XmlReader.Create(wrappedReader, new XmlReaderSettings() { IgnoreWhitespace = true, ConformanceLevel = ConformanceLevel.Fragment })) | 66 | using (XmlReader reader = XmlReader.Create(wrappedReader, new XmlReaderSettings() { IgnoreWhitespace = true, ConformanceLevel = ConformanceLevel.Fragment, DtdProcessing = DtdProcessing.Prohibit, XmlResolver = null })) |
67 | { | 67 | { |
68 | try | 68 | try |
69 | { | 69 | { |
@@ -255,6 +255,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
255 | try | 255 | try |
256 | { | 256 | { |
257 | XmlDocument doc = new XmlDocument(); | 257 | XmlDocument doc = new XmlDocument(); |
258 | doc.XmlResolver=null; | ||
258 | doc.LoadXml(xmlData); | 259 | doc.LoadXml(xmlData); |
259 | 260 | ||
260 | XmlNodeList parts = doc.GetElementsByTagName("SceneObjectPart"); | 261 | XmlNodeList parts = doc.GetElementsByTagName("SceneObjectPart"); |
@@ -266,18 +267,29 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
266 | return null; | 267 | return null; |
267 | } | 268 | } |
268 | 269 | ||
269 | StringReader sr = new StringReader(parts[0].OuterXml); | 270 | SceneObjectGroup sceneObject; |
270 | XmlTextReader reader = new XmlTextReader(sr); | 271 | using(StringReader sr = new StringReader(parts[0].OuterXml)) |
271 | SceneObjectGroup sceneObject = new SceneObjectGroup(SceneObjectPart.FromXml(reader)); | 272 | { |
272 | reader.Close(); | 273 | using(XmlTextReader reader = new XmlTextReader(sr)) |
273 | sr.Close(); | 274 | { |
275 | reader.DtdProcessing = DtdProcessing.Prohibit; | ||
276 | reader.XmlResolver = null; | ||
277 | |||
278 | sceneObject = new SceneObjectGroup(SceneObjectPart.FromXml(reader)); | ||
279 | } | ||
280 | } | ||
274 | 281 | ||
275 | // Then deal with the rest | 282 | // Then deal with the rest |
283 | SceneObjectPart part; | ||
276 | for (int i = 1; i < parts.Count; i++) | 284 | for (int i = 1; i < parts.Count; i++) |
277 | { | 285 | { |
278 | sr = new StringReader(parts[i].OuterXml); | 286 | using(StringReader sr = new StringReader(parts[i].OuterXml)) |
279 | reader = new XmlTextReader(sr); | 287 | { |
280 | SceneObjectPart part = SceneObjectPart.FromXml(reader); | 288 | using(XmlTextReader reader = new XmlTextReader(sr)) |
289 | { | ||
290 | part = SceneObjectPart.FromXml(reader); | ||
291 | } | ||
292 | } | ||
281 | 293 | ||
282 | int originalLinkNum = part.LinkNum; | 294 | int originalLinkNum = part.LinkNum; |
283 | 295 | ||
@@ -288,8 +300,6 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
288 | if (originalLinkNum != 0) | 300 | if (originalLinkNum != 0) |
289 | part.LinkNum = originalLinkNum; | 301 | part.LinkNum = originalLinkNum; |
290 | 302 | ||
291 | reader.Close(); | ||
292 | sr.Close(); | ||
293 | } | 303 | } |
294 | 304 | ||
295 | XmlNodeList keymotion = doc.GetElementsByTagName("KeyframeMotion"); | 305 | XmlNodeList keymotion = doc.GetElementsByTagName("KeyframeMotion"); |