From: Glenn Washburn Date: Tue, 8 Dec 2020 22:45:46 +0000 (-0600) Subject: luks2: Error check segment.sector_size X-Git-Tag: grub-2.06-rc1~150 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b298eed00193164dd7c47b8c681da5e5ee741992;p=thirdparty%2Fgrub.git luks2: Error check segment.sector_size Signed-off-by: Glenn Washburn Reviewed-by: Daniel Kiper --- diff --git a/grub-core/disk/luks2.c b/grub-core/disk/luks2.c index 5ba704333..8d2457557 100644 --- a/grub-core/disk/luks2.c +++ b/grub-core/disk/luks2.c @@ -615,6 +615,17 @@ luks2_recover_key (grub_disk_t source, grub_dprintf ("luks2", "Trying keyslot \"%"PRIuGRUB_UINT64_T"\"\n", keyslot.idx); + /* Sector size should be one of 512, 1024, 2048, or 4096. */ + if (!(segment.sector_size == 512 || segment.sector_size == 1024 || + segment.sector_size == 2048 || segment.sector_size == 4096)) + { + grub_dprintf ("luks2", "Segment \"%"PRIuGRUB_UINT64_T"\" sector" + " size %"PRIuGRUB_UINT64_T" is not one of" + " 512, 1024, 2048, or 4096\n", + segment.idx, segment.sector_size); + continue; + } + /* Set up disk according to keyslot's segment. */ crypt->offset_sectors = grub_divmod64 (segment.offset, segment.sector_size, NULL); crypt->log_sector_size = sizeof (unsigned int) * 8