diff --git a/biosdevname.changes b/biosdevname.changes index bf5157e..d4c2baa 100644 --- a/biosdevname.changes +++ b/biosdevname.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Wed May 23 11:32:02 UTC 2018 - josef.moellers@suse.com + +- Prevent infinite recursion in dmidecode.c::smbios_setslot by + checking that subordinate bus has a number greater than the + current bus. + [bsc#1093625, dmidecode-prevent-infinite-recursion.patch] + ------------------------------------------------------------------- Tue Mar 27 11:52:38 CEST 2018 - kukuk@suse.de diff --git a/biosdevname.spec b/biosdevname.spec index ef80473..b8ce3a8 100644 --- a/biosdevname.spec +++ b/biosdevname.spec @@ -1,7 +1,7 @@ # # spec file for package biosdevname # -# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2018 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -30,6 +30,7 @@ Patch2: whitelist-dell Patch3: udev-rule-path.patch Patch4: biosdevname-pic.patch Patch5: biosdevname-dom0.patch +Patch6: dmidecode-prevent-infinite-recursion.patch BuildRequires: automake # to figure out how to name/location of the rules file BuildRequires: libudev-devel @@ -69,6 +70,7 @@ You can enable/disable usage of biosdevname with boot option %patch3 -p1 %patch4 -p1 %patch5 -p1 +%patch6 -p1 %build sed -i -e 's#@@BIOSDEVNAME_RULEDEST@@#'%{_udevrulesdir}'/71-biosdevname.rules#' configure.ac diff --git a/dmidecode-prevent-infinite-recursion.patch b/dmidecode-prevent-infinite-recursion.patch new file mode 100644 index 0000000..e669a1c --- /dev/null +++ b/dmidecode-prevent-infinite-recursion.patch @@ -0,0 +1,13 @@ +Index: biosdevname-0.7.3/src/dmidecode/dmidecode.c +=================================================================== +--- biosdevname-0.7.3.orig/src/dmidecode/dmidecode.c ++++ biosdevname-0.7.3/src/dmidecode/dmidecode.c +@@ -153,7 +153,7 @@ void smbios_setslot(const struct libbios + } + + /* Found a PDEV, now is it a bridge? */ +- if (pdev->sbus != -1) { ++ if (pdev->sbus != -1 && pdev->sbus > bus) { + smbios_setslot(state, domain, pdev->sbus, -1, -1, type, slot, index, label); + } + }