Hello community, here is the log from the commit of package dmidecode for openSUSE:Factory checked in at 2017-01-25 22:40:06 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/dmidecode (Old) and /work/SRC/openSUSE:Factory/.dmidecode.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "dmidecode" Changes: -------- --- /work/SRC/openSUSE:Factory/dmidecode/dmidecode.changes 2016-05-08 10:39:14.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.dmidecode.new/dmidecode.changes 2017-01-25 22:40:07.574234328 +0100 @@ -1,0 +2,7 @@ +Fri Jan 20 13:18:38 CET 2017 - [email protected] + +- dmidecode-07-only-decode-one-dmi-table.patch: Only decode one + DMI table. + https://savannah.nongnu.org/bugs/?50022 + +------------------------------------------------------------------- New: ---- dmidecode-07-only-decode-one-dmi-table.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ dmidecode.spec ++++++ --- /var/tmp/diff_new_pack.cBlysD/_old 2017-01-25 22:40:08.514092346 +0100 +++ /var/tmp/diff_new_pack.cBlysD/_new 2017-01-25 22:40:08.518091742 +0100 @@ -1,7 +1,7 @@ # # spec file for package dmidecode # -# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2017 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 @@ -34,6 +34,7 @@ Patch4: dmidecode-04-use-read_file-to-read-the-dmi-table-from-sysfs.patch Patch5: dmidecode-05-use-dword-for-structure-table-maximum-size-in-smbios3.patch Patch6: dmidecode-06-hide-irrelevant-fixup-message.patch +Patch7: dmidecode-07-only-decode-one-dmi-table.patch Provides: pmtools:%{_sbindir}/dmidecode Obsoletes: pmtools < 20071117 BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -62,6 +63,7 @@ %patch4 -p1 %patch5 -p1 %patch6 -p1 +%patch7 -p1 %build make CFLAGS="%{optflags}" %{?_smp_mflags} ++++++ dmidecode-07-only-decode-one-dmi-table.patch ++++++ From: Jean Delvare <[email protected]> Date: Fri, 20 Jan 2017 10:57:12 +0100 Subject: Only decode one DMI table Git-commit: 12fbde92a26da61eda9f2ff0ba3c316779163f10 References: https://savannah.nongnu.org/bugs/?50022 Since version 3.0.0 of the SMBIOS specification, there can be multiple entry points in memory, pointing to one or two DMI tables. If both a 32-bit ("_SM_") entry point and a 64-bit ("_SM3_") entry point are present, the specification requires that the latter points to a table which is a super-set of the table pointed to by the former. Therefore it makes no sense to decode both. Per specification, look for a 64-bit ("_SM3_") entry point first, and if we can't find any, look for a 32-bit ("_SM_" or "_DMI_") entry point. This fixes bug #50022: https://savannah.nongnu.org/bugs/?50022 --- dmidecode.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) --- a/dmidecode.c +++ b/dmidecode.c @@ -4903,28 +4903,37 @@ memory_scan: goto exit_free; } - for (fp = 0; fp <= 0xFFF0; fp += 16) + /* Look for a 64-bit entry point first */ + for (fp = 0; fp <= 0xFFE0; fp += 16) { - if (memcmp(buf + fp, "_SM3_", 5) == 0 && fp <= 0xFFE0) + if (memcmp(buf + fp, "_SM3_", 5) == 0) { if (smbios3_decode(buf + fp, opt.devmem, 0)) { found++; - fp += 16; + goto done; } } - else if (memcmp(buf + fp, "_SM_", 4) == 0 && fp <= 0xFFE0) + } + + /* If none found, look for a 32-bit entry point */ + for (fp = 0; fp <= 0xFFF0; fp += 16) + { + if (memcmp(buf + fp, "_SM_", 4) == 0 && fp <= 0xFFE0) { if (smbios_decode(buf + fp, opt.devmem, 0)) { found++; - fp += 16; + goto done; } } else if (memcmp(buf + fp, "_DMI_", 5) == 0) { if (legacy_decode(buf + fp, opt.devmem, 0)) + { found++; + goto done; + } } }
