From 4cd790731418c9fbe412871c0cf48d8fd4d5cbc8 Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Thu, 6 Nov 2008 14:37:41 +0000 Subject: Change threat level of osMakeNotecard to High because of it's griefing potential (asset bloat, asset server DOS due to no enforced delay) Formatting cleanup. Change default permissions on the notecard to not include "anyone can copy" and "anyone can move", as they are meaningless on non-prim items. --- .../Shared/Api/Implementation/OSSL_Api.cs | 103 +++++++++++---------- 1 file changed, 53 insertions(+), 50 deletions(-) (limited to 'OpenSim') diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs index bd14a13..d5225f7 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs @@ -962,55 +962,58 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api } - public void osMakeNotecard(string notecardName, LSL_Types.list contents) - { - CheckThreatLevel(ThreatLevel.None, "osMakeNotecard"); - m_host.AddScriptLPS(1); - - // Create new asset - AssetBase asset = new AssetBase(); - asset.Name = notecardName; - asset.Description = "Script Generated Notecard"; - asset.Type = 7; - asset.FullID = UUID.Random(); - string notecardData = ""; - - for (int i = 0; i < contents.Length; i++) { - notecardData += contents.GetLSLStringItem(i) + "\n"; - } - - int textLength = notecardData.Length; - notecardData = "Linden text version 2\n{\nLLEmbeddedItems version 1\n{\ncount 0\n}\nText length " - + textLength.ToString() + "\n" + notecardData + "}\n"; - - asset.Data = Encoding.ASCII.GetBytes(notecardData); - World.AssetCache.AddAsset(asset); - - // Create Task Entry - TaskInventoryItem taskItem=new TaskInventoryItem(); - - taskItem.ResetIDs(m_host.UUID); - taskItem.ParentID = m_host.UUID; - taskItem.CreationDate = (uint)Util.UnixTimeSinceEpoch(); - taskItem.Name = asset.Name; - taskItem.Description = asset.Description; - taskItem.Type = 7; - taskItem.InvType = 7; - taskItem.OwnerID = m_host.OwnerID; - taskItem.CreatorID = m_host.OwnerID; - taskItem.BasePermissions = (uint)PermissionMask.All; - taskItem.CurrentPermissions = (uint)PermissionMask.All; - taskItem.EveryonePermissions = (uint)PermissionMask.All; - taskItem.NextPermissions = (uint)PermissionMask.All; - taskItem.GroupID = m_host.GroupID; - taskItem.GroupPermissions = 0; - taskItem.Flags = 0; - taskItem.PermsGranter = UUID.Zero; - taskItem.PermsMask = 0; - taskItem.AssetID = asset.FullID; - - m_host.AddInventoryItem(taskItem); - - } + // This needs ThreatLevel high. It is an excellent griefer tool, + // In a loop, it can cause asset bloat and DOS levels of asset + // writes. + // + public void osMakeNotecard(string notecardName, LSL_Types.list contents) + { + CheckThreatLevel(ThreatLevel.High, "osMakeNotecard"); + m_host.AddScriptLPS(1); + + // Create new asset + AssetBase asset = new AssetBase(); + asset.Name = notecardName; + asset.Description = "Script Generated Notecard"; + asset.Type = 7; + asset.FullID = UUID.Random(); + string notecardData = ""; + + for (int i = 0; i < contents.Length; i++) { + notecardData += contents.GetLSLStringItem(i) + "\n"; + } + + int textLength = notecardData.Length; + notecardData = "Linden text version 2\n{\nLLEmbeddedItems version 1\n{\ncount 0\n}\nText length " + + textLength.ToString() + "\n" + notecardData + "}\n"; + + asset.Data = Encoding.ASCII.GetBytes(notecardData); + World.AssetCache.AddAsset(asset); + + // Create Task Entry + TaskInventoryItem taskItem=new TaskInventoryItem(); + + taskItem.ResetIDs(m_host.UUID); + taskItem.ParentID = m_host.UUID; + taskItem.CreationDate = (uint)Util.UnixTimeSinceEpoch(); + taskItem.Name = asset.Name; + taskItem.Description = asset.Description; + taskItem.Type = 7; + taskItem.InvType = 7; + taskItem.OwnerID = m_host.OwnerID; + taskItem.CreatorID = m_host.OwnerID; + taskItem.BasePermissions = (uint)PermissionMask.All; + taskItem.CurrentPermissions = (uint)PermissionMask.All; + taskItem.EveryonePermissions = 0; + taskItem.NextPermissions = (uint)PermissionMask.All; + taskItem.GroupID = m_host.GroupID; + taskItem.GroupPermissions = 0; + taskItem.Flags = 0; + taskItem.PermsGranter = UUID.Zero; + taskItem.PermsMask = 0; + taskItem.AssetID = asset.FullID; + + m_host.AddInventoryItem(taskItem); + } } } -- cgit v1.1