aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2010-08-27 23:22:49 +0100
committerJustin Clark-Casey (justincc)2010-08-27 23:22:49 +0100
commit86937d0a0f5572b002cdb6efc499c234b2a9bd1b (patch)
tree6791667725972cfbc4a7965326f83502c53b87bf /OpenSim/Region/CoreModules
parentMerge branch 'master' of ssh://opensimulator.org/var/git/opensim (diff)
downloadopensim-SC-86937d0a0f5572b002cdb6efc499c234b2a9bd1b.zip
opensim-SC-86937d0a0f5572b002cdb6efc499c234b2a9bd1b.tar.gz
opensim-SC-86937d0a0f5572b002cdb6efc499c234b2a9bd1b.tar.bz2
opensim-SC-86937d0a0f5572b002cdb6efc499c234b2a9bd1b.tar.xz
allow inventory path specified in "load iar" to start with a / (e.g. /Objects is now valid where it wasn't before)
Diffstat (limited to 'OpenSim/Region/CoreModules')
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveUtils.cs10
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs24
2 files changed, 33 insertions, 1 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveUtils.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveUtils.cs
index 84afb40..8343091 100644
--- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveUtils.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveUtils.cs
@@ -41,7 +41,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
41 /// </summary> 41 /// </summary>
42 public static class InventoryArchiveUtils 42 public static class InventoryArchiveUtils
43 { 43 {
44// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 44 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
45 45
46 // Character used for escaping the path delimter ("\/") and itself ("\\") in human escaped strings 46 // Character used for escaping the path delimter ("\/") and itself ("\\") in human escaped strings
47 public static readonly char ESCAPE_CHARACTER = '\\'; 47 public static readonly char ESCAPE_CHARACTER = '\\';
@@ -120,6 +120,11 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
120 foundFolders.Add(startFolder); 120 foundFolders.Add(startFolder);
121 return foundFolders; 121 return foundFolders;
122 } 122 }
123
124 // If the path isn't just / then trim any starting extraneous slashes
125 path = path.TrimStart(new char[] { PATH_DELIMITER });
126
127// m_log.DebugFormat("[INVENTORY ARCHIVE UTILS]: Adjusted path in FindFolderByPath() is [{0}]", path);
123 128
124 string[] components = SplitEscapedPath(path); 129 string[] components = SplitEscapedPath(path);
125 components[0] = UnescapePath(components[0]); 130 components[0] = UnescapePath(components[0]);
@@ -199,6 +204,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
199 public static InventoryItemBase FindItemByPath( 204 public static InventoryItemBase FindItemByPath(
200 IInventoryService inventoryService, InventoryFolderBase startFolder, string path) 205 IInventoryService inventoryService, InventoryFolderBase startFolder, string path)
201 { 206 {
207 // If the path isn't just / then trim any starting extraneous slashes
208 path = path.TrimStart(new char[] { PATH_DELIMITER });
209
202 string[] components = SplitEscapedPath(path); 210 string[] components = SplitEscapedPath(path);
203 components[0] = UnescapePath(components[0]); 211 components[0] = UnescapePath(components[0]);
204 212
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs
index 892680e..e8a26b5 100644
--- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs
@@ -343,6 +343,30 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
343 } 343 }
344 344
345 /// <summary> 345 /// <summary>
346 /// Test that things work when the load path specified starts with a slash
347 /// </summary>
348 [Test]
349 public void TestLoadIarPathStartsWithSlash()
350 {
351 TestHelper.InMethod();
352 log4net.Config.XmlConfigurator.Configure();
353
354 SerialiserModule serialiserModule = new SerialiserModule();
355 InventoryArchiverModule archiverModule = new InventoryArchiverModule(true);
356 Scene scene = SceneSetupHelpers.SetupScene("inventory");
357 SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule);
358
359 UserProfileTestUtils.CreateUserWithInventory(scene, m_ua1, "password");
360 archiverModule.DearchiveInventory(m_ua1.FirstName, m_ua1.LastName, "/Objects", "password", m_iarStream);
361
362 InventoryItemBase foundItem1
363 = InventoryArchiveUtils.FindItemByPath(
364 scene.InventoryService, m_ua1.PrincipalID, "/Objects/" + m_item1Name);
365
366 Assert.That(foundItem1, Is.Not.Null, "Didn't find loaded item 1 in TestLoadIarFolderStartsWithSlash()");
367 }
368
369 /// <summary>
346 /// Test loading a V0.1 OpenSim Inventory Archive (subject to change since there is no fixed format yet) where 370 /// Test loading a V0.1 OpenSim Inventory Archive (subject to change since there is no fixed format yet) where
347 /// an account exists with the creator name. 371 /// an account exists with the creator name.
348 /// </summary> 372 /// </summary>