From 874808522fba174ddbd5372599b90fb2f72108f2 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Fri, 18 Dec 2020 13:11:55 +0000 Subject: [PATCH] also check the url on llHTTPRequest before doing anything with garbage --- .../Shared/Api/Implementation/LSL_Api.cs | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 02c0d3878e..82b8433b2b 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -13572,7 +13572,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api public LSL_Integer llModPow(int a, int b, int c) { m_host.AddScriptLPS(1); - Math.DivRem(Convert.ToInt64(Math.Pow(a, b)), c, out long tmp); + Math.DivRem((long)Math.Pow(a, b), c, out long tmp); ScriptSleep(m_sleepMsOnModPow); return (int)tmp; } @@ -14259,11 +14259,27 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api m_host.AddScriptLPS(1); IHttpRequestModule httpScriptMod = m_ScriptEngine.World.RequestModuleInterface(); if(httpScriptMod == null) - return ""; + return string.Empty; if(!httpScriptMod.CheckThrottle(m_host.LocalId, m_host.OwnerID)) return ScriptBaseClass.NULL_KEY; + try + { + Uri m_checkuri = new Uri(url); + if (m_checkuri.Scheme != Uri.UriSchemeHttp && m_checkuri.Scheme != Uri.UriSchemeHttps) + { + Error("llHTTPRequest", "Invalid url schema"); + ScriptSleep(200); + return string.Empty; + } + } + catch + { + Error("llHTTPRequest", "Invalid url"); + ScriptSleep(200); + return string.Empty; + } List param = new List(); bool ok; int nCustomHeaders = 0;