diff options
Diffstat (limited to 'OpenSim/Region/Framework')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index ca1e0a8..d55311e 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | |||
@@ -1738,8 +1738,25 @@ namespace OpenSim.Region.Framework.Scenes | |||
1738 | // Check if we're allowed to mess with permissions | 1738 | // Check if we're allowed to mess with permissions |
1739 | if (!Permissions.IsGod(remoteClient.AgentId)) // Not a god | 1739 | if (!Permissions.IsGod(remoteClient.AgentId)) // Not a god |
1740 | { | 1740 | { |
1741 | bool noChange; | ||
1741 | if (remoteClient.AgentId != part.OwnerID) // Not owner | 1742 | if (remoteClient.AgentId != part.OwnerID) // Not owner |
1742 | { | 1743 | { |
1744 | noChange = true; | ||
1745 | if(itemInfo.OwnerID == UUID.Zero && itemInfo.GroupID != UUID.Zero) | ||
1746 | { | ||
1747 | if(remoteClient.IsGroupMember(itemInfo.GroupID)) | ||
1748 | { | ||
1749 | ulong powers = remoteClient.GetGroupPowers(itemInfo.GroupID); | ||
1750 | if((powers & (ulong)GroupPowers.ObjectManipulate) != 0) | ||
1751 | noChange = false; | ||
1752 | } | ||
1753 | } | ||
1754 | } | ||
1755 | else | ||
1756 | noChange = false; | ||
1757 | |||
1758 | if(noChange) | ||
1759 | { | ||
1743 | // Friends and group members can't change any perms | 1760 | // Friends and group members can't change any perms |
1744 | itemInfo.BasePermissions = currentItem.BasePermissions; | 1761 | itemInfo.BasePermissions = currentItem.BasePermissions; |
1745 | itemInfo.EveryonePermissions = currentItem.EveryonePermissions; | 1762 | itemInfo.EveryonePermissions = currentItem.EveryonePermissions; |