summaryrefslogtreecommitdiffstats
path: root/e2fsprogs-1.41-group-checksum-tests
blob: 8fedab9b5e098d4aef174ea1c6f268ce7fd60634 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
From: Theodore Ts'o <tytso@mit.edu>
Date: Sun, 13 Jul 2008 23:03:59 +0000 (-0400)
Subject: libext2fs: Don't check the group checksum when !GDT_CSUM
X-Git-Url: http://git.kernel.org/?p=fs%2Fext2%2Fe2fsprogs.git;a=commitdiff_plain;h=4729455f0a68f2fa0a83ec8460d1d4bccba9dcfa

libext2fs: Don't check the group checksum when !GDT_CSUM

ext2fs_group_desc_csum_verify() is always checking the bg_checksum (to
make sure it is zero) even when the GDT_CSUM feature is not present.
This is normally OK, but apparently there are filesystems in the wild
where this field has not be initialized to zero.

Addresses-Debian-Bug: #490637

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
---

diff --git a/lib/ext2fs/csum.c b/lib/ext2fs/csum.c
index ce1508e..6a49d8f 100644
--- a/lib/ext2fs/csum.c
+++ b/lib/ext2fs/csum.c
@@ -60,8 +60,10 @@ STATIC __u16 ext2fs_group_desc_csum(ext2_filsys fs, dgrp_t group)
 
 int ext2fs_group_desc_csum_verify(ext2_filsys fs, dgrp_t group)
 {
-	if (fs->group_desc[group].bg_checksum != 
-	    ext2fs_group_desc_csum(fs, group))
+	if (EXT2_HAS_RO_COMPAT_FEATURE(fs->super,
+				       EXT4_FEATURE_RO_COMPAT_GDT_CSUM) &&
+	    (fs->group_desc[group].bg_checksum != 
+	     ext2fs_group_desc_csum(fs, group)))
 		return 0;
 
 	return 1;