--- lbbs/src/menu.c 2025/04/30 09:18:19 1.22 +++ lbbs/src/menu.c 2025/05/03 13:41:21 1.24 @@ -37,7 +37,9 @@ int load_menu(MENU_SET *p_menu_set, cons { FILE *fin, *fout; int i = 0, j; - char buffer[256], screen_filename[256], temp[256]; + char buffer[LINE_BUFFER_LEN]; + char screen_filename[LINE_BUFFER_LEN]; + char temp[LINE_BUFFER_LEN]; regmatch_t pmatch[10]; if ((fin = fopen(conf_file, "r")) == NULL) @@ -48,7 +50,7 @@ int load_menu(MENU_SET *p_menu_set, cons strcpy(p_menu_set->conf_file, conf_file); - while (fgets(buffer, 255, fin)) + while (fgets(buffer, sizeof(buffer), fin)) { switch (buffer[0]) { @@ -68,7 +70,7 @@ int load_menu(MENU_SET *p_menu_set, cons return -2; } - while (fgets(buffer, 255, fin)) + while (fgets(buffer, sizeof(buffer), fin)) { if (buffer[0] != '%') fputs(buffer, fout); @@ -94,7 +96,7 @@ int load_menu(MENU_SET *p_menu_set, cons j = 0; - while (fgets(buffer, 255, fin)) + while (fgets(buffer, sizeof(buffer), fin)) { if (buffer[0] == '#') { @@ -364,6 +366,7 @@ int menu_control(MENU_SET *p_menu_set, i switch (key) { case CR: + igetch(1); // Cleanup remaining '\n' in the buffer case KEY_RIGHT: if (p_menu->items[p_menu->item_cur_pos]->submenu) { @@ -475,9 +478,9 @@ void unload_menu(MENU_SET *p_menu_set) int reload_menu(MENU_SET *p_menu_set) { int result; - char conf_file[256]; + char conf_file[FILE_PATH_LEN]; - strcpy(conf_file, p_menu_set->conf_file); + strncpy(conf_file, p_menu_set->conf_file, sizeof(conf_file)); unload_menu(p_menu_set); result = load_menu(p_menu_set, conf_file);