aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
authorMelanie2010-05-21 02:31:14 +0100
committerMelanie2010-05-21 15:31:27 +0100
commit1d6ab445ab29c1b7d6da4044434af442a8eff97d (patch)
tree6085b6e8376c8a32797d66acc760e912ca03cdd3 /OpenSim/Region
parentReplace CSJ2K with fixed version (Mantis #3318) (diff)
downloadopensim-SC_OLD-1d6ab445ab29c1b7d6da4044434af442a8eff97d.zip
opensim-SC_OLD-1d6ab445ab29c1b7d6da4044434af442a8eff97d.tar.gz
opensim-SC_OLD-1d6ab445ab29c1b7d6da4044434af442a8eff97d.tar.bz2
opensim-SC_OLD-1d6ab445ab29c1b7d6da4044434af442a8eff97d.tar.xz
Change the way the object perms are propagated to attempt to salvage
some older content
Diffstat (limited to 'OpenSim/Region')
-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 60f730d..96f22a4 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -382,29 +382,31 @@ namespace OpenSim.Region.Framework.Scenes
382 itemCopy.InvType = item.InvType; 382 itemCopy.InvType = item.InvType;
383 itemCopy.Folder = recipientFolderId; 383 itemCopy.Folder = recipientFolderId;
384 384
385 if (Permissions.PropagatePermissions()) 385 if (Permissions.PropagatePermissions() && recipient != senderId)
386 { 386 {
387 // First, make sore base is limited to the next perms
388 itemCopy.BasePermissions = item.BasePermissions & item.NextPermissions;
389 // By default, current equals base
390 itemCopy.CurrentPermissions = itemCopy.BasePermissions;
391
392 // If this is an object, replace current perms
393 // with folded perms
387 if (item.InvType == (int)InventoryType.Object) 394 if (item.InvType == (int)InventoryType.Object)
388 { 395 {
389 itemCopy.BasePermissions &= ~(uint)(PermissionMask.Copy | PermissionMask.Modify | PermissionMask.Transfer); 396 itemCopy.CurrentPermissions &= ~(uint)(PermissionMask.Copy | PermissionMask.Modify | PermissionMask.Transfer);
390 itemCopy.BasePermissions |= (item.CurrentPermissions & 7) << 13; 397 itemCopy.CurrentPermissions |= (item.CurrentPermissions & 7) << 13;
391 }
392 else
393 {
394 itemCopy.BasePermissions = item.BasePermissions & item.NextPermissions;
395 } 398 }
396 399
397 itemCopy.CurrentPermissions = itemCopy.BasePermissions; 400 // Ensure there is no escalation
398 if ((item.CurrentPermissions & 8) != 0) // Propagate slam bit 401 itemCopy.CurrentPermissions &= item.NextPermissions;
399 { 402
400 itemCopy.BasePermissions &= item.NextPermissions; 403 // Need slam bit on xfer
401 itemCopy.CurrentPermissions = itemCopy.BasePermissions; 404 itemCopy.CurrentPermissions |= 8;
402 itemCopy.CurrentPermissions |= 8;
403 }
404 405
405 itemCopy.NextPermissions = item.NextPermissions; 406 itemCopy.NextPermissions = item.NextPermissions;
406 itemCopy.EveryOnePermissions = item.EveryOnePermissions & item.NextPermissions; 407
407 itemCopy.GroupPermissions = item.GroupPermissions & item.NextPermissions; 408 itemCopy.EveryOnePermissions = 0;
409 itemCopy.GroupPermissions = 0;
408 } 410 }
409 else 411 else
410 { 412 {
@@ -895,12 +897,12 @@ namespace OpenSim.Region.Framework.Scenes
895 897
896 if ((part.OwnerID != destAgent) && Permissions.PropagatePermissions()) 898 if ((part.OwnerID != destAgent) && Permissions.PropagatePermissions())
897 { 899 {
900 agentItem.BasePermissions = taskItem.BasePermissions & taskItem.NextPermissions;
898 if (taskItem.InvType == (int)InventoryType.Object) 901 if (taskItem.InvType == (int)InventoryType.Object)
899 agentItem.BasePermissions = taskItem.BasePermissions & ((taskItem.CurrentPermissions & 7) << 13); 902 agentItem.CurrentPermissions = agentItem.BasePermissions & ((taskItem.CurrentPermissions & 7) << 13);
900 else 903 agentItem.CurrentPermissions = agentItem.BasePermissions ;
901 agentItem.BasePermissions = taskItem.BasePermissions; 904
902 agentItem.BasePermissions &= taskItem.NextPermissions; 905 agentItem.CurrentPermissions |= 8;
903 agentItem.CurrentPermissions = agentItem.BasePermissions | 8;
904 agentItem.NextPermissions = taskItem.NextPermissions; 906 agentItem.NextPermissions = taskItem.NextPermissions;
905 agentItem.EveryOnePermissions = taskItem.EveryonePermissions & taskItem.NextPermissions; 907 agentItem.EveryOnePermissions = taskItem.EveryonePermissions & taskItem.NextPermissions;
906 agentItem.GroupPermissions = taskItem.GroupPermissions & taskItem.NextPermissions; 908 agentItem.GroupPermissions = taskItem.GroupPermissions & taskItem.NextPermissions;