mantis 6738: change parsing of the HTTP_CUSTOM_HEADER parameter and ignore entries in excess of 8 on the request
parent
2b8cdb2a75
commit
ce3af94a69
|
@ -223,20 +223,16 @@ namespace OpenSim.Region.CoreModules.Scripting.HttpRequest
|
||||||
if (parms.Length - i < 2)
|
if (parms.Length - i < 2)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
//Have we reached the end of the list of headers?
|
|
||||||
//End is marked by a string with a single digit.
|
|
||||||
//We already know we have at least one parameter
|
|
||||||
//so it is safe to do this check at top of loop.
|
|
||||||
if (Char.IsDigit(parms[i][0]))
|
|
||||||
break;
|
|
||||||
|
|
||||||
if (htc.HttpCustomHeaders == null)
|
if (htc.HttpCustomHeaders == null)
|
||||||
htc.HttpCustomHeaders = new List<string>();
|
htc.HttpCustomHeaders = new List<string>();
|
||||||
|
|
||||||
htc.HttpCustomHeaders.Add(parms[i]);
|
htc.HttpCustomHeaders.Add(parms[i]);
|
||||||
htc.HttpCustomHeaders.Add(parms[i+1]);
|
htc.HttpCustomHeaders.Add(parms[i+1]);
|
||||||
|
int nexti = i + 2;
|
||||||
|
if (nexti >= parms.Length || Char.IsDigit(parms[nexti][0]))
|
||||||
|
break;
|
||||||
|
|
||||||
i += 2;
|
i = nexti;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -13405,6 +13405,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
List<string> param = new List<string>();
|
List<string> param = new List<string>();
|
||||||
bool ok;
|
bool ok;
|
||||||
Int32 flag;
|
Int32 flag;
|
||||||
|
int nCustomHeaders = 0;
|
||||||
|
|
||||||
for (int i = 0; i < parameters.Data.Length; i += 2)
|
for (int i = 0; i < parameters.Data.Length; i += 2)
|
||||||
{
|
{
|
||||||
|
@ -13431,6 +13432,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
//Second Life documentation for llHTTPRequest.
|
//Second Life documentation for llHTTPRequest.
|
||||||
for (int count = 1; count <= 8; ++count)
|
for (int count = 1; count <= 8; ++count)
|
||||||
{
|
{
|
||||||
|
if(nCustomHeaders >= 8)
|
||||||
|
{
|
||||||
|
Error("llHTTPRequest", "Max number of custom headers is 8, excess ignored");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
//Enough parameters remaining for (another) header?
|
//Enough parameters remaining for (another) header?
|
||||||
if (parameters.Data.Length - i < 2)
|
if (parameters.Data.Length - i < 2)
|
||||||
{
|
{
|
||||||
|
@ -13445,15 +13452,15 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
|
|
||||||
param.Add(parameters.Data[i].ToString());
|
param.Add(parameters.Data[i].ToString());
|
||||||
param.Add(parameters.Data[i+1].ToString());
|
param.Add(parameters.Data[i+1].ToString());
|
||||||
|
nCustomHeaders++;
|
||||||
|
|
||||||
//Have we reached the end of the list of headers?
|
//Have we reached the end of the list of headers?
|
||||||
//End is marked by a string with a single digit.
|
//End is marked by a string with a single digit.
|
||||||
if (i+2 >= parameters.Data.Length ||
|
if (i + 2 >= parameters.Data.Length ||
|
||||||
Char.IsDigit(parameters.Data[i].ToString()[0]))
|
Char.IsDigit(parameters.Data[i + 2].ToString()[0]))
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
i += 2;
|
i += 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue