From 1be49a75b1d7154000955a36feae1c83837447cc Mon Sep 17 00:00:00 2001 From: Frank Haverland Date: Mon, 31 Oct 2022 22:04:34 +0100 Subject: [PATCH] fix kernel panic (vector out of range) in getReadoutRawString (#1250) --- .../ClassFlowCNNGeneral.cpp | 2 +- .../test_flow_postrocess_helper.cpp | 2 +- .../test_getReadoutRawString.cpp | 27 +++++++++++++++++++ code/test/test_suite_flowcontroll.cpp | 4 +++ 4 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 code/test/components/jomjol-flowcontroll/test_getReadoutRawString.cpp diff --git a/code/components/jomjol_flowcontroll/ClassFlowCNNGeneral.cpp b/code/components/jomjol_flowcontroll/ClassFlowCNNGeneral.cpp index 9018e52e..acf3523d 100644 --- a/code/components/jomjol_flowcontroll/ClassFlowCNNGeneral.cpp +++ b/code/components/jomjol_flowcontroll/ClassFlowCNNGeneral.cpp @@ -972,7 +972,7 @@ string ClassFlowCNNGeneral::getReadoutRawString(int _analog) { string rt = ""; - if (GENERAL[_analog]->ROI.size() == 0) + if (_analog >= GENERAL.size() || GENERAL[_analog]==NULL || GENERAL[_analog]->ROI.size() == 0) return rt; for (int i = 0; i < GENERAL[_analog]->ROI.size(); ++i) diff --git a/code/test/components/jomjol-flowcontroll/test_flow_postrocess_helper.cpp b/code/test/components/jomjol-flowcontroll/test_flow_postrocess_helper.cpp index 7d577742..a049e163 100644 --- a/code/test/components/jomjol-flowcontroll/test_flow_postrocess_helper.cpp +++ b/code/test/components/jomjol-flowcontroll/test_flow_postrocess_helper.cpp @@ -77,7 +77,7 @@ UnderTestPost* init_do_flow(std::vector analog, std::vector digits for (int i = 0; iname = name; anaROI->result_float = analog[i]; gen_analog->ROI.push_back(anaROI); diff --git a/code/test/components/jomjol-flowcontroll/test_getReadoutRawString.cpp b/code/test/components/jomjol-flowcontroll/test_getReadoutRawString.cpp new file mode 100644 index 00000000..5cbd5ddb --- /dev/null +++ b/code/test/components/jomjol-flowcontroll/test_getReadoutRawString.cpp @@ -0,0 +1,27 @@ +#include "test_flow_postrocess_helper.h" + + + +void test_getReadoutRawString() { + + // no ROIs setted up + UnderTestPost* _undertestPost = setUpClassFlowPostprocessing(Digital100, Analogue100); + + string result = _undertestPost->flowAnalog->getReadoutRawString(0); + TEST_ASSERT_EQUAL_STRING("", result.c_str()); + + // setted value + general* gen_analog = _undertestPost->flowAnalog->GetGENERAL("default", true); + gen_analog->ROI.clear(); + roi* anaROI = new roi(); + string name = "ana_1"; + anaROI->name = name; + anaROI->result_float = 5.5; + gen_analog->ROI.push_back(anaROI); + + result = _undertestPost->flowAnalog->getReadoutRawString(0); + TEST_ASSERT_EQUAL_STRING("\t5.5", result.c_str()); + + + +} \ No newline at end of file diff --git a/code/test/test_suite_flowcontroll.cpp b/code/test/test_suite_flowcontroll.cpp index dccd53c7..6bc4b171 100644 --- a/code/test/test_suite_flowcontroll.cpp +++ b/code/test/test_suite_flowcontroll.cpp @@ -4,6 +4,7 @@ #include "components/jomjol-flowcontroll/test_flowpostprocessing.cpp" #include "components/jomjol-flowcontroll/test_flow_pp_negative.cpp" #include "components/jomjol-flowcontroll/test_ZeigerEvalAnalogToDigitNeu.cpp" +#include "components/jomjol-flowcontroll/test_getReadoutRawString.cpp" // SD-Card //////////////////// #include "nvs_flash.h" #include "esp_vfs_fat.h" @@ -116,6 +117,9 @@ extern "C" void app_main() RUN_TEST(test_doFlowPP1); RUN_TEST(test_doFlowPP2); RUN_TEST(test_doFlowPP3); + + // getReadoutRawString test + RUN_TEST(test_getReadoutRawString); UNITY_END(); } \ No newline at end of file