Cause permissions on root prims to not override folded permissions anymore

Fix propagation of folded permissions from object inventory to agent
inventory.
0.6.2-post-fixes
Melanie Thielker 2009-01-12 13:19:33 +00:00
parent e1eb1b2cfa
commit 2ba9dd7eeb
1 changed files with 10 additions and 4 deletions

View File

@ -502,8 +502,8 @@ namespace OpenSim.Region.Environment.Scenes
itemCopy.CurrentPermissions = itemCopy.BasePermissions; itemCopy.CurrentPermissions = itemCopy.BasePermissions;
if ((item.CurrentPermissions & 8) != 0) // Propagate slam bit if ((item.CurrentPermissions & 8) != 0) // Propagate slam bit
{ {
itemCopy.CurrentPermissions = item.NextPermissions; itemCopy.BasePermissions &= item.NextPermissions;
itemCopy.BasePermissions = itemCopy.CurrentPermissions; itemCopy.CurrentPermissions = itemCopy.BasePermissions;
itemCopy.CurrentPermissions |= 8; itemCopy.CurrentPermissions |= 8;
} }
@ -1091,8 +1091,12 @@ namespace OpenSim.Region.Environment.Scenes
if ((part.OwnerID != destAgent) && Permissions.PropagatePermissions()) if ((part.OwnerID != destAgent) && Permissions.PropagatePermissions())
{ {
agentItem.BasePermissions = taskItem.NextPermissions; if (taskItem.InvType == 6)
agentItem.CurrentPermissions = taskItem.NextPermissions | 8; agentItem.BasePermissions = taskItem.BasePermissions & ((taskItem.CurrentPermissions & 7) << 13);
else
agentItem.BasePermissions = taskItem.BasePermissions;
agentItem.BasePermissions &= taskItem.NextPermissions;
agentItem.CurrentPermissions = agentItem.BasePermissions | 8;
agentItem.NextPermissions = taskItem.NextPermissions; agentItem.NextPermissions = taskItem.NextPermissions;
agentItem.EveryOnePermissions = taskItem.EveryonePermissions & taskItem.NextPermissions; agentItem.EveryOnePermissions = taskItem.EveryonePermissions & taskItem.NextPermissions;
agentItem.GroupPermissions = taskItem.GroupPermissions & taskItem.NextPermissions; agentItem.GroupPermissions = taskItem.GroupPermissions & taskItem.NextPermissions;
@ -1982,6 +1986,8 @@ namespace OpenSim.Region.Environment.Scenes
item.NextPermissions = objectGroup.RootPart.NextOwnerMask; item.NextPermissions = objectGroup.RootPart.NextOwnerMask;
item.EveryOnePermissions = objectGroup.RootPart.EveryoneMask; item.EveryOnePermissions = objectGroup.RootPart.EveryoneMask;
item.GroupPermissions = objectGroup.RootPart.GroupMask; item.GroupPermissions = objectGroup.RootPart.GroupMask;
item.CurrentPermissions |= 8; // Slam!
} }
// TODO: add the new fields (Flags, Sale info, etc) // TODO: add the new fields (Flags, Sale info, etc)