aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework
diff options
context:
space:
mode:
authorMelanie Thielker2010-07-20 14:45:46 +0200
committerMelanie2010-07-20 21:01:46 +0100
commit120d7014fdd021f57a5849e8f9941a6ce1180e54 (patch)
tree6bc1b47927f00ed2cda66ce3a515b508e01006be /OpenSim/Region/Framework
parentprevent hacked viewers from being able to delete arbitrary items from any (diff)
downloadopensim-SC-120d7014fdd021f57a5849e8f9941a6ce1180e54.zip
opensim-SC-120d7014fdd021f57a5849e8f9941a6ce1180e54.tar.gz
opensim-SC-120d7014fdd021f57a5849e8f9941a6ce1180e54.tar.bz2
opensim-SC-120d7014fdd021f57a5849e8f9941a6ce1180e54.tar.xz
When a god uses mass permission setting, the V bit is cleared from next
perms, rendering the item unmoveable for the next owenr. Make god mods conform to the rules, too.
Diffstat (limited to 'OpenSim/Region/Framework')
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.Inventory.cs11
1 files changed, 7 insertions, 4 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index 953dd56..01edf51 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -1364,6 +1364,9 @@ namespace OpenSim.Region.Framework.Scenes
1364 remoteClient.SendAgentAlertMessage("Item saved", false); 1364 remoteClient.SendAgentAlertMessage("Item saved", false);
1365 } 1365 }
1366 1366
1367 // Base ALWAYS has move
1368 currentItem.BasePermissions |= (uint)PermissionMask.Move;
1369
1367 // Check if we're allowed to mess with permissions 1370 // Check if we're allowed to mess with permissions
1368 if (!Permissions.IsGod(remoteClient.AgentId)) // Not a god 1371 if (!Permissions.IsGod(remoteClient.AgentId)) // Not a god
1369 { 1372 {
@@ -1380,18 +1383,18 @@ namespace OpenSim.Region.Framework.Scenes
1380 { 1383 {
1381 // Owner can't change base, and can change other 1384 // Owner can't change base, and can change other
1382 // only up to base 1385 // only up to base
1383 // Base ALWAYS has move
1384 currentItem.BasePermissions |= (uint)PermissionMask.Move;
1385 itemInfo.BasePermissions = currentItem.BasePermissions; 1386 itemInfo.BasePermissions = currentItem.BasePermissions;
1386 itemInfo.EveryonePermissions &= currentItem.BasePermissions; 1387 itemInfo.EveryonePermissions &= currentItem.BasePermissions;
1387 itemInfo.GroupPermissions &= currentItem.BasePermissions; 1388 itemInfo.GroupPermissions &= currentItem.BasePermissions;
1388 itemInfo.CurrentPermissions &= currentItem.BasePermissions; 1389 itemInfo.CurrentPermissions &= currentItem.BasePermissions;
1389 itemInfo.NextPermissions &= currentItem.BasePermissions; 1390 itemInfo.NextPermissions &= currentItem.BasePermissions;
1390 // Next ALWAYS has move
1391 itemInfo.NextPermissions |= (uint)PermissionMask.Move;
1392 } 1391 }
1393 1392
1394 } 1393 }
1394
1395 // Next ALWAYS has move
1396 itemInfo.NextPermissions |= (uint)PermissionMask.Move;
1397
1395 if (part.Inventory.UpdateInventoryItem(itemInfo)) 1398 if (part.Inventory.UpdateInventoryItem(itemInfo))
1396 { 1399 {
1397 part.GetProperties(remoteClient); 1400 part.GetProperties(remoteClient);