diff options
author | Melanie Thielker | 2010-07-20 14:45:46 +0200 |
---|---|---|
committer | Diva Canto | 2010-07-20 14:53:13 -0700 |
commit | 3d82e79d1ce4de0cd3ccd3d462bbc1426316a616 (patch) | |
tree | 97b5f400387abd0c417d0ea1830ec91d47f0e1ae /OpenSim/Region/Framework | |
parent | prevent hacked viewers from being able to delete arbitrary items from any (diff) | |
download | opensim-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.cs | 11 |
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); |