diff options
author | Kirk McKusick <mckusick@FreeBSD.org> | 2023-06-07 23:12:12 +0000 |
---|---|---|
committer | Kirk McKusick <mckusick@FreeBSD.org> | 2023-06-07 23:12:12 +0000 |
commit | 95fc911fe9f258ab9baa6b9fa1b1643f86b103b6 (patch) | |
tree | 33497117814c714a0bcadca5f84f9bc89136c666 | |
parent | a4bea5c479d84d5fb10c6d78abce504253fe8e1d (diff) | |
download | src-95fc911fe9f258ab9baa6b9fa1b1643f86b103b6.tar.gz src-95fc911fe9f258ab9baa6b9fa1b1643f86b103b6.zip |
Updates to UFS/FFS superblock integrity checks when reading a superblock.
Reported-by: Robert Morris
PR: 271351
Sponsored-by: The FreeBSD Foundation
(cherry picked from commit c79a1416955a260424a5dd2013b114ff864bc926)
-rw-r--r-- | sys/ufs/ffs/ffs_subr.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/ufs/ffs/ffs_subr.c b/sys/ufs/ffs/ffs_subr.c index 4ba452b05ec9..813736c9d070 100644 --- a/sys/ufs/ffs/ffs_subr.c +++ b/sys/ufs/ffs/ffs_subr.c @@ -505,7 +505,8 @@ validate_sblock(struct fs *fs, int isaltsblk) CHK(fs->fs_csaddr, <, 0, %jd); CHK(fs->fs_cssize, !=, fragroundup(fs, fs->fs_ncg * sizeof(struct csum)), %jd); - CHK(dtog(fs, fs->fs_csaddr), >, fs->fs_ncg, %jd); + CHK(fs->fs_csaddr + howmany(fs->fs_cssize, fs->fs_fsize), >, + fs->fs_size, %jd); CHK(fs->fs_csaddr, <, cgdmin(fs, dtog(fs, fs->fs_csaddr)), %jd); CHK(dtog(fs, fs->fs_csaddr + howmany(fs->fs_cssize, fs->fs_fsize)), >, dtog(fs, fs->fs_csaddr), %jd); |