aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs')
-rw-r--r--OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs32
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");