From e526e8c5e225e931a5796532bf32b76530388089 Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Fri, 6 Jan 2017 17:05:00 +0000 Subject: Fix the long-standing bug that object permissions set in inventory were lost NOTE: Items rezzed by users using 0.8 or older will still exhibit broken behaviour. Until 0.8 becomes end of life, this fix will not produce dependable results on grids with mixed versions. Grids based on 0.9 will now work properly. --- .../Framework/InventoryAccess/InventoryAccessModule.cs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'OpenSim/Region/CoreModules/Framework') diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index aa5d381..0104823 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs @@ -1141,6 +1141,12 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess part.OwnerID = item.Owner; part.RezzerID = item.Owner; part.Inventory.ChangeInventoryOwner(item.Owner); + + // This applies the base mask from the item as the next + // permissions for the object. This is correct because the + // giver's base mask was masked by the giver's next owner + // mask, so the base mask equals the original next owner mask. + part.NextOwnerMask = item.BasePermissions; } so.ApplyNextOwnerPermissions(); @@ -1152,10 +1158,8 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess { if ((item.Flags & (uint)InventoryItemFlags.ObjectHasMultipleItems) == 0) { - if ((item.Flags & (uint)InventoryItemFlags.ObjectOverwriteEveryone) != 0) - part.EveryoneMask = item.EveryOnePermissions & part.BaseMask; - if ((item.Flags & (uint)InventoryItemFlags.ObjectOverwriteNextOwner) != 0) - part.NextOwnerMask = item.NextPermissions & part.BaseMask; + part.EveryoneMask = item.EveryOnePermissions & part.BaseMask; + part.NextOwnerMask = item.NextPermissions & part.BaseMask; } } } -- cgit v1.1