!32 Fix segfault when passed --index is greater than current boot order size
From: @zhangqiumiao Reviewed-by: @t_feng Signed-off-by: @t_feng
This commit is contained in:
commit
abca62b871
26
backport-Add-missing-short-option-handling-for-index-I.patch
Normal file
26
backport-Add-missing-short-option-handling-for-index-I.patch
Normal file
@ -0,0 +1,26 @@
|
||||
From b0f81089481c10af6e6ac404755830fefee60e93 Mon Sep 17 00:00:00 2001
|
||||
From: kamillo <kamilgolunski@gmail.com>
|
||||
Date: Fri, 17 Feb 2023 21:55:17 +0100
|
||||
Subject: [PATCH] Add missing short option handling for --index (-I)
|
||||
|
||||
Signed-off-by: kamillo <kamilgolunski@gmail.com>
|
||||
---
|
||||
src/efibootmgr.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/efibootmgr.c b/src/efibootmgr.c
|
||||
index 4b15d6d..255f61f 100644
|
||||
--- a/src/efibootmgr.c
|
||||
+++ b/src/efibootmgr.c
|
||||
@@ -1509,7 +1509,7 @@ parse_opts(int argc, char **argv)
|
||||
};
|
||||
|
||||
c = getopt_long(argc, argv,
|
||||
- "aAb:BcCd:De:E:fFgi:kl:L:m:M:n:No:Op:qrt:Tuv::Vwy@:h",
|
||||
+ "aAb:BcCd:De:E:fFgi:I:kl:L:m:M:n:No:Op:qrt:Tuv::Vwy@:h",
|
||||
long_options, &option_index);
|
||||
if (c == -1)
|
||||
break;
|
||||
--
|
||||
2.27.0
|
||||
|
||||
@ -0,0 +1,31 @@
|
||||
From 4a8d9c69050bd01a0be66695fea3b35b72f5a425 Mon Sep 17 00:00:00 2001
|
||||
From: kamillo <kamilgolunski@gmail.com>
|
||||
Date: Fri, 17 Feb 2023 22:02:22 +0100
|
||||
Subject: [PATCH] Fix segfault when passed --index is greater than current
|
||||
boot order size
|
||||
|
||||
Size of the order entry size (uint16_t) hasn't been taken into account for all calculations and caused memory corruption.
|
||||
|
||||
Signed-off-by: kamillo <kamilgolunski@gmail.com>
|
||||
---
|
||||
src/efibootmgr.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/efibootmgr.c b/src/efibootmgr.c
|
||||
index 255f61f..ded21a1 100644
|
||||
--- a/src/efibootmgr.c
|
||||
+++ b/src/efibootmgr.c
|
||||
@@ -420,8 +420,8 @@ add_to_order(const char *name, uint16_t num, uint16_t insert_at)
|
||||
return -1;
|
||||
|
||||
if (insert_at != 0) {
|
||||
- if (insert_at > order->data_size)
|
||||
- insert_at = order->data_size;
|
||||
+ if (insert_at * sizeof(uint16_t) > order->data_size)
|
||||
+ insert_at = order->data_size / sizeof(uint16_t);
|
||||
memcpy(new_data, old_data, insert_at * sizeof(uint16_t));
|
||||
}
|
||||
new_data[insert_at] = num;
|
||||
--
|
||||
2.27.0
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
Name: efibootmgr
|
||||
Release: 3
|
||||
Release: 4
|
||||
Version: 18
|
||||
Summary: A tool manipulating the EFI Boot Manager
|
||||
License: GPLv2+
|
||||
@ -7,6 +7,8 @@ URL: https://github.com/rhboot/%{name}/
|
||||
Source0: https://github.com/rhboot/%{name}/archive/refs/tags/%{version}.tar.gz
|
||||
|
||||
Patch6000: backport-Update-efibootmgr.c.patch
|
||||
Patch6001: backport-Add-missing-short-option-handling-for-index-I.patch
|
||||
Patch6002: backport-Fix-segfault-when-passed-index-is-greater-than-curre.patch
|
||||
|
||||
BuildRequires: gcc
|
||||
BuildRequires: efi-srpm-macros >= 3-2 efi-filesystem git popt-devel efivar-libs >= 38-1 efivar-devel >= 38-1
|
||||
@ -48,6 +50,10 @@ rm -rf %{buildroot}
|
||||
%{_mandir}/*/*.?.gz
|
||||
|
||||
%changelog
|
||||
* Mon Mar 13 2023 zhangqiumiao <zhangqiumiao1@huawei.com> - 18-4
|
||||
- Fix segfault when passed --index is greater than current boot order size
|
||||
Add missing short option handling for --index (-I)
|
||||
|
||||
* Mon Feb 20 2023 zhangqiumiao <zhangqiumiao1@huawei.com> - 18-3
|
||||
- get_entry: return entry if it was found before reaching the end of the list
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user