summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Wilgus <wilgus.william@gmail.com>2022-11-17 05:36:55 -0500
committerWilliam Wilgus <wilgus.william@gmail.com>2022-11-17 05:36:55 -0500
commit016090b2a41b6972876f16376be4393eb3600d11 (patch)
tree481115ccab15fa211192d536807f6a6882559679
parent7b3e2f6f851074ebd82af567ba6814805ca152d4 (diff)
downloadrockbox-016090b2a41b6972876f16376be4393eb3600d11.tar.gz
rockbox-016090b2a41b6972876f16376be4393eb3600d11.zip
Bug fix multiboot.c get_redirect_dir didn't reach index 0
add_path[0] was never reached Change-Id: If375a70832b0666d87f7d87b136cc377484b9ec1
-rw-r--r--firmware/common/multiboot.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/firmware/common/multiboot.c b/firmware/common/multiboot.c
index dfa6556be3..c2cedc102d 100644
--- a/firmware/common/multiboot.c
+++ b/firmware/common/multiboot.c
@@ -41,7 +41,7 @@ int write_bootdata(unsigned char* buf, int len, unsigned int boot_volume)
41 int payload_len = EKEY_NOT_FOUND; 41 int payload_len = EKEY_NOT_FOUND;
42 42
43 /* search for boot data header prior to search_len */ 43 /* search for boot data header prior to search_len */
44 for(int i = 0;i < search_len;i++) 44 for(int i = 0; i < search_len; i++)
45 { 45 {
46 fw_boot_data = (struct boot_data_t*) &buf[i]; 46 fw_boot_data = (struct boot_data_t*) &buf[i];
47 if (fw_boot_data->magic[0] != BOOT_DATA_MAGIC0 || 47 if (fw_boot_data->magic[0] != BOOT_DATA_MAGIC0 ||
@@ -83,7 +83,7 @@ int get_redirect_dir(char* buf, int buffer_size, int volume,
83 const char* rootdir, const char* firmware) 83 const char* rootdir, const char* firmware)
84{ 84{
85 int fd; 85 int fd;
86 int f_offset; 86 size_t f_offset;
87 char add_path[MAX_PATH]; 87 char add_path[MAX_PATH];
88 /* Check in root of volume for rockbox_main.<playername> redirect */ 88 /* Check in root of volume for rockbox_main.<playername> redirect */
89 snprintf(add_path, sizeof(add_path), "/<%d>/"BOOT_REDIR, volume); 89 snprintf(add_path, sizeof(add_path), "/<%d>/"BOOT_REDIR, volume);
@@ -96,7 +96,7 @@ int get_redirect_dir(char* buf, int buffer_size, int volume,
96 f_offset = read(fd, add_path,sizeof(add_path)); 96 f_offset = read(fd, add_path,sizeof(add_path));
97 close(fd); 97 close(fd);
98 98
99 for(int i = f_offset - 1;i > 0; i--) 99 for(size_t i = f_offset - 1; i < f_offset; i--)
100 { 100 {
101 /* strip control chars < SPACE or all if path doesn't start with '/' */ 101 /* strip control chars < SPACE or all if path doesn't start with '/' */
102 if (add_path[i] < 0x20 || add_path[0] != '/') 102 if (add_path[i] < 0x20 || add_path[0] != '/')