From: Karel Zak Date: Wed, 15 Apr 2026 18:40:03 +0000 (+0200) Subject: libblkid: erofs: validate blkszbits before checksum calculation X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=e16163db841c769abfe6eb31fb32207a89e8f3e7;p=thirdparty%2Futil-linux.git libblkid: erofs: validate blkszbits before checksum calculation Signed-off-by: Karel Zak --- diff --git a/libblkid/src/superblocks/erofs.c b/libblkid/src/superblocks/erofs.c index 57fd80220..dd3022654 100644 --- a/libblkid/src/superblocks/erofs.c +++ b/libblkid/src/superblocks/erofs.c @@ -52,6 +52,13 @@ static int erofs_verify_checksum(blkid_probe pr, const struct blkid_idmag *mag, return 1; expected = le32_to_cpu(sb->checksum); + + /* kernel validates blkszbits 9..PAGE_SHIFT; + * block size must be > EROFS_SUPER_OFFSET to avoid underflow */ + if (sb->blkszbits < 9 || sb->blkszbits > 16 + || (1U << sb->blkszbits) <= EROFS_SUPER_OFFSET) + return 0; + csummed_size = (1U << sb->blkszbits) - EROFS_SUPER_OFFSET; csummed = blkid_probe_get_sb_buffer(pr, mag, csummed_size);