From 3185db7f94fca86bab72225703584a352cd4cee9 Mon Sep 17 00:00:00 2001 From: Oren Hurvitz Date: Wed, 16 Apr 2014 13:02:03 +0300 Subject: Fixed: if a user belonged to the parcel's group then he was allowed to rez object in the parcel even if the flag "Create Objects by Group" was disabled --- .../World/Permissions/PermissionsModule.cs | 32 +++++++++++----------- 1 file changed, 16 insertions(+), 16 deletions(-) (limited to 'OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs') diff --git a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs index 89e2b55..e961922 100644 --- a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs +++ b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs @@ -1452,29 +1452,29 @@ namespace OpenSim.Region.CoreModules.World.Permissions DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); if (m_bypassPermissions) return m_bypassPermissionsValue; - bool permission = false; - // m_log.DebugFormat("[PERMISSIONS MODULE]: Checking rez object at {0} in {1}", objectPosition, m_scene.Name); - ILandObject land = m_scene.LandChannel.GetLandObject(objectPosition.X, objectPosition.Y); - if (land == null) return false; - - if ((land.LandData.Flags & ((int)ParcelFlags.CreateObjects)) == - (int)ParcelFlags.CreateObjects) - permission = true; + ILandObject parcel = m_scene.LandChannel.GetLandObject(objectPosition.X, objectPosition.Y); + if (parcel == null) + return false; - if (IsAdministrator(owner)) + if ((parcel.LandData.Flags & (uint)ParcelFlags.CreateObjects) != 0) { - permission = true; + return true; } - - // Powers are zero, because GroupPowers.AllowRez is not a precondition for rezzing objects - if (GenericParcelPermission(owner, objectPosition, 0)) + else if ((owner == parcel.LandData.OwnerID) || IsAdministrator(owner)) { - permission = true; + return true; + } + else if (((parcel.LandData.Flags & (uint)ParcelFlags.CreateGroupObjects) != 0) + && (parcel.LandData.GroupID != UUID.Zero) && IsGroupMember(parcel.LandData.GroupID, owner, 0)) + { + return true; + } + else + { + return false; } - - return permission; } private bool CanRunConsoleCommand(UUID user, Scene requestFromScene) -- cgit v1.1