From c0b83b626e14c60ba3084076bdfcc6852517e547 Mon Sep 17 00:00:00 2001 From: Dave Allie Date: Mon, 29 Dec 2025 01:29:41 +1000 Subject: [PATCH] Use a JSON filter to avoid crashes when checking for updates (#141) ## Summary * The JSON release data from Github contains the entire release description which can be very large * The 0.9.0 release was especially bad * Use a JSON filter to avoid deserializing anything but the necessary fields ## Additional Context * https://arduinojson.org/v7/how-to/deserialize-a-very-large-document/#filtering * Fixes https://github.com/daveallie/crosspoint-reader/issues/124 --- src/network/OtaUpdater.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/network/OtaUpdater.cpp b/src/network/OtaUpdater.cpp index 249c457..7558305 100644 --- a/src/network/OtaUpdater.cpp +++ b/src/network/OtaUpdater.cpp @@ -27,7 +27,12 @@ OtaUpdater::OtaUpdaterError OtaUpdater::checkForUpdate() { } JsonDocument doc; - const DeserializationError error = deserializeJson(doc, *client); + JsonDocument filter; + filter["tag_name"] = true; + filter["assets"][0]["name"] = true; + filter["assets"][0]["browser_download_url"] = true; + filter["assets"][0]["size"] = true; + const DeserializationError error = deserializeJson(doc, *client, DeserializationOption::Filter(filter)); http.end(); if (error) { Serial.printf("[%lu] [OTA] JSON parse failed: %s\n", millis(), error.c_str());