From: Theodore Ts'o Date: Tue, 23 Feb 2010 04:51:26 +0000 (-0500) Subject: e2fsck: Fix bug which can cause e2fsck -fD to corrupt non-indexed directories X-Git-Tag: v1.41.11~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=53fbfb2bc3490d0ff317666322dd077c08116e0c;p=thirdparty%2Fe2fsprogs.git e2fsck: Fix bug which can cause e2fsck -fD to corrupt non-indexed directories E2fsprogs 1.41.10 introduced a regression (in commit b71e018) where e2fsck -fD can corrupt non-indexed directories when are exists one or more file names which alphabetically sort before ".". This can happen with ext2 filesystems or for small directories (take less than a block) which contain filenames that begin with a space or some other punctuation mark. Fix this by making sure we never reorder the '.' or '..' entry in the directory, since they must be first. Signed-off-by: "Theodore Ts'o" --- diff --git a/e2fsck/rehash.c b/e2fsck/rehash.c index 780742e99..ceb8543a5 100644 --- a/e2fsck/rehash.c +++ b/e2fsck/rehash.c @@ -763,7 +763,12 @@ retry_nohash: /* Sort the list */ resort: - qsort(fd.harray, fd.num_array, sizeof(struct hash_entry), hash_cmp); + if (fd.compress) + qsort(fd.harray+2, fd.num_array-2, sizeof(struct hash_entry), + hash_cmp); + else + qsort(fd.harray, fd.num_array, sizeof(struct hash_entry), + hash_cmp); /* * Look for duplicates