From 06334273dc799b4f6c39c9fb82731daafd7d01c4 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Sun, 26 Feb 2023 11:18:54 +0900 Subject: [PATCH] Fix crashing on unserialize of old data --- BTCPayServer/Data/IHasBlobExtensions.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/BTCPayServer/Data/IHasBlobExtensions.cs b/BTCPayServer/Data/IHasBlobExtensions.cs index 214b34c2a..241007d4e 100644 --- a/BTCPayServer/Data/IHasBlobExtensions.cs +++ b/BTCPayServer/Data/IHasBlobExtensions.cs @@ -3,6 +3,7 @@ using System; using System.Collections; using System.Linq; using System.Reflection.Metadata; +using System.Text; using NBXplorer; using Newtonsoft.Json; using Newtonsoft.Json.Linq; @@ -62,7 +63,14 @@ namespace BTCPayServer.Data return JObject.Parse(data.Blob2).ToObject(JsonSerializer.CreateDefault(settings ?? DefaultSerializer)); #pragma warning disable CS0618 // Type or member is obsolete if (data.Blob is not null && data.Blob.Length != 0) - return JObject.Parse(ZipUtils.Unzip(data.Blob)).ToObject(JsonSerializer.CreateDefault(settings ?? DefaultSerializer)); + { + string str; + if (data.Blob[0] == 0x7b) + str = Encoding.UTF8.GetString(data.Blob); + else + str = ZipUtils.Unzip(data.Blob); + return JObject.Parse(str).ToObject(JsonSerializer.CreateDefault(settings ?? DefaultSerializer)); + } #pragma warning restore CS0618 // Type or member is obsolete return default; }