Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP1:GA
dosfstools
dosfstools-fix-attempt-to-rename-root-dir.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File dosfstools-fix-attempt-to-rename-root-dir.patch of Package dosfstools
From 82076b64ccc1bd18d854982f9c01d369a665ff65 Mon Sep 17 00:00:00 2001 From: Andreas Bombe <aeb@debian.org> Date: Tue, 11 Nov 2014 23:25:30 +0100 Subject: [PATCH] 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> --- src/check.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git src/check.c src/check.c index a330caf..e8aaf92 100644 --- src/check.c +++ src/check.c @@ -959,9 +959,9 @@ static void add_file(DOS_FS * fs, DOS_FILE *** chain, DOS_FILE * parent, fs_read(offset, sizeof(DIR_ENT), &de); else { /* Construct a DIR_ENT for the root directory */ + memset(&de, 0, sizeof de); memcpy(de.name, " ", MSDOS_NAME); de.attr = ATTR_DIR; - de.size = de.time = de.date = 0; de.start = htole16(fs->root_cluster & 0xffff); de.starthi = htole16((fs->root_cluster >> 16) & 0xffff); }
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor