Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
Fix attempt to rename root dir in fsck due to uninitialized fields
When add_file() is called with offset 0, it will construct a DIR_ENT for
the root directory instead of reading the contents from the filesystem.
It did not initialize the whole DIR_ENT on the stack, just select
values.
In particular, the lcase field was left with an undefined value. If
that value happened to include the FAT_NO_83NAME bit, the "neither long
nor short file name" check in bad_name() added in 3.0.26 would trigger
and cause an attempt to rename the entry (which is not possible).
Example run:
$ /sbin/fsck.fat -y bad.img
fsck.fat 3.0.26 (2014-03-07)
/
Bad short file name ().
Auto-renaming it.
Renamed to
bad.img: 14 files, 19388/403266 clusters
This commit changes the initialization zeroize the whole struct before
setting individual fields. Thanks to AlexisM, who found the cause and
posted a patch on the Debian bug http://bugs.debian.org/764992 .
Signed-off-by: Andreas Bombe <aeb@debian.org>- Loading branch information