]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
luks2: Error check segment.sector_size
authorGlenn Washburn <development@efficientek.com>
Tue, 8 Dec 2020 22:45:46 +0000 (16:45 -0600)
committerDaniel Kiper <daniel.kiper@oracle.com>
Sat, 12 Dec 2020 00:19:05 +0000 (01:19 +0100)
Signed-off-by: Glenn Washburn <development@efficientek.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
grub-core/disk/luks2.c

index 5ba704333b817f698aec59901908efc552d825e1..8d2457557aecffb993463806137eaae970223993 100644 (file)
@@ -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