From: Pierre Schweitzer Date: Mon, 28 May 2018 21:38:00 +0000 (+0200) Subject: [VFATLIB] Addendum to 469289e X-Git-Tag: 0.4.11-dev~536 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=6e4e772e6cac89c12be9571fd58aaacb854bff7c [VFATLIB] Addendum to 469289e --- diff --git a/sdk/lib/fslib/vfatlib/check/ChangeLog b/sdk/lib/fslib/vfatlib/check/ChangeLog index f6a1e3da954..9e0665afc2f 100644 --- a/sdk/lib/fslib/vfatlib/check/ChangeLog +++ b/sdk/lib/fslib/vfatlib/check/ChangeLog @@ -1,3 +1,1128 @@ +commit cad2c17 +Author: Andreas Bombe +Date: Mon Jan 23 03:10:56 2017 +0100 + + fatlabel: Make sure printf style patterns in label are not expanded + + Writing a label to an unlabeled filesystem involves creating a root + directory entry to contain the label. For this, the + alloc_rootdir_entry() function used for creating new directory nodes for + recovered orphan cluster chains is reused. However, this expects the + filename to be a printf style pattern to generate a unique name. + + If the filesystem is unlabeled and the new label contains a printf + specifier other than %d or similar, the attempted expansion of the + pattern might crash fatlabel. + + Change alloc_rootdir_entry() to take an additional argument gen_name and + only expand the name if its value is true. + + Signed-off-by: Andreas Bombe + +commit 77371e2 +Author: Andreas Bombe +Date: Fri Nov 4 13:10:58 2016 +0100 + + testsuite: Add missing fsck test files to dist_check_DATA + + Signed-off-by: Andreas Bombe + +commit d6df1d4 +Author: Andreas Bombe +Date: Thu Nov 3 20:03:25 2016 +0100 + + testsuite: Test for bad characters in file names + + The FAT16 test image contains four files with three errors. One has a + space in the name, one a space in the extension and one contains '>' in + the name. + + Signed-off-by: Andreas Bombe + +commit 307966c +Author: Andreas Bombe +Date: Sun Sep 18 00:11:43 2016 +0200 + + fsck: Fix reporting of length to truncate with shared clusters + + When files share clusters and one of the two files has been selected to + truncate fsck reports which file has been selected and the length to + which it will be truncated. All code paths erronously printed the length + of the file that was not going to be truncated, leading to possible user + confusion. + + Signed-off-by: Andreas Bombe + +commit b33424e +Author: Andreas Bombe +Date: Sat Sep 17 23:34:07 2016 +0200 + + testsuite: Test for files sharing clusters + + The FAT32 test image contains three files. One shares a cluster with the + root directory and the other two share clusters among themselves. + + Signed-off-by: Andreas Bombe + +commit db5ec04 +Author: Andreas Bombe +Date: Sat Sep 17 22:41:07 2016 +0200 + + testsuite: Run fsck in test-mkfs + + Now the test-mkfs script also runs fsck on the created image to test its + basic operation. The test fails if fsck reports seeing an error. + + Signed-off-by: Andreas Bombe + +commit 4ac17ae +Author: Andreas Bombe +Date: Sat Sep 17 22:25:06 2016 +0200 + + Fix FAT32 FSInfo signature checking + + In commit 7444694 the definition of struct info_sector was corrected to + match the FSInfo sector specification. The initialization was adapted, + but other places were missed. All runs of fsck would then incorrectly + report a signature error on the FSInfo sector. + + Signed-off-by: Andreas Bombe + +commit e883d07 +Author: Nico Roeser +Date: Fri Sep 16 20:05:08 2016 +0200 + + mkfs: Bring back ability to set sector size. + + This had accidently been broken when the code was overhauled, resulting + in unconditionally setting the sector size when devinfo detected it. + + Signed-off-by: Andreas Bombe + +commit 4ef83db +Author: Andreas Bombe +Date: Fri Sep 16 03:32:12 2016 +0200 + + Request minimum automake version 1.11 and add workaround for <1.13 + + Before automake 1.13, parallel-tests wasn't the default set it + explicitly in the automake options list. The parallel test harness was + introduced in 1.11 therefore that is the minimum now. + + However, the AM_TESTS_ENVIRONMENT variable was only starting to work in + 1.13, so there is now a version check and a conditional assignment to + TESTS_ENVIRONMENT (which should be for user setting only) in case + automake is 1.11 or 1.12. + + Without it, the fact of xxd being found is not passed to the test + scripts which then skip all tests due to perceived lack of xxd. + + Signed-off-by: Andreas Bombe + +commit 6a8c8b7 +Author: Andreas Bombe +Date: Fri Sep 16 01:45:17 2016 +0200 + + Add missing autoreconf step to Travis CI configuration + + Signed-off-by: Andreas Bombe + +commit 54f7aef +Author: Andreas Bombe +Date: Fri Sep 16 01:39:08 2016 +0200 + + Add configuration for the Travis CI build service + + Signed-off-by: Andreas Bombe + +commit 5421752 +Author: Andreas Bombe +Date: Wed Sep 14 20:37:57 2016 +0200 + + Check and fix printf style arguments to die() and pdie() + + Add the "format" gcc style attribute to the declarations of die() and + pdie() so that the compiler knows how to check their arguments for + correctness. + + Fix all problematic calls detected by this. + + Signed-off-by: Andreas Bombe + +commit 83e5ec5 +Author: Andreas Bombe +Date: Wed Sep 14 03:38:08 2016 +0200 + + Make some implicit integer conversions safer + + Coverity reports a few places where signed or short integers are + promoted to int and then extended to long which might cause unintended + sign extension. Given the context (being sector sizes and similar) the + values should never actually reach unsafe values, but this patch cleans + it up anyway. + + Signed-off-by: Andreas Bombe + +commit ff5e718 +Author: Andreas Bombe +Date: Tue Sep 13 20:25:34 2016 +0200 + + mkfs: Remove redundant unreachable warning message + + At some point the check for too many clusters for user requested FAT16 + was moved a few lines above. The original location can only be reached + when the cluster count is too low for FAT16 which means the too many + clusters message can not be triggered there. + + Found through the dead code detection of Coverity Scan. + + Signed-off-by: Andreas Bombe + +commit e359a33 +Author: Andreas Bombe +Date: Tue Sep 13 20:12:21 2016 +0200 + + Fix octal character parsing in file_cvt() + + Apparently the octal code parsing got rewritten into a loop at some + point while the rest of the code was not removed. It was impossible to + specify an octal character code without the function returning an error. + + This affected the -u and -d options for fsck. + + Found through the dead code detection of Coverity Scan. + + Signed-off-by: Andreas Bombe + +commit ccd0a9d +Author: Andreas Bombe +Date: Mon Sep 12 20:21:53 2016 +0200 + + testsuite: Test for circular cluster chain + + The test image contains a file four clusters in length where the third + cluster has been modified to point back to the second cluster. + + Signed-off-by: Andreas Bombe + +commit fab40f8 +Author: Andreas Bombe +Date: Mon Sep 12 19:51:10 2016 +0200 + + Fix truncation logic in circular chain check + + When scanning for circular chains, the first FAT entry that appeared a + second time in a chain should cause the previous cluster to be the + termination of the chain. + + To that end, test_file() keeps variables to point to the previous + cluster and the current number of clusters. When the -t option is given, + all clusters are checked to be readable and skipped (variables not + updates) in test_file() when they are not. + + The problem was that the variables were updated only when the read check + succeeded. If the -t option is not given, that check does not happen and + the variables keep their initial value. The circular chain fix would + then always truncate to zero length and fail to update the free cluster + count, requiring a second fsck run. + + Fix by updating these variables unconditionally when -t option is not + given. + + Signed-off-by: Andreas Bombe + +commit 8394ceb +Author: Andreas Bombe +Date: Mon Sep 12 14:39:11 2016 +0200 + + testsuite: Test for too long cluster chain + + The test image contains a file marked as 7 bytes in length (just a small + part of 1 cluster) in the directory entry that has 2 clusters assigned + to it in the FAT. + + Signed-off-by: Andreas Bombe + +commit 7444694 +Author: Andreas Bombe +Date: Wed Sep 7 21:09:41 2016 +0200 + + Fix definition and initialization of fsinfo sector + + Change the definition of the fsinfo struct to be more in line with the + official definition, in particular make the trailing signature field 32 + bit instead of 16 bit. During initialization in init_fsinfo(), first + clear the whole struct to zero before setting fields, to make sure + reserved fields are zeroed. + + Fixes #33. + + Signed-off-by: Andreas Bombe + +commit f78cb68 +Author: Andreas Bombe +Date: Wed Sep 7 20:45:29 2016 +0200 + + Add fsck testsuite + + Add the framework for a fsck testsuite and a few tests, including a test + for the yet unimplemented check for misordered dot/dotdot directory + entries. + + The test driver runs fsck twice on a given image and fails the test if + the first run does not detect an error or the second run still detects + an error. + + Signed-off-by: Andreas Bombe + +commit 7667295 +Author: Andreas Bombe +Date: Tue May 31 03:32:42 2016 +0200 + + Add testsuite foundations + + Add testsuite on the basis of the automake framework. As a start, three + tests for basic mkfs functionality compare mkfs generated images against + references images. + + Signed-off-by: Andreas Bombe + +commit f881195 +Author: Andreas Bombe +Date: Wed Sep 7 03:48:16 2016 +0200 + + Append +git to version number in configure.ac + + Don't let dosfstools compiled from git with additional commits show the + exact release version number. + + Signed-off-by: Andreas Bombe + +commit 8788615 +Author: Álvaro Fernández Rojas +Date: Thu Jun 30 08:43:50 2016 +0200 + + Add config.guess and config.sub to gitignore + + Signed-off-by: Álvaro Fernández Rojas + Signed-off-by: Andreas Bombe + +commit 39ab842 +Author: Álvaro Fernández Rojas +Date: Thu Jun 30 08:41:51 2016 +0200 + + Use autoconf to look for OS X endian include. + + Signed-off-by: Álvaro Fernández Rojas + Signed-off-by: Andreas Bombe + +commit 69ac2b0 +Author: Alessio Sergi +Date: Fri May 6 18:18:18 2016 +0200 + + src/device_info.c: Fix undefined PATH_MAX under musl + + In musl libc, PATH_MAX is defined in . + + Signed-off-by: Andreas Bombe + +commit 744db84 +Author: Lars Wendler +Date: Tue May 10 09:47:57 2016 +0200 + + Don't link to udev via LDFLAGS. There's LDADD for such a task. + + See also: + https://www.gnu.org/software/automake/manual/html_node/Linking.html + + Signed-off-by: Lars Wendler + Signed-off-by: Andreas Bombe + +commit 1e76e57 +Author: Andreas Bombe +Date: Wed May 11 03:44:58 2016 +0200 + + mkfs: Default to 64/32 heads/sectors for targets smaller than 512 MB + + This may put defaults in certain use cases a little bit more in line + with the old defaults in versions up to 3.0.28. It has mostly aesthetic + value in most cases. + + Signed-off-by: Andreas Bombe + +commit 786e66e (tag: v4.0) +Author: Andreas Bombe +Date: Fri May 6 03:19:07 2016 +0200 + + Releasing version 4.0. + + Signed-off-by: Andreas Bombe + +commit a79ff90 +Author: Andreas Bombe +Date: Fri May 6 02:34:42 2016 +0200 + + src/Makefile.am: Fix CPPFLAGS for VPATH builds + + The -I flag to add the blkdev subdir to the include search path is now + relative to $(srcdir) to allow VPATH builds to work. Additionally move + the -I flag from the mkfs_fat and testdevinfo CFLAGS to CPPFLAGS where + it actually belongs. + + Signed-off-by: Andreas Bombe + +commit e8eff14 +Author: Andreas Bombe +Date: Wed Apr 27 21:38:37 2016 +0200 + + read_boot(): Handle excessive FAT size specifications + + The variable used for storing the FAT size (in bytes) was an unsigned + int. Since the size in sectors read from the BPB was not sufficiently + checked, this could end up being zero after multiplying it with the + sector size while some offsets still stayed excessive. Ultimately it + would cause segfaults when accessing FAT entries for which no memory + was allocated. + + Make it more robust by changing the types used to store FAT size to + off_t and abort if there is no room for data clusters. Additionally + check that FAT size is not specified as zero. + + Fixes #25 and fixes #26. + + Reported-by: Hanno Böck + Signed-off-by: Andreas Bombe + +commit 016800e +Author: Andreas Bombe +Date: Wed Apr 27 14:16:53 2016 +0200 + + Use variable total_fat_entries in read_boot() for readability + + Signed-off-by: Andreas Bombe + +commit a6478d8 +Author: Álvaro Fernández Rojas +Date: Fri Apr 8 12:20:46 2016 +0200 + + Add missing iconv library for OS X + + Signed-off-by: Álvaro Fernández Rojas + Signed-off-by: Andreas Bombe + +commit ce67dc6 +Author: Álvaro Fernández Rojas +Date: Fri Apr 8 12:20:27 2016 +0200 + + Add endian support for OS X + + Signed-off-by: Álvaro Fernández Rojas + Signed-off-by: Andreas Bombe + +commit 08f3869 +Author: Joel Holdsworth +Date: Thu Mar 10 00:53:07 2016 +0000 + + Configure option to disable building with libudev + + Signed-off-by: Andreas Bombe + +commit ed4e47b +Author: Andreas Bombe +Date: Mon Feb 22 03:47:14 2016 +0100 + + Remove use of PATH_MAX in path_name() + + The length of a file path on the checked filesystem has no relation to + the maximum path length of the system fsck is running on. So replace it + with a constant of our own. + + As a bonus this will not fail compilation on a system without PATH_MAX. + + Signed-off-by: Andreas Bombe + +commit b1a38ab +Author: Andreas Bombe +Date: Wed Feb 17 21:04:35 2016 +0100 + + Add preliminary entry for release 4.0 to NEWS + + Signed-off-by: Andreas Bombe + +commit 4ad3e9e +Author: Andreas Bombe +Date: Wed Feb 17 21:02:06 2016 +0100 + + Adjust ridiculous source indentation in io.c + + Signed-off-by: Andreas Bombe + +commit b96acb2 +Author: Andreas Bombe +Date: Wed Feb 17 20:51:53 2016 +0100 + + Document ./configure --enable-compat-symlinks in README + + Signed-off-by: Andreas Bombe + +commit de39c5c +Author: Andreas Bombe +Date: Wed Feb 17 15:16:27 2016 +0100 + + Add include paths.h in the HAVE_DECL_GETMNTENT case + + _PATH_MOUNTED is now used for getmntent() in place of MOUNTED because + the latter was marked as a deprecated alias in glibc's mntent.h. The + mntent.h of musl libc does not include the _PATH_MOUNTED however. Fix + this by including paths.h alongside mntent.h + + Signed-off-by: Andreas Bombe + +commit 86c7acd +Author: Andreas Bombe +Date: Wed Feb 17 15:06:56 2016 +0100 + + man fsck: Document the -c option + + Signed-off-by: Andreas Bombe + +commit ef9a73c +Author: Andreas Bombe +Date: Mon Feb 15 02:10:57 2016 +0100 + + Add NEWS file with changes of the last two releases + + Signed-off-by: Andreas Bombe + +commit bda6551 +Author: Andreas Bombe +Date: Fri Feb 12 03:56:16 2016 +0100 + + Make filesystem mounted check portable + + A new function is_device_mounted() in device_info.c is now used by + check_mount() in mkfs.fat.c. It contains the getmntent() using code + used before in check_mount() and now an alternative using getmntinfo() + as found on the BSDs. + + In case neither function is available, is_device_mounted() defaults to + reporting that the device isn't mounted. + + Signed-off-by: Andreas Bombe + +commit 4b8c9cc +Author: Andreas Bombe +Date: Fri Feb 12 01:57:33 2016 +0100 + + Make use of endian.h portable to BSD + + The endian.h found on Linux and the BSDs appear to be compatible, but + they are found in different locations. Add tests in configure.ac and a + new endian_compat.h file that has the logic to include the correct + files. + + Signed-off-by: Andreas Bombe + +commit d7665f2 +Author: Andreas Bombe +Date: Wed Feb 10 21:30:06 2016 +0100 + + Fix format string in check_file() (%lu → %llu) + + The cluster chain length printing needs a 64 bit calculation, so we can + just use unsigned long long instead of uint64_t and use the format + string %llu. + + Signed-off-by: Andreas Bombe + +commit 6225e59 +Author: Andreas Bombe +Date: Fri Feb 5 14:39:00 2016 +0100 + + blkdev.c: Prevent unused parameter warnings in fallback code + + Signed-off-by: Andreas Bombe + +commit 34cdded +Author: Andreas Bombe +Date: Fri Feb 5 14:36:14 2016 +0100 + + blkdev_get_size(): Remove unused variable ch + + Signed-off-by: Andreas Bombe + +commit 5571d29 +Author: Andreas Bombe +Date: Wed Feb 10 03:22:19 2016 +0100 + + Reinstate alignment of FAT32 structures to cluster size + + This reverts commits 17c956cb9 and d63e0d627 where the alignment was + removed because it created problems with a device that refused to read + the aligned filesystem. The option -a is already provided to disable + alignment in order to handle such cases. + + This change brings it back in line with FAT12/16 where alignment wasn't + disabled and brings consistency with the current command line options, + where only the option to disable alignment exists but no opposite option + to enable it. + + Signed-off-by: Andreas Bombe + +commit 2c71ace +Author: Andreas Bombe +Date: Wed Feb 3 03:38:33 2016 +0100 + + Makefile.am: Add historic documentation to distribution + + Signed-off-by: Andreas Bombe + +commit bcbae63 +Author: Andreas Bombe +Date: Wed Feb 3 02:38:24 2016 +0100 + + src/Makefile.am: Add forgotten msdos_fs.h to mkfs_fat_SOURCES + + Signed-off-by: Andreas Bombe + +commit 19d1a13 +Author: Andreas Bombe +Date: Wed Feb 3 02:34:51 2016 +0100 + + Remove sys/ioctl.h and linux/fd.h include from io.c + + These weren't used anymore and the linux/fd.h include would + gratuitously cause compilation to fail on non-Linux environments. + + Signed-off-by: Andreas Bombe + +commit f691660 +Author: Andreas Bombe +Date: Wed Feb 3 02:31:00 2016 +0100 + + Reinstate some #include + + These shouldn't have been removed in commit 245d0cce5. Put them back for + correctness even though the definitions were pulled in implicitly. + + Signed-off-by: Andreas Bombe + +commit 51afd41 +Author: Andreas Bombe +Date: Wed Jan 27 21:38:29 2016 +0100 + + src/Makefile.am: Put all header files in appropriate _SOURCES variables + + With the headers missing the dist targets of the automake generated + Makefiles would not include them and make the resulting dist + unbuildable. + + Also combine sources collections into common variables for + deduplication. + + Signed-off-by: Andreas Bombe + +commit bf6f142 +Author: Andreas Bombe +Date: Wed Jan 27 15:28:42 2016 +0100 + + mkfs man: Note that sector sizes > 4096 are non-standard + + Signed-off-by: Andreas Bombe + +commit ea96c32 +Author: Andreas Bombe +Date: Mon Jan 25 21:30:23 2016 +0100 + + mkfs: Improve parsing of bad blocks file + + The bad blocks file that can be given to mkfs via the -l option had a + very simplistic design. It failed to notice it was parsing an empty + line and would report errors for that. + + Replace it with a more robust version that ignores empty lines as well + as leading and trailing white space. Additionally it produces meaningful + error messages. + + GitHub: Fixes #17 + Signed-off-by: Andreas Bombe + +commit dfb5bea +Author: Andreas Bombe +Date: Mon Jan 25 02:47:12 2016 +0100 + + mkfs: Limit filesystem size on targets that are too large + + For FAT filesystems, the number of sectors has to fit into a 32 bit + variable. Previously this was not checked possibly causing invalid + filesystems to be generated. + + Now there is a check for that case which will limit the number of + sectors if needed and print a warning that disk space will be left + unused in that case. + + Signed-off-by: Andreas Bombe + +commit fc0343f +Author: Andreas Bombe +Date: Fri Jan 22 21:29:20 2016 +0100 + + mkfs: Improved bounds checking in mark_FAT_sector()/mark_FAT_cluster() + + In mark_FAT_sector() the sector number itself is now checked against + limits instead of the computed cluster number. Even with sector number + before the start of the data area, the cluster number may be valid for + the first cluster due to dividing by the cluster size. + + Both functions now check for upper limits and should prevent writing + past the valid end of the FAT. + + Signed-off-by: Andreas Bombe + +commit 9211c8a +Author: Andreas Bombe +Date: Fri Jan 15 02:17:16 2016 +0100 + + mkfs: Fix offset error in FAT12/16 bad cluster marking + + The root directory wasn't factored in to the calculation of the data + area start sector. On FAT32 the root directory is in the data area, but + for FAT12 and FAT16 it is a reserved space before the start of the data + area. + + On FAT12 and FAT16, this resulted in the wrong clusters being marked + during bad blocks mapping, whether from check_blocks() or from reading + the user supplied bad blocks file. + + Signed-off-by: Andreas Bombe + +commit 0627a62 +Author: Andreas Bombe +Date: Fri Jan 15 01:59:59 2016 +0100 + + mkfs: Fix off-by-2 error in bad cluster marking + + mark_FAT_sector(), which has the mark_sector_bad() macro as its sole + user, computed the cluster number corresponding to the sector by taking + its offset from the first data sector and dividing by sectors per + cluster. + + What it missed was that the first data cluster is number 2 and not 0. + This meant all marks were off by 2 and when the first two clusters are + supposed to be marked, it would overwrite the reserved cluster values + and create an invalid filesystem. + + Signed-off-by: Andreas Bombe + +commit 2dca9aa +Author: Andreas Bombe +Date: Thu Jan 14 14:43:00 2016 +0100 + + .gitignore: Add .dirstamp + + Signed-off-by: Andreas Bombe + +commit 6a966fb +Author: Andreas Bombe +Date: Thu Jan 14 14:38:53 2016 +0100 + + mkfs: Reword non-standard sector size warning + + Signed-off-by: Andreas Bombe + +commit bebc9ac +Author: Andreas Bombe +Date: Wed Dec 30 15:10:35 2015 +0100 + + Clean up includes in mkfs.fat.c + + Moving the device probing out into device_info.c removed the need for a + number of includes in mkfs.fat.c. Remove them and add a define for + BLOCK_SIZE, which was the only thing used from linux/fs.h. + + Signed-off-by: Andreas Bombe + +commit 12a1d46 +Author: Andreas Bombe +Date: Sun Nov 29 01:59:10 2015 +0100 + + Don't use pointer to first member when more of the struct gets copied + + Where a fs_write() of "first 13 bytes of directory entry" is intended, + actually use pointer to directory entry structure instead of the 11 + byte name field at the beginning. + + This does not change how the code works, it is just a clean up. + + Signed-off-by: Andreas Bombe + +commit d38bd2d +Author: Andreas Bombe +Date: Sun Nov 29 00:44:48 2015 +0100 + + Remove name/extension split in directory entry structures + + Both the DIR_ENT structure in fsck.fat.h and the msdos_dir_entry in + msdos_fs.h - these represent the on disk format of directory entries - + had the name field split into name[8] followed by ext[3]. + + By far the most operations on name are on the full name including + extension and they treated the name field as an 11 byte array. This is + an array overflow that worked because the structs have the attribute + packed and the extension field is following right after. + + Nevertheless, this is not clean C and the merging of both fields + actually simplified the code in a few places. + + Signed-off-by: Andreas Bombe + +commit 0847e4c +Author: Andreas Bombe +Date: Fri Nov 27 21:29:49 2015 +0100 + + Free allocated strings after use + + There are multiple calls to cnv_unicode() in lfn.c which returns an + allocated string. Most had the appropriate free() calls after printing + the strings. Add the missing two calls where memory was leaked. + + Found by Coverity. + + Signed-off-by: Andreas Bombe + +commit 1b7d91e +Author: Andreas Bombe +Date: Fri Nov 27 03:34:51 2015 +0100 + + Add test for and include linux/hdreg.h in blkdev.c + + Before, blkdev did not include it and depended on its own fallback + definition of the ioctl and struct hd_geometry. + + Signed-off-by: Andreas Bombe + +commit 5024372 +Author: Andreas Bombe +Date: Fri Nov 27 03:28:14 2015 +0100 + + Add FDGETPRM attempt to blkdev_get_geometry() + + If HDIO_GETGEO isn't available or has failed, try FDGETPRM. This should + get the geometry from floppy drivers where HDIO_GETGEO isn't supported. + + Signed-off-by: Andreas Bombe + +commit 4a146d7 +Author: Andreas Bombe +Date: Fri Nov 27 03:25:55 2015 +0100 + + Add blkdev_get_start() for getting partition start offset + + Signed-off-by: Andreas Bombe + +commit 254f8ab +Author: Andreas Bombe +Date: Thu Nov 26 23:33:02 2015 +0100 + + Remove use of libblkid again + + It appears libblkid is not as widely available as presumed, since some + platforms only have the original libblkid included in e2fsprogs which + lacks the needed functionality. This commit removes the requirement and + use of libblkid. + + As a replacement, blkdev.c from util-linux is included, which offers the + required basic functionality in a portable way. + + Signed-off-by: Andreas Bombe + +commit c9fb33c +Author: Andreas Bombe +Date: Wed Oct 21 21:32:30 2015 +0200 + + Use just device size not major number in Atari mode + + In Atari mode, read_boot() in boot.c used the device major number to + determine whether to use FAT12. It would always use FAT12 for a floppy, + otherwise only if it is a RAM disk or loopback device and has a size + corresponding to standard floppy formats. + + Since this check was already broken for a long time (another place that + assumed 8 bit major numbers) and there is no real point to make the + distinction based on device, this commit reduces the check to just + compare against standard floppy sizes. + + Signed-off-by: Andreas Bombe + +commit 64486ad +Author: Andreas Bombe +Date: Wed Oct 21 00:18:22 2015 +0200 + + Remove loff_t and llseek() + + There appear to have been multiple conversions to 64 bit file offsets on + 32 bit architectures in dosfstools over the years, but today with the + proper setup off_t is 64 bits and simple lseek() can be used. The + AC_SYS_LARGEFILE macro in configure.ac does what is required to make + that happen. + + Given this, convert all uses of loff_t to off_t, remove llseek() + definitions and change llseek() calls to plain lseek(). + + Signed-off-by: Andreas Bombe + +commit e03a5f4 +Author: Andreas Bombe +Date: Fri Oct 16 21:47:04 2015 +0200 + + Remove DJGPP support + + These macros have been added back when dosfstools was around version 2. + It is difficult to say whether these are still working correctly or + whether they are in use at all. FreeDOS appears to still show version + 2.11 of dosfstools in their software directory. + + Supporting actual MS-DOS or compatible may need more work in the + current state of things and this DJGPP support can be removed until + then. + + Signed-off-by: Andreas Bombe + +commit 5b9a88d +Author: Andreas Bombe +Date: Thu Oct 8 16:17:22 2015 +0200 + + mkfs.fat: Complete overhaul of device probing + + The device probing in mkfs.fat is used to get device parameters where + needed and also to decide whether to refuse overwriting a device due to + possible user error. This code has suffered severe bitrot and is highly + Linux specific. Highlights include using hardcoded major/minor device + numbers to classify a device, and using 8 bits major/minor numbers that + have become obsolete a long time ago and thus often misidentifying a + device. + + The overhauled implementation is now in src/device_info.c and makes use + of libudev (optional, recommended) and libblkid (required) to probe the + device and where Linux ioctls are required it provides fallbacks and + does not attempt to call these on non-Linux systems. The FAT parameter + selection has been unified and simplified in the process. + + A new executable testdevinfo has been added that gets built but not + automatically installed. It takes one file name, uses the same probing + as mkfs.fat would with verbose messages enabled and displays the + results. + + Signed-off-by: Andreas Bombe + +commit 53eddfc +Author: Andreas Bombe +Date: Sat Sep 12 02:54:33 2015 +0200 + + Die on out of range cluster values in set_fat()/get_fat() + + To prevent bugs caused by FAT corruption inside fsck to go unnoticed, + add a check against out of range requested cluster values in get_fat() + and against out of range cluster to change and new cluster value in + set_fat(). + + When an invalid cluster value is detected, these functions now die() + with an "internal error" message. + + Signed-off-by: Andreas Bombe + +commit 456767b +Author: Andreas Bombe +Date: Mon Sep 14 00:33:49 2015 +0200 + + configure.ac: Use AS_HELP_STRING to format option help + + Signed-off-by: Andreas Bombe + +commit 3cfb479 +Author: Andreas Bombe +Date: Mon Sep 14 00:30:40 2015 +0200 + + version.h: Use @configure_input@ autoconf variable in boilerplate + + Signed-off-by: Andreas Bombe + +commit 41ef834 +Author: Andreas Bombe +Date: Mon Sep 14 00:29:27 2015 +0200 + + .gitignore: Add TAGS in addition to tags + + Signed-off-by: Andreas Bombe + +commit bdc3d2a +Author: Andreas Bombe +Date: Fri Sep 11 20:28:12 2015 +0200 + + Rename clusters field in DOS_FS struct + + Rename it to data_clusters to prevent mistaking the clusters field of + the DOS_FS struct as the total number of FAT entries instead of the + number of data clusters (two less than the number of entries). + + Signed-off-by: Andreas Bombe + +commit 0790812 +Author: Andreas Bombe +Date: Fri Sep 11 19:47:29 2015 +0200 + + set_fat(): Fix off-by-2 error leading to corruption in FAT12 + + In FAT12 two 12 bit entries are combined to a 24 bit value (three + bytes). Therefore, when an even numbered FAT entry is set in FAT12, it + must be be combined with the following entry. To prevent accessing + beyond the end of the FAT array, it must be checked that the cluster is + not the last one. + + Previously, the check tested that the requested cluster was equal to + fs->clusters - 1. However, fs->clusters is the number of data clusters + not including the two reserved FAT entries at the start so the test + triggered two clusters early. + + If the third to last entry was written on a FAT12 filesystem with an + odd number of clusters, the second to last entry would be corrupted. + This corruption may also lead to invalid memory accesses when the + corrupted entry becomes out of bounds and is used later. + + Change the test to fs->clusters + 1 to fix. + + Reported-by: Hanno Böck + Signed-off-by: Andreas Bombe + +commit 39ce90f +Author: Andreas Bombe +Date: Fri Sep 11 19:34:10 2015 +0200 + + set_fat(): Move FAT12 next cluster check up + + In FAT12 two 12 bit entries are combined to a 24 bit value (three + bytes). Therefore, when an even numbered FAT entry is set in FAT12, it + must be be combined with the following entry. To prevent accessing + beyond the end of the FAT array, it must be checked that the cluster is + not the last one. + + This check was broken in ff1b24e9 (first included in 3.0.3) as the + lookup was done unconditionally and the check influenced only using the + looked up value. + + Move the check up to fix. + + Signed-off-by: Andreas Bombe + +commit 2aad1c8 +Author: Andreas Bombe +Date: Tue Sep 8 03:58:29 2015 +0200 + + Prevent out of bound array read in date_dos2unix() + + The function date_dos2unix() is called during fsck while showing + information about duplicate file names. In case the date field of a + directory entry contains the invalid value 0 for the month, + date_dos2unix would read index -1 of the day_n array. + + Add a check to prevent that and also make the day_n array const on this + occasion. + + Reported-by: Hanno Böck + Signed-off-by: Andreas Bombe + +commit 3b95786 +Author: Yann E. MORIN +Date: Sun Aug 16 15:55:43 2015 +0200 + + mkfs.fat: fix incorrect int type + + u_int32_t is not a stanard type, while uint32_t is. This fixes builds + with the musl C library, which only defines so-called "clean" headers; + build failures are like (back-quotes and elision manually added for + readability): + + http://autobuild.buildroot.org/results/a09/a0923d7f6d4dbae02eba4c5024bbdae3a52aa85a/build-end.log + + /home/peko/autobuild/instance-1/output/host/usr/bin/x86_64-linux-gcc -D_LARGEFILE_SOURCE \ + -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -D_GNU_SOURCE -D_LARGEFILE_SOURCE \ + -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -c -o mkfs.fat.o src/mkfs.fat.c + src/mkfs.fat.c: In function 'main': + src/mkfs.fat.c:1415:18: error: 'u_int32_t' undeclared (first use in this function) + volume_id = (u_int32_t) ((create_timeval.tv_sec << 20) | create_timeval.tv_usec); [...] + ^ + src/mkfs.fat.c:1415:18: note: each undeclared identifier is reported only once for each + function it appears in + + Signed-off-by: "Yann E. MORIN" + Signed-off-by: Andreas Bombe + +commit 2b1c4d1 +Author: Andreas Bombe +Date: Wed Jun 3 03:33:10 2015 +0200 + + Add README.md, remove Markdown formatting from README + + Signed-off-by: Andreas Bombe + +commit b720acc +Author: Andreas Bombe +Date: Wed Jun 3 03:27:24 2015 +0200 + + Add simple README in Markdown format + + Signed-off-by: Andreas Bombe + +commit 2b255e6 +Author: Andreas Bombe +Date: Tue Jun 2 18:25:06 2015 +0200 + + Configure option for legacy names symlinks + + The symlinks from the old names (mkdosfs, dosfsck, etc.) are now only + created on "make install" when the --enable-compat-symlinks option was + given to configure. + + Signed-off-by: Andreas Bombe + +commit 0643db7 +Author: Andreas Bombe +Date: Sun May 31 02:40:19 2015 +0200 + + Convert build system to autoconf/automake + + In preparation for fixing the horribly outdated and broken device + checking - which will likely involve using additional libraries like + libblkid - as well as making this package portable to other operating + systems, the build system is now the tried and true autoconf/automake + combination which should make both goals a little more straightforward. + + The release version number and date are now in configure.ac and + substituted by configure where they are needed. Now it is no longer + necessary to change the number in multiple places for a release and the + man pages get the number substituted directly into them, making the + update-version.sh script and the VERSION file obsolete. + + The English man pages are moved back up one directory to mark their + status as the master copy for all translations. At the moment the po4a + translation infrastructure is defunct since it isn't integrated into + the automake environment yet. So far it hasn't been used, so that is + not an actual regression. + + The date in the man pages is not automatically updated anymore. This is + as it should be, since the date is supposed to signify the time of the + last nontrivial change and not the release date of the software. + + Signed-off-by: Andreas Bombe + +commit 85022fe (tag: v3.0.28) +Author: Andreas Bombe +Date: Sat May 16 02:56:17 2015 +0200 + + Releasing version 3.0.28. + + Signed-off-by: Andreas Bombe + commit ad1342e Author: Andreas Bombe Date: Sat May 16 02:10:18 2015 +0200 diff --git a/sdk/lib/fslib/vfatlib/check/README b/sdk/lib/fslib/vfatlib/check/README index 8fe824937f8..8ce3d88def2 100644 --- a/sdk/lib/fslib/vfatlib/check/README +++ b/sdk/lib/fslib/vfatlib/check/README @@ -9,6 +9,9 @@ dosfstools recommends libudev. It is used in mkfs.fat to collect additional information about the device to format in order to refuse potentially unsafe operations without additional confirmation. +The test suite requires the tool xxd (available as part of the vim +distribution). + ### Installing @@ -28,6 +31,17 @@ installation. These are dosfsck, fsck.msdos and fsck.vfat for fsck.fat, mkdosfs, mkfs.msdos and mkfs.vfat for mkfs.fat and dosfslabel for fatlabel. +### Running the test suite + +The test suite can be run with "make check" after configuring. Note that if +xxd isn't available, all tests will be skipped and nothing actually tested. + +During the tests temporary files of multiple GB in size will be created, but the +actual data content is not more than a few MB. The operating system and the +filesystem the tests are executed on should support sparse files, otherwise the +tests will be resource intensive. + + ### Building from the VCS repository If you are working directly from a git clone of the official dosfstools