Skip to content

Commit f1f16d8

Browse files
committed
Merge pull request Astn#60 from dawesc/master
When there were too many arguments you'd get an index out of bounds exception
2 parents b989274 + 1439d8f commit f1f16d8

2 files changed

Lines changed: 11 additions & 1 deletion

File tree

AustinHarris.JsonRpcTestN/Test.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1852,6 +1852,16 @@ public void TestPostProcessOnSession()
18521852
Assert.AreEqual(JObject.Parse(expectedResultAfterDestroy), JObject.Parse(result2.Result));
18531853
}
18541854

1855+
[Test()]
1856+
public void TestExtraParameters()
1857+
{
1858+
string request = @"{method:'ReturnsDateTime',params:{extra:'mytext'},id:1}";
1859+
var result = JsonRpcProcessor.Process(request);
1860+
result.Wait();
1861+
Assert.IsTrue(result.Result.Contains("error"));
1862+
Assert.IsTrue(result.Result.Contains("\"code\":-32602"));
1863+
}
1864+
18551865
private static void AssertJsonAreEqual(string expectedJson, string actualJson)
18561866
{
18571867
Newtonsoft.Json.Linq.JObject expected = (Newtonsoft.Json.Linq.JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(expectedJson);

Json-Rpc/Handler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ public JsonResponse Handle(JsonRequest Rpc, Object RpcContext = null, Action<Jso
261261
// pCount++;
262262
//parameters = new object[pCount];
263263
var asDict = jo as IDictionary<string, Newtonsoft.Json.Linq.JToken>;
264-
for (int i = 0; i < loopCt; i++)
264+
for (int i = 0; i < loopCt && i < metadata.parameters.Length; i++)
265265
{
266266
if (asDict.ContainsKey(metadata.parameters[i].Name) == false)
267267
{

0 commit comments

Comments
 (0)