Rockbox open source high quality audio player as a Music Player Daemon
mpris rockbox mpd libadwaita audio rust zig deno
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

settings set_file() cleanup unused maxlen and check for file exist

maxlen is set to MAX_FILENAME by all callers so lets just make that part of the deal
check the file exists before we set it

Change-Id: I3074f3164fcd4b8873b69612d5c1a51a39de4baf

+23 -20
+13 -14
apps/filetree.c
··· 461 461 { 462 462 case 0: /* main lcd */ 463 463 screen = SCREEN_MAIN; 464 - set_file(file, (char *)global_settings.font_file, MAX_FILENAME); 464 + set_file(file, (char *)global_settings.font_file); 465 465 break; 466 466 case 1: /* remote */ 467 467 screen = SCREEN_REMOTE; 468 - set_file(file, (char *)global_settings.remote_font_file, MAX_FILENAME); 468 + set_file(file, (char *)global_settings.remote_font_file); 469 469 break; 470 470 } 471 471 #else 472 - set_file(file, (char *)global_settings.font_file, MAX_FILENAME); 472 + set_file(file, (char *)global_settings.font_file); 473 473 #endif 474 474 splash(0, ID2P(LANG_WAIT)); 475 475 current_font_id = screens[screen].getuifont(); ··· 480 480 viewportmanager_theme_changed(THEME_UI_VIEWPORT); 481 481 } 482 482 483 - static void ft_apply_skin_file(char *buf, char *file, const int maxlen) 483 + static void ft_apply_skin_file(char *buf, char *file) 484 484 { 485 485 splash(0, ID2P(LANG_WAIT)); 486 - set_file(buf, file, maxlen); 486 + set_file(buf, file); 487 487 settings_apply_skins(); 488 488 } 489 489 ··· 639 639 rc = GO_TO_FM; 640 640 break; 641 641 case FILE_ATTR_FMS: 642 - ft_apply_skin_file(buf, global_settings.fms_file, MAX_FILENAME); 642 + ft_apply_skin_file(buf, global_settings.fms_file); 643 643 break; 644 644 #ifdef HAVE_REMOTE_LCD 645 645 case FILE_ATTR_RFMS: 646 - ft_apply_skin_file(buf, global_settings.rfms_file, MAX_FILENAME); 646 + ft_apply_skin_file(buf, global_settings.rfms_file); 647 647 break; 648 648 #endif 649 649 #endif 650 650 case FILE_ATTR_SBS: 651 - ft_apply_skin_file(buf, global_settings.sbs_file, MAX_FILENAME); 651 + ft_apply_skin_file(buf, global_settings.sbs_file); 652 652 break; 653 653 #ifdef HAVE_REMOTE_LCD 654 654 case FILE_ATTR_RSBS: 655 - ft_apply_skin_file(buf, global_settings.rsbs_file, MAX_FILENAME); 655 + ft_apply_skin_file(buf, global_settings.rsbs_file); 656 656 break; 657 657 #endif 658 658 /* wps config file */ 659 659 case FILE_ATTR_WPS: 660 - ft_apply_skin_file(buf, global_settings.wps_file, MAX_FILENAME); 660 + ft_apply_skin_file(buf, global_settings.wps_file); 661 661 break; 662 662 #if defined(HAVE_REMOTE_LCD) && (NB_SCREENS > 1) 663 663 /* remote-wps config file */ 664 664 case FILE_ATTR_RWPS: 665 - ft_apply_skin_file(buf, global_settings.rwps_file, MAX_FILENAME); 665 + ft_apply_skin_file(buf, global_settings.rwps_file); 666 666 break; 667 667 #endif 668 668 case FILE_ATTR_CFG: ··· 685 685 splash(HZ, ID2P(LANG_FAILED)); 686 686 break; 687 687 } 688 - set_file(buf, (char *)global_settings.lang_file, 689 - MAX_FILENAME); 688 + set_file(buf, (char *)global_settings.lang_file); 690 689 talk_init(); /* use voice of same language */ 691 690 viewportmanager_theme_changed(THEME_LANGUAGE); 692 691 settings_apply_skins(); ··· 701 700 splash(0, ID2P(LANG_WAIT)); 702 701 if (!load_kbd(buf)) 703 702 splash(HZ, ID2P(LANG_KEYBOARD_LOADED)); 704 - set_file(buf, (char *)global_settings.kbd_file, MAX_FILENAME); 703 + set_file(buf, (char *)global_settings.kbd_file); 705 704 break; 706 705 707 706 #if defined(HAVE_ROLO)
+2 -2
apps/radio/presets.c
··· 197 197 close(fd); 198 198 199 199 if (strcasestr(filepreset, FMPRESET_PATH)) 200 - set_file(filepreset, global_settings.fmr_file, MAX_FILENAME); 200 + set_file(filepreset, global_settings.fmr_file); 201 201 presets_changed = false; 202 202 } 203 203 else ··· 240 240 241 241 /* Preset inside the default folder? */ 242 242 if (strcasestr(filepreset, FMPRESET_PATH)) 243 - set_file(filepreset, global_settings.fmr_file, MAX_FILENAME); 243 + set_file(filepreset, global_settings.fmr_file); 244 244 /* else Temporary preset, loaded until player shuts down. */ 245 245 246 246 fd = open_utf8(filepreset, O_RDONLY);
+7 -3
apps/settings.c
··· 1284 1284 * Takes filename, removes the directory and the extension, 1285 1285 * and then copies the basename into setting, unless the basename exceeds maxlen 1286 1286 **/ 1287 - void set_file(const char* filename, char* setting, const int maxlen) 1287 + void set_file(const char* filename, char* setting) 1288 1288 { 1289 + const int maxlen = MAX_FILENAME; 1289 1290 const char* fptr = strrchr(filename,'/'); 1290 1291 const char* extptr; 1291 1292 int len; ··· 1305 1306 1306 1307 len = strlen(fptr) - extlen + 1; 1307 1308 1308 - /* error if filename isn't in ROCKBOX_DIR */ 1309 - if (len > maxlen) 1309 + /* error later if filename isn't in ROCKBOX_DIR */ 1310 + if (len > maxlen || !file_exists(filename)) 1311 + { 1312 + DEBUGF("%s Error %s\n", __func__, filename); 1310 1313 return; 1314 + } 1311 1315 1312 1316 strmemccpy(setting, fptr, len); 1313 1317 settings_save();
+1 -1
apps/settings.h
··· 308 308 const char* (*formatter)(char*, size_t, int, const char*), 309 309 int32_t (*get_talk_id)(int, int)); 310 310 311 - void set_file(const char* filename, char* setting, const int maxlen); 311 + void set_file(const char* filename, char* setting); 312 312 313 313 bool set_option(const char* string, const void* variable, enum optiontype type, 314 314 const struct opt_items* options, int numoptions, void (*function)(int));