From 63353a0687ddb8e530d95ae197e99c1408f057e6 Mon Sep 17 00:00:00 2001 From: Melanie Date: Sun, 12 Dec 2010 21:24:00 +0100 Subject: [PATCH] Fix a perms issue when wearing an object from inworld --- .../Framework/Scenes/Scene.Inventory.cs | 28 ++++++++++++------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index 52e2e83cf4..a1f1ea5489 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs @@ -1902,21 +1902,29 @@ namespace OpenSim.Region.Framework.Scenes else // oopsies item.Folder = UUID.Zero; + // Set up base perms properly + uint permsBase = (uint)(PermissionMask.Move | PermissionMask.Copy | PermissionMask.Transfer | PermissionMask.Modify); + permsBase &= grp.RootPart.BaseMask; + permsBase |= (uint)PermissionMask.Move; + + // Make sure we don't lock it + grp.RootPart.NextOwnerMask |= (uint)PermissionMask.Move; + if ((remoteClient.AgentId != grp.RootPart.OwnerID) && Permissions.PropagatePermissions()) { - item.BasePermissions = grp.RootPart.NextOwnerMask; - item.CurrentPermissions = grp.RootPart.NextOwnerMask; - item.NextPermissions = grp.RootPart.NextOwnerMask; - item.EveryOnePermissions = grp.RootPart.EveryoneMask & grp.RootPart.NextOwnerMask; - item.GroupPermissions = grp.RootPart.GroupMask & grp.RootPart.NextOwnerMask; + item.BasePermissions = permsBase & grp.RootPart.NextOwnerMask; + item.CurrentPermissions = permsBase & grp.RootPart.NextOwnerMask; + item.NextPermissions = permsBase & grp.RootPart.NextOwnerMask; + item.EveryOnePermissions = permsBase & grp.RootPart.EveryoneMask & grp.RootPart.NextOwnerMask; + item.GroupPermissions = permsBase & grp.RootPart.GroupMask & grp.RootPart.NextOwnerMask; } else { - item.BasePermissions = grp.RootPart.BaseMask; - item.CurrentPermissions = grp.RootPart.OwnerMask; - item.NextPermissions = grp.RootPart.NextOwnerMask; - item.EveryOnePermissions = grp.RootPart.EveryoneMask; - item.GroupPermissions = grp.RootPart.GroupMask; + item.BasePermissions = permsBase; + item.CurrentPermissions = permsBase & grp.RootPart.OwnerMask; + item.NextPermissions = permsBase & grp.RootPart.NextOwnerMask; + item.EveryOnePermissions = permsBase & grp.RootPart.EveryoneMask; + item.GroupPermissions = permsBase & grp.RootPart.GroupMask; } item.CreationDate = Util.UnixTimeSinceEpoch();