mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-06-13 15:03:58 +03:00
fat: correct sign for deletion mark
The FAT file systems uses character '\xe5' to mark a deleted directory entry. If a file name starts with this character, it is substituted by '\x05' in the directory entry. While (signed char)'\xe5' is a negative number 0xe5 is a positive integer number. We therefore have define a constant DELETED_MARK which matches the signedness of the characters in the directory entry. Correct a comparison where we used the constant 0xe5 with the wrong sign. Use the constant aRING instead of 0x05 like in the rest of the code. Reported-by: Dan Carpenter <dan.carpenter@linaro.org> Fixes:57b745e238("fs: fat: call set_name() only once") Fixes:28cef9ca2e("fs: fat: create correct short names") Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
committed by
Tom Rini
parent
e205fbcea0
commit
42cd759a37
@@ -132,9 +132,9 @@ static int set_name(fat_itr *itr, const char *filename, char *shortname)
|
||||
return period_location;
|
||||
if (*dirent.name == ' ')
|
||||
*dirent.name = '_';
|
||||
/* 0xe5 signals a deleted directory entry. Replace it by 0x05. */
|
||||
if (*dirent.name == 0xe5)
|
||||
*dirent.name = 0x05;
|
||||
/* Substitute character 0xe5 signaling deletetion by character 0x05 */
|
||||
if (*dirent.name == DELETED_FLAG)
|
||||
*dirent.name = aRING;
|
||||
|
||||
/* If filename and short name are the same, quit. */
|
||||
sprintf(buf, "%.*s.%.3s", period_location, dirent.name, dirent.ext);
|
||||
|
||||
Reference in New Issue
Block a user