From 53cdcc592f3efe64c3a398c93b3faaf4b5eb25c5 Mon Sep 17 00:00:00 2001 From: Paul Dino Jones Date: Sun, 28 Jul 2024 11:00:26 -0400 Subject: [PATCH] Fix small buffer overflow on the diameters file string --- src/monocoque/monocoque.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/monocoque/monocoque.c b/src/monocoque/monocoque.c index c483d91..6c1cfc7 100644 --- a/src/monocoque/monocoque.c +++ b/src/monocoque/monocoque.c @@ -63,10 +63,13 @@ int main(int argc, char** argv) create_user_dir("/.config/"); create_user_dir("/.cache/"); char* config_file_str = ( char* ) malloc(1 + strlen(home_dir_str) + strlen("/.config/") + strlen("monocoque/monocoque.config")); - size_t diameters_file_sz = 1 + strlen(home_dir_str) + strlen("/.config/") + strlen("monocoque/diameters.config"); - char* diameters_file_str = ( char* ) malloc(1 + strlen(home_dir_str) + strlen("/.config/") + strlen("monocoque/diameters.json")); + + size_t diameters_file_sz = snprintf(NULL, 0, "%s/.config/monocoque/diameters.config", home_dir_str); + diameters_file_sz += 1; + char* diameters_file_str = ( char* ) malloc(diameters_file_sz); snprintf(diameters_file_str, diameters_file_sz, "%s/.config/monocoque/diameters.config", home_dir_str); + char* cache_dir_str = ( char* ) malloc(1 + strlen(home_dir_str) + strlen("/.cache/monocoque/")); strcpy(config_file_str, home_dir_str); strcat(config_file_str, "/.config/"); @@ -103,6 +106,7 @@ int main(int argc, char** argv) free(diameters_file_str); slogi("Loading configuration file: %s", config_file_str); + slogd("using diameters file %s", ms->tyre_diameter_config); config_t cfg; config_init(&cfg); config_setting_t* config_devices = NULL;