From 0631151e08174fffbc5bf3f646ef32e16e2c5145 Mon Sep 17 00:00:00 2001 From: Teravus Ovares Date: Fri, 28 Dec 2007 23:19:03 +0000 Subject: * Patch from Melanie provides Util.CleanString and uses it on the prim name and description. Thanks Melanie. --- OpenSim/Framework/Util.cs | 33 ++++++++++++++++++---- OpenSim/Region/Environment/Scenes/InnerScene.cs | 4 +-- .../Region/Environment/Scenes/SceneObjectGroup.cs | 1 - 3 files changed, 30 insertions(+), 8 deletions(-) diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs index e6512c2..08b3a9d 100644 --- a/OpenSim/Framework/Util.cs +++ b/OpenSim/Framework/Util.cs @@ -222,10 +222,7 @@ namespace OpenSim.Framework output.Append(": "); } - if (bytes[bytes.Length - 1] == 0x00) - output.Append(UTF8Encoding.UTF8.GetString(bytes, 0, bytes.Length - 1)); - else - output.Append(UTF8Encoding.UTF8.GetString(bytes)); + output.Append(CleanString(UTF8Encoding.UTF8.GetString(bytes, 0, bytes.Length - 1))); } else { @@ -406,5 +403,31 @@ namespace OpenSim.Framework { return lluuid.UUID.ToString("n"); } + + public static string CleanString(string input) + { + if(input.Length == 0) + return input; + + int clip=input.Length; + + // Test for ++ string terminator + int pos=input.IndexOf("\0"); + if(pos != -1 && pos < clip) + clip=pos; + + // Test for CR + pos=input.IndexOf("\r"); + if(pos != -1 && pos < clip) + clip=pos; + + // Test for LF + pos=input.IndexOf("\n"); + if(pos != -1 && pos < clip) + clip=pos; + + // Truncate string before first end-of-line character found + return input.Substring(0, clip); + } } -} \ No newline at end of file +} diff --git a/OpenSim/Region/Environment/Scenes/InnerScene.cs b/OpenSim/Region/Environment/Scenes/InnerScene.cs index 5ad5646..794cdae 100644 --- a/OpenSim/Region/Environment/Scenes/InnerScene.cs +++ b/OpenSim/Region/Environment/Scenes/InnerScene.cs @@ -749,7 +749,7 @@ namespace OpenSim.Region.Environment.Scenes { if (PermissionsMngr.CanEditObject(remoteClient.AgentId, group.UUID)) { - group.SetPartName(name, primLocalID); + group.SetPartName(Util.CleanString(name), primLocalID); } } } @@ -766,7 +766,7 @@ namespace OpenSim.Region.Environment.Scenes { if (PermissionsMngr.CanEditObject(remoteClient.AgentId, group.UUID)) { - group.SetPartDescription(description.Replace("\0",""), primLocalID); + group.SetPartDescription(Util.CleanString(description), primLocalID); } } } diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs index d3f5454..0f8ce0b 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs @@ -1086,7 +1086,6 @@ namespace OpenSim.Region.Environment.Scenes /// public void SetPartName(string name, uint localID) { - name = name.Remove(name.Length - 1, 1); SceneObjectPart part = GetChildPart(localID); if (part != null) { -- cgit v1.1