fs: fix FAT name extraction
The long name apparently can be accumulated using multiple 13-byte slots. Unfortunately we never checked how many we can actually fit in the buffer we are reading to. Signed-off-by: Patrick Wildt <patrick@blueri.se>
This commit is contained in:
parent
cd80a4fe61
commit
8b021bb956
@ -821,6 +821,9 @@ static dir_entry *extract_vfat_name(fat_itr *itr)
|
||||
|
||||
slot2str((dir_slot *)dent, buf, &idx);
|
||||
|
||||
if (n + idx >= sizeof(itr->l_name))
|
||||
return NULL;
|
||||
|
||||
/* shift accumulated long-name up and copy new part in: */
|
||||
memmove(itr->l_name + idx, itr->l_name, n);
|
||||
memcpy(itr->l_name, buf, idx);
|
||||
|
Loading…
Reference in New Issue
Block a user