]> git.ipfire.org Git - ipfire-2.x.git/commitdiff
fireinfo: Fix SEGV in detect_hypervisor()
authorMichael Tremer <michael.tremer@ipfire.org>
Thu, 13 Jul 2023 14:05:38 +0000 (14:05 +0000)
committerPeter Müller <peter.mueller@ipfire.org>
Thu, 13 Jul 2023 14:25:22 +0000 (14:25 +0000)
Fixes: #13155 - _fireinfo.detect_hypervisor() rises Segmentation fault
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Acked-by: Peter Müller <peter.mueller@ipfire.org>
lfs/fireinfo
src/patches/fireinfo-virt-fix-off-by-one-error-when-detecting-hypervisor.patch [new file with mode: 0644]

index 8b38885d601612f9adc562f86634fad1e74f9aaf..629626d1e974a7273e9ca547e5ad83e06987017d 100644 (file)
@@ -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 (file)
index 0000000..0799ecc
--- /dev/null
@@ -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
+