aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
diff options
context:
space:
mode:
authorMelanie2010-05-21 03:03:35 +0100
committerMelanie2010-05-21 03:03:35 +0100
commitb6674c9b7676aa522a4cc5201a6035d89e138655 (patch)
tree1c047eb52906800973ed00e151bb72be5ca91fa5 /OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
parentInitialise m_initialSitTarget to ZERO_VACTOR for safety's sake as per convo w... (diff)
parentMerge branch '0.6.9-post-fixes' into careminster (diff)
downloadopensim-SC_OLD-b6674c9b7676aa522a4cc5201a6035d89e138655.zip
opensim-SC_OLD-b6674c9b7676aa522a4cc5201a6035d89e138655.tar.gz
opensim-SC_OLD-b6674c9b7676aa522a4cc5201a6035d89e138655.tar.bz2
opensim-SC_OLD-b6674c9b7676aa522a4cc5201a6035d89e138655.tar.xz
Merge branch 'careminster' into careminster-presence-refactor
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/Scene.Inventory.cs')
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.Inventory.cs44
1 files changed, 23 insertions, 21 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index 386aab4..cbe3456 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -397,29 +397,31 @@ namespace OpenSim.Region.Framework.Scenes
397 itemCopy.InvType = item.InvType; 397 itemCopy.InvType = item.InvType;
398 itemCopy.Folder = recipientFolderId; 398 itemCopy.Folder = recipientFolderId;
399 399
400 if (Permissions.PropagatePermissions()) 400 if (Permissions.PropagatePermissions() && recipient != senderId)
401 { 401 {
402 // First, make sore base is limited to the next perms
403 itemCopy.BasePermissions = item.BasePermissions & item.NextPermissions;
404 // By default, current equals base
405 itemCopy.CurrentPermissions = itemCopy.BasePermissions;
406
407 // If this is an object, replace current perms
408 // with folded perms
402 if (item.InvType == (int)InventoryType.Object) 409 if (item.InvType == (int)InventoryType.Object)
403 { 410 {
404 itemCopy.BasePermissions &= ~(uint)(PermissionMask.Copy | PermissionMask.Modify | PermissionMask.Transfer); 411 itemCopy.CurrentPermissions &= ~(uint)(PermissionMask.Copy | PermissionMask.Modify | PermissionMask.Transfer);
405 itemCopy.BasePermissions |= (item.CurrentPermissions & 7) << 13; 412 itemCopy.CurrentPermissions |= (item.CurrentPermissions & 7) << 13;
406 }
407 else
408 {
409 itemCopy.BasePermissions = item.BasePermissions & item.NextPermissions;
410 } 413 }
411 414
412 itemCopy.CurrentPermissions = itemCopy.BasePermissions; 415 // Ensure there is no escalation
413 if ((item.CurrentPermissions & 8) != 0) // Propagate slam bit 416 itemCopy.CurrentPermissions &= item.NextPermissions;
414 { 417
415 itemCopy.BasePermissions &= item.NextPermissions; 418 // Need slam bit on xfer
416 itemCopy.CurrentPermissions = itemCopy.BasePermissions; 419 itemCopy.CurrentPermissions |= 8;
417 itemCopy.CurrentPermissions |= 8;
418 }
419 420
420 itemCopy.NextPermissions = item.NextPermissions; 421 itemCopy.NextPermissions = item.NextPermissions;
421 itemCopy.EveryOnePermissions = item.EveryOnePermissions & item.NextPermissions; 422
422 itemCopy.GroupPermissions = item.GroupPermissions & item.NextPermissions; 423 itemCopy.EveryOnePermissions = 0;
424 itemCopy.GroupPermissions = 0;
423 } 425 }
424 else 426 else
425 { 427 {
@@ -914,12 +916,12 @@ namespace OpenSim.Region.Framework.Scenes
914 916
915 if ((part.OwnerID != destAgent) && Permissions.PropagatePermissions()) 917 if ((part.OwnerID != destAgent) && Permissions.PropagatePermissions())
916 { 918 {
919 agentItem.BasePermissions = taskItem.BasePermissions & taskItem.NextPermissions;
917 if (taskItem.InvType == (int)InventoryType.Object) 920 if (taskItem.InvType == (int)InventoryType.Object)
918 agentItem.BasePermissions = taskItem.BasePermissions & ((taskItem.CurrentPermissions & 7) << 13); 921 agentItem.CurrentPermissions = agentItem.BasePermissions & ((taskItem.CurrentPermissions & 7) << 13);
919 else 922 agentItem.CurrentPermissions = agentItem.BasePermissions ;
920 agentItem.BasePermissions = taskItem.BasePermissions; 923
921 agentItem.BasePermissions &= taskItem.NextPermissions; 924 agentItem.CurrentPermissions |= 8;
922 agentItem.CurrentPermissions = agentItem.BasePermissions | 8;
923 agentItem.NextPermissions = taskItem.NextPermissions; 925 agentItem.NextPermissions = taskItem.NextPermissions;
924 agentItem.EveryOnePermissions = taskItem.EveryonePermissions & taskItem.NextPermissions; 926 agentItem.EveryOnePermissions = taskItem.EveryonePermissions & taskItem.NextPermissions;
925 agentItem.GroupPermissions = taskItem.GroupPermissions & taskItem.NextPermissions; 927 agentItem.GroupPermissions = taskItem.GroupPermissions & taskItem.NextPermissions;