diff options
author | Stefan Reinauer <reinauer@chromium.org> | 2011-12-19 15:15:46 -0800 |
---|---|---|
committer | Stefan Reinauer <reinauer@chromium.org> | 2011-12-19 15:48:08 -0800 |
commit | 5c8bfb5ee454c01e60e953c9a4de7ced6a43ff76 (patch) | |
tree | abead68c4511bb8aa671bf835ae11fec99c30f1f | |
parent | 6b0ef22899fd7373084841ec4b35420ab0934a10 (diff) | |
download | vboot-5c8bfb5ee454c01e60e953c9a4de7ced6a43ff76.tar.gz |
Sanity-check output of VbExDiskGetInfo()
BUG=chromium-os:22724
TEST=none
Source change only, nothing for QA to test.
Reviewed-on: https://gerrit.chromium.org/gerrit/11546
Tested-by: Bill Richardson <wfrichar@chromium.org>
Reviewed-by: Gaurav Shah <gauravsh@chromium.org>
(cherry picked from commit 01bf572be8a04b2c4c32b9c6118a084061b42b48)
Change-Id: Id384409160e95bcc5ba251b65369a466d4fb8db0
Reviewed-on: https://gerrit.chromium.org/gerrit/13186
Tested-by: Stefan Reinauer <reinauer@chromium.org>
Reviewed-by: Randall Spangler <rspangler@chromium.org>
-rw-r--r-- | firmware/lib/vboot_api_kernel.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/firmware/lib/vboot_api_kernel.c b/firmware/lib/vboot_api_kernel.c index 344adb64..f2fb47af 100644 --- a/firmware/lib/vboot_api_kernel.c +++ b/firmware/lib/vboot_api_kernel.c @@ -69,6 +69,15 @@ uint32_t VbTryLoadKernel(VbCommonParams* cparams, LoadKernelParams* p, /* Loop over disks */ for (i = 0; i < disk_count; i++) { VBDEBUG(("VbTryLoadKernel() trying disk %d\n", (int)i)); + /* Sanity-check what we can. FWIW, VbTryLoadKernel() is always called + * with only a single bit set in get_info_flags + */ + if (512 != disk_info[i].bytes_per_lba || /* cgptlib restriction */ + 32 > disk_info[i].lba_count || /* ditto */ + get_info_flags != disk_info[i].flags) { /* got only what we asked for */ + VBDEBUG((" skipping - bogus parameters\n")); + continue; + } p->disk_handle = disk_info[i].handle; p->bytes_per_lba = disk_info[i].bytes_per_lba; p->ending_lba = disk_info[i].lba_count - 1; |