aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs28
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.Inventory.cs10
2 files changed, 23 insertions, 15 deletions
diff --git a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs
index 573a22a..9d134ac 100644
--- a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs
+++ b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs
@@ -1780,10 +1780,28 @@ namespace OpenSim.Region.CoreModules.World.Permissions
1780 DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); 1780 DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name);
1781 if (m_bypassPermissions) return m_bypassPermissionsValue; 1781 if (m_bypassPermissions) return m_bypassPermissionsValue;
1782 1782
1783 if ((int)InventoryType.LSL == invType) 1783 SceneObjectPart part = scene.GetSceneObjectPart(objectID);
1784 if (m_allowedScriptCreators == UserSet.Administrators && !IsAdministrator(userID)) 1784 ScenePresence p = scene.GetScenePresence(userID);
1785 return false; 1785
1786 1786 if (part == null || p == null)
1787 return false;
1788
1789 if (!IsAdministrator(userID))
1790 {
1791 if (part.OwnerID != userID)
1792 {
1793 // Group permissions
1794 if ((part.GroupID == UUID.Zero) || (p.ControllingClient.GetGroupPowers(part.GroupID) == 0) || ((part.GroupMask & (uint)PermissionMask.Modify) == 0))
1795 return false;
1796 } else {
1797 if ((part.OwnerMask & (uint)PermissionMask.Modify) == 0)
1798 return false;
1799 }
1800 if ((int)InventoryType.LSL == invType)
1801 if (m_allowedScriptCreators == UserSet.Administrators)
1802 return false;
1803 }
1804
1787 return true; 1805 return true;
1788 } 1806 }
1789 1807
@@ -1980,4 +1998,4 @@ namespace OpenSim.Region.CoreModules.World.Permissions
1980 return false; 1998 return false;
1981 } 1999 }
1982 } 2000 }
1983} \ No newline at end of file 2001}
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index 8011154..d3a1447 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -1533,16 +1533,6 @@ namespace OpenSim.Region.Framework.Scenes
1533 if (part == null) 1533 if (part == null)
1534 return; 1534 return;
1535 1535
1536 if (part.OwnerID != remoteClient.AgentId)
1537 {
1538 // Group permissions
1539 if ((part.GroupID == UUID.Zero) || (remoteClient.GetGroupPowers(part.GroupID) == 0) || ((part.GroupMask & (uint)PermissionMask.Modify) == 0))
1540 return;
1541 } else {
1542 if ((part.OwnerMask & (uint)PermissionMask.Modify) == 0)
1543 return;
1544 }
1545
1546 if (!Permissions.CanCreateObjectInventory( 1536 if (!Permissions.CanCreateObjectInventory(
1547 itemBase.InvType, part.UUID, remoteClient.AgentId)) 1537 itemBase.InvType, part.UUID, remoteClient.AgentId))
1548 return; 1538 return;