From aea69148a8abfcea0907eb5a5957c308b0d5368e Mon Sep 17 00:00:00 2001 From: Laan Tungir Date: Wed, 27 Aug 2025 08:23:31 -0400 Subject: [PATCH] Version v0.2.93 - Clean warnings --- otp.c | 40 ++++++++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/otp.c b/otp.c index 2553d8c..da205c0 100644 --- a/otp.c +++ b/otp.c @@ -2727,15 +2727,27 @@ int load_preferences(void) { char absolute_path[1024]; if (current_pads_dir[0] == '/') { // Already absolute path - snprintf(first_pad_path, sizeof(first_pad_path), "%s/%s", current_pads_dir, entry->d_name); + int ret = snprintf(first_pad_path, sizeof(first_pad_path), "%s/%s", current_pads_dir, entry->d_name); + if (ret >= (int)sizeof(first_pad_path)) { + // Path was truncated, skip this entry + continue; + } } else { // Relative path - make it absolute char current_dir[512]; if (getcwd(current_dir, sizeof(current_dir))) { - snprintf(first_pad_path, sizeof(first_pad_path), "%s/%s/%s", current_dir, current_pads_dir, entry->d_name); + int ret = snprintf(first_pad_path, sizeof(first_pad_path), "%s/%s/%s", current_dir, current_pads_dir, entry->d_name); + if (ret >= (int)sizeof(first_pad_path)) { + // Path was truncated, skip this entry + continue; + } } else { // Fallback to relative path - snprintf(first_pad_path, sizeof(first_pad_path), "%s/%s", current_pads_dir, entry->d_name); + int ret = snprintf(first_pad_path, sizeof(first_pad_path), "%s/%s", current_pads_dir, entry->d_name); + if (ret >= (int)sizeof(first_pad_path)) { + // Path was truncated, skip this entry + continue; + } } } strncpy(default_pad_path, first_pad_path, sizeof(default_pad_path) - 1); @@ -3744,15 +3756,31 @@ int handle_pads_menu(void) { char new_default_path[1024]; if (current_pads_dir[0] == '/') { // Already absolute path - snprintf(new_default_path, sizeof(new_default_path), "%s/%s.pad", current_pads_dir, pads[matched_pad].chksum); + int ret = snprintf(new_default_path, sizeof(new_default_path), "%s/%s.pad", current_pads_dir, pads[matched_pad].chksum); + if (ret >= (int)sizeof(new_default_path)) { + printf("Error: Path too long for default pad setting\n"); + return handle_pads_menu(); + } } else { // Relative path - make it absolute char current_dir[512]; if (getcwd(current_dir, sizeof(current_dir))) { - snprintf(new_default_path, sizeof(new_default_path), "%s/%s/%s.pad", current_dir, current_pads_dir, pads[matched_pad].chksum); + int ret = snprintf(new_default_path, sizeof(new_default_path), "%s/%s/%s.pad", current_dir, current_pads_dir, pads[matched_pad].chksum); + if (ret >= (int)sizeof(new_default_path)) { + // Path was truncated, fall back to relative path + int ret2 = snprintf(new_default_path, sizeof(new_default_path), "%s/%s.pad", current_pads_dir, pads[matched_pad].chksum); + if (ret2 >= (int)sizeof(new_default_path)) { + printf("Error: Path too long for default pad setting\n"); + return handle_pads_menu(); + } + } } else { // Fallback to relative path - snprintf(new_default_path, sizeof(new_default_path), "%s/%s.pad", current_pads_dir, pads[matched_pad].chksum); + int ret = snprintf(new_default_path, sizeof(new_default_path), "%s/%s.pad", current_pads_dir, pads[matched_pad].chksum); + if (ret >= (int)sizeof(new_default_path)) { + printf("Error: Path too long for default pad setting\n"); + return handle_pads_menu(); + } } }