From bdd1017d0d553bf0559eb9b59a9b6dbda1d5ca71 Mon Sep 17 00:00:00 2001
From: Ardy Lay <none@none>
Date: Mon, 30 Aug 2010 14:18:48 -0500
Subject: [PATCH] [mq]: VWR-19499-AppUriChatLimit

---
 doc/contributions.txt             |  2 ++
 indra/newview/llchatbar.cpp       | 29 +++++++++++++++++++++++-----
 indra/newview/llnearbychatbar.cpp | 32 +++++++++++++++++++++++--------
 3 files changed, 50 insertions(+), 13 deletions(-)

diff --git a/doc/contributions.txt b/doc/contributions.txt
index fa2737a479..6edb727682 100644
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -120,6 +120,8 @@ Angus Boyd
 	VWR-592
 Ann Congrejo
 	CT-193
+Ardy Lay
+	VWR-19499
 Argent Stonecutter
 	VWR-68
 Armin Weatherwax
diff --git a/indra/newview/llchatbar.cpp b/indra/newview/llchatbar.cpp
index 967db21244..7d82ec3a71 100644
--- a/indra/newview/llchatbar.cpp
+++ b/indra/newview/llchatbar.cpp
@@ -673,11 +673,30 @@ public:
 	bool handle(const LLSD& tokens, const LLSD& query_map,
 				LLMediaCtrl* web)
 	{
-		if (tokens.size() < 2) return false;
-		S32 channel = tokens[0].asInteger();
-		std::string mesg = tokens[1].asString();
-		send_chat_from_viewer(mesg, CHAT_TYPE_NORMAL, channel);
-		return true;
+		bool retval = false;
+		// Need at least 2 tokens to have a valid message.
+		if (tokens.size() < 2) 
+		{
+			retval = false;
+		}
+		else
+		{
+			S32 channel = tokens[0].asInteger();
+			// VWR-19499 Restrict function to chat channels greater than 0.
+			if ((channel > 0) && (channel < 2147483647))
+			{
+				retval = true;
+				// Say mesg on channel
+				std::string mesg = tokens[1].asString();
+				send_chat_from_viewer(mesg, CHAT_TYPE_NORMAL, channel);
+			}
+			else
+			{
+				retval = false;
+				// Tell us this is an unsupported SLurl.
+			}
+		}
+		return retval;
 	}
 };
 
diff --git a/indra/newview/llnearbychatbar.cpp b/indra/newview/llnearbychatbar.cpp
index 4f9845d704..43630c13fd 100644
--- a/indra/newview/llnearbychatbar.cpp
+++ b/indra/newview/llnearbychatbar.cpp
@@ -865,14 +865,30 @@ public:
 	bool handle(const LLSD& tokens, const LLSD& query_map,
 				LLMediaCtrl* web)
 	{
-		if (tokens.size() < 2) return false;
-		S32 channel = tokens[0].asInteger();
-
-		// Send unescaped message, see EXT-6353.
-		std::string unescaped_mesg (LLURI::unescape(tokens[1].asString()));
-
-		send_chat_from_viewer(unescaped_mesg, CHAT_TYPE_NORMAL, channel);
-		return true;
+		bool retval = false;
+		// Need at least 2 tokens to have a valid message.
+		if (tokens.size() < 2)
+		{
+			retval = false;
+		}
+		else
+		{
+			S32 channel = tokens[0].asInteger();
+			// VWR-19499 Restrict function to chat channels greater than 0.
+			if ((channel > 0) && (channel < 2147483647))
+			{
+				retval = true;
+				// Send unescaped message, see EXT-6353.
+				std::string unescaped_mesg (LLURI::unescape(tokens[1].asString()));
+				send_chat_from_viewer(unescaped_mesg, CHAT_TYPE_NORMAL, channel);
+			}
+			else
+			{
+				retval = false;
+				// Tell us this is an unsupported SLurl.
+			}
+		}
+		return retval;
 	}
 };
 
-- 
GitLab