diff options
author | William Wilgus <wilgus.william@gmail.com> | 2024-06-04 16:43:58 -0400 |
---|---|---|
committer | William Wilgus <me.theuser@yahoo.com> | 2024-06-05 19:16:07 -0400 |
commit | c96d728d8148a06a311dc56845a8e16108bdd847 (patch) | |
tree | c4ee4bb9ecf90beaab122a1c920a68b063c207b2 | |
parent | d68c314cea350df06cd6c664d21628fa4d17d28e (diff) | |
download | rockbox-c96d728d8148a06a311dc56845a8e16108bdd847.tar.gz rockbox-c96d728d8148a06a311dc56845a8e16108bdd847.zip |
[coverity] debug-imx233.c dbg_hw_info_audio() use strlcat, fix snprintf call
technically this isn't currently causing any issue but
coverity correctly identified the potential for buffer ovfl
Change-Id: I4af462c9860c44f22d05b5b2b4c685364823d395
-rw-r--r-- | firmware/target/arm/imx233/debug-imx233.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/firmware/target/arm/imx233/debug-imx233.c b/firmware/target/arm/imx233/debug-imx233.c index 4487952162..5d759e40aa 100644 --- a/firmware/target/arm/imx233/debug-imx233.c +++ b/firmware/target/arm/imx233/debug-imx233.c | |||
@@ -963,6 +963,7 @@ bool dbg_hw_info_audio(void) | |||
963 | struct imx233_audioout_info_t out = imx233_audioout_get_info(); | 963 | struct imx233_audioout_info_t out = imx233_audioout_get_info(); |
964 | struct imx233_audioin_info_t in = imx233_audioin_get_info(); | 964 | struct imx233_audioin_info_t in = imx233_audioin_get_info(); |
965 | int line = 0; | 965 | int line = 0; |
966 | size_t len; | ||
966 | #define display_sys(st, sys, name) \ | 967 | #define display_sys(st, sys, name) \ |
967 | if(st.sys) \ | 968 | if(st.sys) \ |
968 | { \ | 969 | { \ |
@@ -971,15 +972,17 @@ bool dbg_hw_info_audio(void) | |||
971 | for(int i = 0; i < 2; i++) \ | 972 | for(int i = 0; i < 2; i++) \ |
972 | { \ | 973 | { \ |
973 | if(st.sys##mute[i]) \ | 974 | if(st.sys##mute[i]) \ |
974 | strcat(buffer, "mute"); \ | 975 | strlcat(buffer, "mute", 64); \ |
975 | else \ | 976 | else { \ |
976 | snprintf(buffer + strlen(buffer), 64, "%d.%d", \ | 977 | len = strlen(buffer); \ |
978 | snprintf(buffer + len, 64 - len, "%d.%d", \ | ||
977 | /* properly handle negative values ! */ \ | 979 | /* properly handle negative values ! */ \ |
978 | st.sys##vol[i] / 10, (10 + (st.sys##vol[i]) % 10) % 10); \ | 980 | st.sys##vol[i] / 10, (10 + (st.sys##vol[i]) % 10) % 10); \ |
981 | } \ | ||
979 | if(i == 0) \ | 982 | if(i == 0) \ |
980 | strcat(buffer, " / "); \ | 983 | strlcat(buffer, " / ", 64); \ |
981 | else \ | 984 | else \ |
982 | strcat(buffer, " dB"); \ | 985 | strlcat(buffer, " dB", 64); \ |
983 | } \ | 986 | } \ |
984 | lcd_putsf(0, line++, "%s", buffer); \ | 987 | lcd_putsf(0, line++, "%s", buffer); \ |
985 | } \ | 988 | } \ |