aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/World
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/CoreModules/World')
-rw-r--r--OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs32
1 files changed, 32 insertions, 0 deletions
diff --git a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs
index 6beb6d3..33b9288 100644
--- a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs
+++ b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs
@@ -1530,6 +1530,38 @@ namespace OpenSim.Region.CoreModules.World.Permissions
1530 DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); 1530 DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name);
1531 if (m_bypassPermissions) return m_bypassPermissionsValue; 1531 if (m_bypassPermissions) return m_bypassPermissionsValue;
1532 1532
1533 long powers = 0;
1534 if (parcel.landData.GroupID != UUID.Zero)
1535 client.GetGroupPowers(parcel.landData.GroupID);
1536
1537 switch (type)
1538 {
1539 case (uint)ObjectReturnType.Owner:
1540 // Don't let group members return owner's objects, ever
1541 //
1542 if (parcel.landData.IsGroupOwned)
1543 {
1544 if ((powers & (long)GroupPowers.ReturnGroupOwned) != 0)
1545 return true;
1546 }
1547 else
1548 {
1549 if (parcel.landData.OwnerID != client.AgentId)
1550 return false;
1551 }
1552 break;
1553 case (uint)ObjectReturnType.Group:
1554 if ((powers & (long)GroupPowers.ReturnGroupSet) != 0)
1555 return true;
1556 break;
1557 case (uint)ObjectReturnType.Other:
1558 if ((powers & (long)GroupPowers.ReturnNonGroup) != 0)
1559 return true;
1560 break;
1561 case (uint)ObjectReturnType.List:
1562 break;
1563 }
1564
1533 return GenericParcelPermission(client.AgentId, parcel); 1565 return GenericParcelPermission(client.AgentId, parcel);
1534 } 1566 }
1535 } 1567 }