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.

tree.c remove strlcat in favor of strmemccpy

moved a conditional for reload_dir vs strcmp

Change-Id: I1635014fbbc6b9b0905abc3f9c60bbd2a1d08762

authored by

William Wilgus and committed by
William Wilgus
e6313e4b 9ebfb3fa

+16 -7
+16 -7
apps/tree.c
··· 421 421 { 422 422 tc.sort_dir = global_settings.sort_dir; 423 423 /* if the tc.currdir has been changed, reload it ...*/ 424 - if (strncmp(tc.currdir, lastdir, sizeof(lastdir)) || reload_dir) 424 + if (reload_dir || strncmp(tc.currdir, lastdir, sizeof(lastdir))) 425 425 { 426 426 if (ft_load(&tc, NULL) < 0) 427 427 return -1; ··· 584 584 struct entry *entry = tree_get_entry_at(&tc, tc.selected_item); 585 585 if (entry && getcwd(buffer, buffer_len)) 586 586 { 587 - if (tc.dirlength) 587 + if (!tc.dirlength) 588 + return buffer; 589 + 590 + size_t usedlen = strlen(buffer); 591 + 592 + if (usedlen + 2 < buffer_len) /* ensure enough room for '/' + '\0' */ 588 593 { 589 - if (buffer[strlen(buffer)-1] != '/') 590 - strlcat(buffer, "/", buffer_len); 591 - if (strlcat(buffer, entry->name, buffer_len) >= buffer_len) 592 - return NULL; 594 + if (buffer[usedlen-1] != '/') 595 + { 596 + buffer[usedlen] = '/'; 597 + /* strmemccpy will zero terminate if we run out of space after */ 598 + usedlen++; 599 + } 600 + buffer_len -= usedlen; 601 + if (strmemccpy(buffer + usedlen, entry->name, buffer_len) != NULL) 602 + return buffer; 593 603 } 594 - return buffer; 595 604 } 596 605 return NULL; 597 606 }