[PATCH 3/4] uefidump: add checking the resonable path list length for load option
Ivan Hu
ivan.hu at canonical.com
Wed Apr 20 03:20:06 UTC 2016
Signed-off-by: Ivan Hu <ivan.hu at canonical.com>
---
src/uefi/uefidump/uefidump.c | 21 ++++++++++++---------
1 file changed, 12 insertions(+), 9 deletions(-)
diff --git a/src/uefi/uefidump/uefidump.c b/src/uefi/uefidump/uefidump.c
index 43f70cf..6a3fcdb 100644
--- a/src/uefi/uefidump/uefidump.c
+++ b/src/uefi/uefidump/uefidump.c
@@ -807,7 +807,6 @@ static void uefidump_info_bootdev(fwts_framework *fw, fwts_uefi_var *var)
{
fwts_uefi_load_option *load_option;
char tmp[2048];
- char *path;
size_t len, offset;
if (var->datalen < sizeof(fwts_uefi_load_option))
@@ -820,15 +819,19 @@ static void uefidump_info_bootdev(fwts_framework *fw, fwts_uefi_var *var)
len = fwts_uefi_str16len(load_option->description);
fwts_log_info_verbatum(fw, " Info: %s\n", tmp);
- /* Skip over description to get to packed path, unpack path and print */
- offset = sizeof(load_option->attributes) +
- sizeof(load_option->file_path_list_length) +
- (sizeof(uint16_t) * (len + 1));
+ if (load_option->file_path_list_length != 0) {
+ char *path;
- path = uefidump_build_dev_path(NULL,
- (fwts_uefi_dev_path *)(var->data + offset), var->datalen - offset);
- fwts_log_info_verbatum(fw, " Path: %s.", path);
- free(path);
+ /* Skip over description to get to packed path, unpack path and print */
+ offset = sizeof(load_option->attributes) +
+ sizeof(load_option->file_path_list_length) +
+ (sizeof(uint16_t) * (len + 1));
+
+ path = uefidump_build_dev_path(NULL,
+ (fwts_uefi_dev_path *)(var->data + offset), var->datalen - offset);
+ fwts_log_info_verbatum(fw, " Path: %s.", path);
+ free(path);
+ }
offset = sizeof(load_option->attributes) +
sizeof(load_option->file_path_list_length) +
--
1.9.1
More information about the fwts-devel
mailing list