aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
authorMelanie2010-12-12 21:24:00 +0100
committerMelanie2010-12-12 21:24:00 +0100
commit63353a0687ddb8e530d95ae197e99c1408f057e6 (patch)
tree7e6d4f810acae3a8afe98ec547ac1b084afa556b /OpenSim/Region
parentApply the useful part of diva's patch that was skipped (diff)
downloadopensim-SC-63353a0687ddb8e530d95ae197e99c1408f057e6.zip
opensim-SC-63353a0687ddb8e530d95ae197e99c1408f057e6.tar.gz
opensim-SC-63353a0687ddb8e530d95ae197e99c1408f057e6.tar.bz2
opensim-SC-63353a0687ddb8e530d95ae197e99c1408f057e6.tar.xz
Fix a perms issue when wearing an object from inworld
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.Inventory.cs28
1 files changed, 18 insertions, 10 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index 52e2e83..a1f1ea5 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -1902,21 +1902,29 @@ namespace OpenSim.Region.Framework.Scenes
1902 else // oopsies 1902 else // oopsies
1903 item.Folder = UUID.Zero; 1903 item.Folder = UUID.Zero;
1904 1904
1905 // Set up base perms properly
1906 uint permsBase = (uint)(PermissionMask.Move | PermissionMask.Copy | PermissionMask.Transfer | PermissionMask.Modify);
1907 permsBase &= grp.RootPart.BaseMask;
1908 permsBase |= (uint)PermissionMask.Move;
1909
1910 // Make sure we don't lock it
1911 grp.RootPart.NextOwnerMask |= (uint)PermissionMask.Move;
1912
1905 if ((remoteClient.AgentId != grp.RootPart.OwnerID) && Permissions.PropagatePermissions()) 1913 if ((remoteClient.AgentId != grp.RootPart.OwnerID) && Permissions.PropagatePermissions())
1906 { 1914 {
1907 item.BasePermissions = grp.RootPart.NextOwnerMask; 1915 item.BasePermissions = permsBase & grp.RootPart.NextOwnerMask;
1908 item.CurrentPermissions = grp.RootPart.NextOwnerMask; 1916 item.CurrentPermissions = permsBase & grp.RootPart.NextOwnerMask;
1909 item.NextPermissions = grp.RootPart.NextOwnerMask; 1917 item.NextPermissions = permsBase & grp.RootPart.NextOwnerMask;
1910 item.EveryOnePermissions = grp.RootPart.EveryoneMask & grp.RootPart.NextOwnerMask; 1918 item.EveryOnePermissions = permsBase & grp.RootPart.EveryoneMask & grp.RootPart.NextOwnerMask;
1911 item.GroupPermissions = grp.RootPart.GroupMask & grp.RootPart.NextOwnerMask; 1919 item.GroupPermissions = permsBase & grp.RootPart.GroupMask & grp.RootPart.NextOwnerMask;
1912 } 1920 }
1913 else 1921 else
1914 { 1922 {
1915 item.BasePermissions = grp.RootPart.BaseMask; 1923 item.BasePermissions = permsBase;
1916 item.CurrentPermissions = grp.RootPart.OwnerMask; 1924 item.CurrentPermissions = permsBase & grp.RootPart.OwnerMask;
1917 item.NextPermissions = grp.RootPart.NextOwnerMask; 1925 item.NextPermissions = permsBase & grp.RootPart.NextOwnerMask;
1918 item.EveryOnePermissions = grp.RootPart.EveryoneMask; 1926 item.EveryOnePermissions = permsBase & grp.RootPart.EveryoneMask;
1919 item.GroupPermissions = grp.RootPart.GroupMask; 1927 item.GroupPermissions = permsBase & grp.RootPart.GroupMask;
1920 } 1928 }
1921 item.CreationDate = Util.UnixTimeSinceEpoch(); 1929 item.CreationDate = Util.UnixTimeSinceEpoch();
1922 1930