do not crash invoice if wellknown metadata keys used with different e… (#2448)

* do not crash invoice if wellknown metadata keys used with different expected types

* fix

* add bits from alt PR
This commit is contained in:
Andrew Camilleri
2021-04-28 09:49:10 +02:00
committed by GitHub
parent 5fe3c1c61f
commit 4e1b18e2bb
4 changed files with 131 additions and 65 deletions

View File

@@ -903,21 +903,20 @@ namespace BTCPayServer.Controllers
var jObject = JObject.Parse(posData);
foreach (var item in jObject)
{
switch (item.Value.Type)
{
case JTokenType.Array:
var items = item.Value.AsEnumerable().ToList();
for (var i = 0; i < items.Count; i++)
{
result.Add($"{item.Key}[{i}]", ParsePosData(items[i].ToString()));
result.TryAdd($"{item.Key}[{i}]", ParsePosData(items[i].ToString()));
}
break;
case JTokenType.Object:
result.Add(item.Key, ParsePosData(item.Value.ToString()));
result.TryAdd(item.Key, ParsePosData(item.Value.ToString()));
break;
default:
result.Add(item.Key, item.Value.ToString());
result.TryAdd(item.Key, item.Value.ToString());
break;
}
@@ -925,7 +924,7 @@ namespace BTCPayServer.Controllers
}
catch
{
result.Add(string.Empty, posData);
result.TryAdd(string.Empty, posData);
}
return result;
}