diff --git a/Firm_Saturn/conio.c b/Firm_Saturn/conio.c index 922515d..16b4984 100644 --- a/Firm_Saturn/conio.c +++ b/Firm_Saturn/conio.c @@ -447,7 +447,7 @@ void menu_status(MENU_DESC *menu, char *string) void add_menu_item(MENU_DESC *menu, char *item) { - strcpy(menu->items[menu->num], item); + strncpy(menu->items[menu->num], item, 64); menu->items[menu->num][36] = 0; menu->num += 1; } diff --git a/Firm_Saturn/main.c b/Firm_Saturn/main.c index d58662f..e71e6aa 100644 --- a/Firm_Saturn/main.c +++ b/Firm_Saturn/main.c @@ -264,9 +264,11 @@ static void fill_selmenu(void) break; // /SAROO/ISO/xxxx/xxxx.cue char *path = path_str + LE32(&disc_path[index]); - sprintf(tmp, "%2d: %s", index, path+11); + snprintf(tmp, 128, "%2d: %s", index, path+11); + tmp[127] = 0; char *p = strchr(tmp, '/'); - *p = 0; + if(p) + *p = 0; add_menu_item(&sel_menu, tmp); } diff --git a/Firm_Saturn/main.h b/Firm_Saturn/main.h index eeaf721..ebbde3f 100644 --- a/Firm_Saturn/main.h +++ b/Firm_Saturn/main.h @@ -114,7 +114,9 @@ int sci_getc(int timeout); extern void (*printk_putc)(int ch); int printk(char *fmt, ...); -int sprintf(char *buf, char *fmt, ...); +int snprintf(char *buf, int size, char *fmt, ...); +#define sprintf(buf, fmt, ...) snprintf(buf, 1024, fmt, __VA_ARGS__) + int strlen(char *s); int strcmp(char *s1, char *s2); diff --git a/Firm_Saturn/printk.c b/Firm_Saturn/printk.c index 158d5f2..0b1d9a2 100644 --- a/Firm_Saturn/printk.c +++ b/Firm_Saturn/printk.c @@ -289,13 +289,13 @@ int printk(char *fmt, ...) return printed_len; } -int sprintf(char *buf, char *fmt, ...) +int snprintf(char *buf, int size, char *fmt, ...) { va_list args; int printed_len; va_start(args, fmt); - printed_len = vsnprintf(buf, 1024, fmt, args); + printed_len = vsnprintf(buf, size, fmt, args); va_end(args); return printed_len;