From 9d5c1b3742770be0ffc15bc96c21db67c0ddead8 Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Fri, 23 Oct 2020 11:52:21 +0200 Subject: [PATCH] Added an assert to detect too large variants (issue #1414) --- src/ArduinoJson/Variant/VariantSlot.hpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/ArduinoJson/Variant/VariantSlot.hpp b/src/ArduinoJson/Variant/VariantSlot.hpp index af646709..9a62954d 100644 --- a/src/ArduinoJson/Variant/VariantSlot.hpp +++ b/src/ArduinoJson/Variant/VariantSlot.hpp @@ -6,6 +6,7 @@ #include // int8_t, int16_t +#include #include #include #include @@ -61,11 +62,19 @@ class VariantSlot { } void setNext(VariantSlot* slot) { + ARDUINOJSON_ASSERT(!slot || slot - this >= + numeric_limits::lowest()); + ARDUINOJSON_ASSERT(!slot || slot - this <= + numeric_limits::highest()); _next = VariantSlotDiff(slot ? slot - this : 0); } void setNextNotNull(VariantSlot* slot) { ARDUINOJSON_ASSERT(slot != 0); + ARDUINOJSON_ASSERT(slot - this >= + numeric_limits::lowest()); + ARDUINOJSON_ASSERT(slot - this <= + numeric_limits::highest()); _next = VariantSlotDiff(slot - this); }