From cf50c593cb0828baf4c2b08bde1886d0bcd96b5e Mon Sep 17 00:00:00 2001 From: mooinglemur Date: Sun, 13 Oct 2024 12:22:06 -0700 Subject: [PATCH] fixing wrong size sent to hardened snprintf, causing abort (#312) --- src/main.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main.c b/src/main.c index 2a15a4d..c03a784 100644 --- a/src/main.c +++ b/src/main.c @@ -1763,21 +1763,22 @@ emulator_loop(void *param) static bool prg_done = false; if (prg_file && !prg_done) { + int loadlen = 0; // LOAD":*" will cause the IEEE library // to load from "prg_file" if (prg_override_start >= 0) { - snprintf(paste_text_data, sizeof(paste_text_data), "LOAD\":*\",%d,1,$%04X\r", ieee_unit, prg_override_start); + loadlen = snprintf(paste_text_data, sizeof(paste_text_data), "LOAD\":*\",%d,1,$%04X\r", ieee_unit, prg_override_start); } else { - snprintf(paste_text_data, sizeof(paste_text_data), "LOAD\":*\",%d,1\r", ieee_unit); + loadlen = snprintf(paste_text_data, sizeof(paste_text_data), "LOAD\":*\",%d,1\r", ieee_unit); } paste_text = paste_text_data; prg_done = true; if (run_after_load) { if (prg_override_start >= 0) { - snprintf(strchr(paste_text_data, 0), sizeof(paste_text_data), "SYS$%04X\r", prg_override_start); + snprintf(paste_text_data + loadlen, sizeof(paste_text_data) - loadlen, "SYS$%04X\r", prg_override_start); } else { - snprintf(strchr(paste_text_data, 0), sizeof(paste_text_data), "RUN\r"); + snprintf(paste_text_data + loadlen, sizeof(paste_text_data) - loadlen, "RUN\r"); } } }