Fixes: #13155 - _fireinfo.detect_hypervisor() rises Segmentation fault Signed-off-by: Michael Tremer michael.tremer@ipfire.org --- lfs/fireinfo | 1 + ...-one-error-when-detecting-hypervisor.patch | 38 +++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 src/patches/fireinfo-virt-fix-off-by-one-error-when-detecting-hypervisor.patch
diff --git a/lfs/fireinfo b/lfs/fireinfo index 8b38885d6..629626d1e 100644 --- a/lfs/fireinfo +++ b/lfs/fireinfo @@ -75,6 +75,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/fireinfo/fireinfo-2.2.0-python-3.8.patch cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/fireinfo/fireinfo-system-blacklist-jetways-product-uuid.patch cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/fireinfo/fireinfo-system-ignore-when-the-serial-number-is-ssn.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/fireinfo-virt-fix-off-by-one-error-when-detecting-hypervisor.patch
cd $(DIR_APP) && [ -x "configure" ] || sh ./autogen.sh cd $(DIR_APP) && ./configure --prefix=/usr diff --git a/src/patches/fireinfo-virt-fix-off-by-one-error-when-detecting-hypervisor.patch b/src/patches/fireinfo-virt-fix-off-by-one-error-when-detecting-hypervisor.patch new file mode 100644 index 000000000..0799ecce5 --- /dev/null +++ b/src/patches/fireinfo-virt-fix-off-by-one-error-when-detecting-hypervisor.patch @@ -0,0 +1,38 @@ +From e3e68b9baa9723916b1999394432e9ad260cfaa2 Mon Sep 17 00:00:00 2001 +From: Michael Tremer michael.tremer@ipfire.org +Date: Sat, 1 Jul 2023 09:08:48 +0000 +Subject: [PATCH] virt: Fix off-by-one error when detecting hypervisor + +Reported-by: Mauro Condarelli mc5686@mclink.it +Fixes: #13155 - _fireinfo.detect_hypervisor() rises Segmentation fault +Signed-off-by: Michael Tremer michael.tremer@ipfire.org +--- + src/_fireinfo/fireinfo.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/_fireinfo/fireinfo.c b/src/_fireinfo/fireinfo.c +index 1d3f424..18edf34 100644 +--- a/src/_fireinfo/fireinfo.c ++++ b/src/_fireinfo/fireinfo.c +@@ -32,8 +32,8 @@ enum hypervisors { + HYPER_KVM, + HYPER_MSHV, + HYPER_VMWARE, ++ // Must always be last + HYPER_OTHER, +- HYPER_LAST /* for loop - must be last*/ + }; + + const char *hypervisor_ids[] = { +@@ -157,7 +157,7 @@ int detect_hypervisor(int *hypervisor) { + *hypervisor = HYPER_OTHER; + + if (*sig.text) { +- for (int id = HYPER_NONE + 1; id < HYPER_LAST; id++) { ++ for (int id = HYPER_NONE + 1; id < HYPER_OTHER; id++) { + if (strcmp(hypervisor_ids[id], sig.text) == 0) { + *hypervisor = id; + break; +-- +2.39.2 +