From b5847b2ab13355e3ed264be1a812facb4fd46fbe Mon Sep 17 00:00:00 2001 From: Kreeblah Date: Sun, 31 Jan 2021 00:16:16 -0800 Subject: [PATCH] Additional checks to reduce the possibility of user error with snes_clk.txt clock offset file. --- Cart_Reader/snes_clk.cpp | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/Cart_Reader/snes_clk.cpp b/Cart_Reader/snes_clk.cpp index 8947f3f..1ba096a 100644 --- a/Cart_Reader/snes_clk.cpp +++ b/Cart_Reader/snes_clk.cpp @@ -6,20 +6,38 @@ int32_t readClockOffset() { unsigned char* clock_buf; int16_t i; int32_t clock_offset; + if(!clock_file.open("/snes_clk.txt", FILE_READ)) { return INT32_MIN; } - clock_buf = malloc(16 * sizeof(char)); - i = clock_file.read(clock_buf, 16); + clock_buf = malloc(12 * sizeof(char)); + i = clock_file.read(clock_buf, 11); clock_file.close(); if(i == -1) { free(clock_buf); return INT32_MIN; - } else if(i < 16) { + } else if((i == 11) && (clock_buf[0] != '-')) { + free(clock_buf); + return INT32_MIN; + } else { clock_buf[i] = 0; } + for(i = 0; i < 12; i++) { + if(clock_buf[i] != '-' && clock_buf[i] < '0' && clock_buf[i] > '9') { + if(i == 0) { + free(clock_buf); + return INT32_MIN; + } else if((i == 1) && (clock_buf[0] == '-')) { + free(clock_buf); + return INT32_MIN; + } else { + clock_buf[i] = 0; + } + } + } + clock_offset = (int32_t)atoi(clock_buf); free(clock_buf);