From a652ac460bc859166f4007781df14a0cee701749 Mon Sep 17 00:00:00 2001 From: Dan Paulat Date: Thu, 4 Jan 2024 22:59:03 -0600 Subject: [PATCH] Avoid overflow when getting data level code or value --- wxdata/source/scwx/wsr88d/rpg/product_description_block.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wxdata/source/scwx/wsr88d/rpg/product_description_block.cpp b/wxdata/source/scwx/wsr88d/rpg/product_description_block.cpp index 5c4b82dd..f3c1e271 100644 --- a/wxdata/source/scwx/wsr88d/rpg/product_description_block.cpp +++ b/wxdata/source/scwx/wsr88d/rpg/product_description_block.cpp @@ -884,7 +884,7 @@ ProductDescriptionBlock::data_level_code(std::uint8_t level) const } // Different products use different scale/offset formulas - if (number_of_levels() <= 16 && p->productCode_ != 34) + if (number_of_levels() <= 16 && p->productCode_ != 34 && level < 16) { uint16_t th = data_level_threshold(level); if ((th & 0x8000u)) @@ -976,7 +976,7 @@ ProductDescriptionBlock::data_value(std::uint8_t level) const break; } } - else + else if (level < 16) { std::uint16_t th = data_level_threshold(level); if ((th & 0x8000u) == 0)