From 26262c4c92fdbcbefaed1ba3ccd71bda01f8e37e Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Sat, 7 May 2022 13:34:29 +0200 Subject: [PATCH] fix: stack buffer overflow in PreviewWindow::drawTime (#1945) --- radio/src/gui/colorlcd/preview_window.h | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/radio/src/gui/colorlcd/preview_window.h b/radio/src/gui/colorlcd/preview_window.h index 95c86ace5..5b2e1514b 100644 --- a/radio/src/gui/colorlcd/preview_window.h +++ b/radio/src/gui/colorlcd/preview_window.h @@ -282,15 +282,14 @@ class PreviewWindow : public FormGroup { // time on top bar struct gtm t; - char str[10]; - char str1[20]; + char str[16]; const char *const STR_MONTHS[] = TR_MONTHS; gettime(&t); - sprintf(str, "%d %s\n", t.tm_mday, STR_MONTHS[t.tm_mon]); - - getTimerString(str1, getValue(MIXSRC_TX_TIME)); - strcat(str, str1); + int s = snprintf(str, sizeof(str), "%d %s\n", t.tm_mday, STR_MONTHS[t.tm_mon]); + if (s > 0 && s < sizeof(str) - 6 /* 00:00\0 */) { + getTimerString(str + s, getValue(MIXSRC_TX_TIME)); + } dc->drawText(rect.w - 40, 5, str, COLOR_THEME_PRIMARY2 | FONT(XS)); } @@ -334,4 +333,4 @@ class PreviewWindow : public FormGroup tmr10ms_t ticks; }; -#endif \ No newline at end of file +#endif