From 1b6f827b2c1c782e4a8061a7c476775309865ee5 Mon Sep 17 00:00:00 2001 From: Wilhelm Date: Mon, 10 Jan 2022 00:28:47 +0100 Subject: [PATCH] fix: Potential out of bounds access of flightmode name on main screen (#1337) * fixed incorrect use of non-terminated-fixed-string for ctor of std::string * introduced helper * removed commented lines --- radio/src/gui/colorlcd/view_main_decoration.cpp | 4 ++-- radio/src/strhelpers.h | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/radio/src/gui/colorlcd/view_main_decoration.cpp b/radio/src/gui/colorlcd/view_main_decoration.cpp index 0066efef0..a156eb015 100644 --- a/radio/src/gui/colorlcd/view_main_decoration.cpp +++ b/radio/src/gui/colorlcd/view_main_decoration.cpp @@ -328,8 +328,8 @@ void ViewMainDecoration::createFlightMode() }; std::function getFM = []() -> std::string { - return g_model.flightModeData[mixerCurrentFlightMode].name; - }; + return stringFromNtString(g_model.flightModeData[mixerCurrentFlightMode].name); +}; flightMode = new DynamicText(this, r, getFM, CENTERED | COLOR_THEME_SECONDARY1); } diff --git a/radio/src/strhelpers.h b/radio/src/strhelpers.h index 683de26d4..c7c08c86f 100644 --- a/radio/src/strhelpers.h +++ b/radio/src/strhelpers.h @@ -25,6 +25,8 @@ #include "definitions.h" #include "opentx_types.h" +#include + #define SHOW_TIME 0x1 #define SHOW_TIMER 0x0 #define SHOW_TIMER_UPPER_CASE 0x2 @@ -90,4 +92,8 @@ char *getTimerString(int32_t tme, TimerOptions timerOptions = {.options = 0}); void splitTimer(char *s0, char *s1, char *s2, char *s3, int tme, bool bLowercase = true); +template +constexpr std::string stringFromNtString(const char (&a)[N]) { + return std::string(a, strnlen(a, N)); +} #endif // _STRHELPERS_H_