aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework
diff options
context:
space:
mode:
authorMelanie Thielker2010-07-20 14:45:46 +0200
committerDiva Canto2010-07-20 14:53:13 -0700
commit3d82e79d1ce4de0cd3ccd3d462bbc1426316a616 (patch)
tree97b5f400387abd0c417d0ea1830ec91d47f0e1ae /OpenSim/Region/Framework
parentprevent hacked viewers from being able to delete arbitrary items from any (diff)
downloadopensim-SC-3d82e79d1ce4de0cd3ccd3d462bbc1426316a616.zip
opensim-SC-3d82e79d1ce4de0cd3ccd3d462bbc1426316a616.tar.gz
opensim-SC-3d82e79d1ce4de0cd3ccd3d462bbc1426316a616.tar.bz2
opensim-SC-3d82e79d1ce4de0cd3ccd3d462bbc1426316a616.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 8ec3b81..d79a7f1 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -1363,6 +1363,9 @@ namespace OpenSim.Region.Framework.Scenes
1363 remoteClient.SendAgentAlertMessage("Item saved", false); 1363 remoteClient.SendAgentAlertMessage("Item saved", false);
1364 } 1364 }
1365 1365
1366 // Base ALWAYS has move
1367 currentItem.BasePermissions |= (uint)PermissionMask.Move;
1368
1366 // Check if we're allowed to mess with permissions 1369 // Check if we're allowed to mess with permissions
1367 if (!Permissions.IsGod(remoteClient.AgentId)) // Not a god 1370 if (!Permissions.IsGod(remoteClient.AgentId)) // Not a god
1368 { 1371 {
@@ -1379,18 +1382,18 @@ namespace OpenSim.Region.Framework.Scenes
1379 { 1382 {
1380 // Owner can't change base, and can change other 1383 // Owner can't change base, and can change other
1381 // only up to base 1384 // only up to base
1382 // Base ALWAYS has move
1383 currentItem.BasePermissions |= (uint)PermissionMask.Move;
1384 itemInfo.BasePermissions = currentItem.BasePermissions; 1385 itemInfo.BasePermissions = currentItem.BasePermissions;
1385 itemInfo.EveryonePermissions &= currentItem.BasePermissions; 1386 itemInfo.EveryonePermissions &= currentItem.BasePermissions;
1386 itemInfo.GroupPermissions &= currentItem.BasePermissions; 1387 itemInfo.GroupPermissions &= currentItem.BasePermissions;
1387 itemInfo.CurrentPermissions &= currentItem.BasePermissions; 1388 itemInfo.CurrentPermissions &= currentItem.BasePermissions;
1388 itemInfo.NextPermissions &= currentItem.BasePermissions; 1389 itemInfo.NextPermissions &= currentItem.BasePermissions;
1389 // Next ALWAYS has move
1390 itemInfo.NextPermissions |= (uint)PermissionMask.Move;
1391 } 1390 }
1392 1391
1393 } 1392 }
1393
1394 // Next ALWAYS has move
1395 itemInfo.NextPermissions |= (uint)PermissionMask.Move;
1396
1394 if (part.Inventory.UpdateInventoryItem(itemInfo)) 1397 if (part.Inventory.UpdateInventoryItem(itemInfo))
1395 { 1398 {
1396 part.GetProperties(remoteClient); 1399 part.GetProperties(remoteClient);