From 1d9a9e6004e249100c96659fd1d71f6d5cee7bb1 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Thu, 24 Apr 2014 14:11:42 -0700 Subject: Fixes a long-standing bug related to god-mode change ownership of objects permissive, where the permissions of the children prims' inventory items were not changed. As a consequence, we couldn't control some of the objects imported via HG and OARs even in god mode. --- OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs') diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index 529bc9f..0356599 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs @@ -2352,7 +2352,7 @@ namespace OpenSim.Region.Framework.Scenes // objectGroup.m_rootPart = null; // If linking prims with different permissions, fix them - AdjustChildPrimPermissions(); + AdjustChildPrimPermissions(false); GroupContainsForeignPrims = true; @@ -2864,7 +2864,7 @@ namespace OpenSim.Region.Framework.Scenes } } - public void AdjustChildPrimPermissions() + public void AdjustChildPrimPermissions(bool forceTaskInventoryPermissive) { uint newOwnerMask = (uint)(PermissionMask.All | PermissionMask.Export) & 0xfffffff8; // Mask folded bits uint foldedPerms = RootPart.OwnerMask & 3; @@ -2874,6 +2874,8 @@ namespace OpenSim.Region.Framework.Scenes newOwnerMask &= part.BaseMask; if (part != RootPart) part.ClonePermissions(RootPart); + if (forceTaskInventoryPermissive) + part.Inventory.ApplyGodPermissions(part.BaseMask); }); uint lockMask = ~(uint)(PermissionMask.Move | PermissionMask.Modify); @@ -2887,7 +2889,7 @@ namespace OpenSim.Region.Framework.Scenes { RootPart.UpdatePermissions(AgentID, field, localID, mask, addRemTF); - AdjustChildPrimPermissions(); + AdjustChildPrimPermissions(Scene.Permissions.IsGod(AgentID)); HasGroupChanged = true; -- cgit v1.1