aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorMelanie2011-11-12 12:09:28 +0100
committerMelanie2011-11-12 12:09:28 +0100
commitefc6c6db7ce3602660c566f4beaf529d5ea9ec71 (patch)
tree27263fd71b6f03292bb369a19bab77ad6dfea3d8
parentMerge branch 'master' into bigmerge (diff)
downloadopensim-SC_OLD-efc6c6db7ce3602660c566f4beaf529d5ea9ec71.zip
opensim-SC_OLD-efc6c6db7ce3602660c566f4beaf529d5ea9ec71.tar.gz
opensim-SC_OLD-efc6c6db7ce3602660c566f4beaf529d5ea9ec71.tar.bz2
opensim-SC_OLD-efc6c6db7ce3602660c566f4beaf529d5ea9ec71.tar.xz
Fix taking or returning locked objects losing permissions for owner
-rw-r--r--OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs2
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs10
2 files changed, 10 insertions, 2 deletions
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
index e0f8240..12555b7 100644
--- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
@@ -477,7 +477,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
477 { 477 {
478 uint effectivePerms = (uint)(PermissionMask.Copy | PermissionMask.Transfer | PermissionMask.Modify | PermissionMask.Move) | 7; 478 uint effectivePerms = (uint)(PermissionMask.Copy | PermissionMask.Transfer | PermissionMask.Modify | PermissionMask.Move) | 7;
479 foreach (SceneObjectGroup grp in objsForEffectivePermissions) 479 foreach (SceneObjectGroup grp in objsForEffectivePermissions)
480 effectivePerms &= grp.GetEffectivePermissions(); 480 effectivePerms &= grp.GetEffectivePermissions(true);
481 effectivePerms |= (uint)PermissionMask.Move; 481 effectivePerms |= (uint)PermissionMask.Move;
482 482
483 if (remoteClient != null && (remoteClient.AgentId != so.RootPart.OwnerID) && m_Scene.Permissions.PropagatePermissions()) 483 if (remoteClient != null && (remoteClient.AgentId != so.RootPart.OwnerID) && m_Scene.Permissions.PropagatePermissions())
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs
index 6bd9183..c7da4f4 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs
@@ -230,6 +230,11 @@ namespace OpenSim.Region.Framework.Scenes
230 230
231 public uint GetEffectivePermissions() 231 public uint GetEffectivePermissions()
232 { 232 {
233 return GetEffectivePermissions(false);
234 }
235
236 public uint GetEffectivePermissions(bool useBase)
237 {
233 uint perms=(uint)(PermissionMask.Modify | 238 uint perms=(uint)(PermissionMask.Modify |
234 PermissionMask.Copy | 239 PermissionMask.Copy |
235 PermissionMask.Move | 240 PermissionMask.Move |
@@ -241,7 +246,10 @@ namespace OpenSim.Region.Framework.Scenes
241 for (int i = 0; i < parts.Length; i++) 246 for (int i = 0; i < parts.Length; i++)
242 { 247 {
243 SceneObjectPart part = parts[i]; 248 SceneObjectPart part = parts[i];
244 ownerMask &= part.OwnerMask; 249 if (useBase)
250 ownerMask &= part.BaseMask;
251 else
252 ownerMask &= part.OwnerMask;
245 perms &= part.Inventory.MaskEffectivePermissions(); 253 perms &= part.Inventory.MaskEffectivePermissions();
246 } 254 }
247 255