aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.Inventory.cs21
1 files changed, 18 insertions, 3 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index 5f41f4b..8ec3b81 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -915,6 +915,9 @@ namespace OpenSim.Region.Framework.Scenes
915 SceneObjectGroup group = part.ParentGroup; 915 SceneObjectGroup group = part.ParentGroup;
916 if (group != null) 916 if (group != null)
917 { 917 {
918 if (!Permissions.CanEditObjectInventory(part.UUID, remoteClient.AgentId))
919 return;
920
918 TaskInventoryItem item = group.GetInventoryItem(localID, itemID); 921 TaskInventoryItem item = group.GetInventoryItem(localID, itemID);
919 if (item == null) 922 if (item == null)
920 return; 923 return;
@@ -1054,9 +1057,21 @@ namespace OpenSim.Region.Framework.Scenes
1054 return; 1057 return;
1055 } 1058 }
1056 1059
1057 // Only owner can copy 1060 TaskInventoryItem item = part.Inventory.GetInventoryItem(itemId);
1058 if (remoteClient.AgentId != taskItem.OwnerID) 1061 if ((item.CurrentPermissions & (uint)PermissionMask.Copy) == 0)
1059 return; 1062 {
1063 // If the item to be moved is no copy, we need to be able to
1064 // edit the prim.
1065 if (!Permissions.CanEditObjectInventory(part.UUID, remoteClient.AgentId))
1066 return;
1067 }
1068 else
1069 {
1070 // If the item is copiable, then we just need to have perms
1071 // on it. The delete check is a pure rights check
1072 if (!Permissions.CanDeleteObject(part.UUID, remoteClient.AgentId))
1073 return;
1074 }
1060 1075
1061 MoveTaskInventoryItem(remoteClient, folderId, part, itemId); 1076 MoveTaskInventoryItem(remoteClient, folderId, part, itemId);
1062 } 1077 }