From c4ab9482b5304b3cc25d8f05cf0f3c4d6ecab5b0 Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Mon, 6 Oct 2008 03:23:55 +0000 Subject: More perms fixes. Reinstate the move flag --- .../Environment/Scenes/SceneObjectGroup.Inventory.cs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.Inventory.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.Inventory.cs index 5ce8985..1b2ee7d 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.Inventory.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.Inventory.cs @@ -248,21 +248,25 @@ namespace OpenSim.Region.Environment.Scenes PermissionMask.Move | PermissionMask.Transfer) | 7; + uint ownerMask = 0x7ffffff; foreach (SceneObjectPart part in m_parts.Values) + { + ownerMask &= part.OwnerMask; perms &= part.MaskEffectivePermissions(); + } - if ((RootPart.OwnerMask & (uint)PermissionMask.Modify) == 0) + if (ownerMask & (uint)PermissionMask.Modify) == 0) perms &= ~(uint)PermissionMask.Modify; - if ((RootPart.OwnerMask & (uint)PermissionMask.Copy) == 0) + if (ownerMask & (uint)PermissionMask.Copy) == 0) perms &= ~(uint)PermissionMask.Copy; - if ((RootPart.OwnerMask & (uint)PermissionMask.Transfer) == 0) + if (ownerMask & (uint)PermissionMask.Transfer) == 0) perms &= ~(uint)PermissionMask.Transfer; - if ((RootPart.OwnerMask & RootPart.NextOwnerMask & (uint)PermissionMask.Modify) == 0) + if (ownerMask & RootPart.NextOwnerMask & (uint)PermissionMask.Modify) == 0) perms &= ~((uint)PermissionMask.Modify >> 13); - if ((RootPart.OwnerMask & RootPart.NextOwnerMask & (uint)PermissionMask.Copy) == 0) + if (ownerMask & RootPart.NextOwnerMask & (uint)PermissionMask.Copy) == 0) perms &= ~((uint)PermissionMask.Copy >> 13); - if ((RootPart.OwnerMask & RootPart.NextOwnerMask & (uint)PermissionMask.Transfer) == 0) + if (ownerMask & RootPart.NextOwnerMask & (uint)PermissionMask.Transfer) == 0) perms &= ~((uint)PermissionMask.Transfer >> 13); return perms; -- cgit v1.1