Accepting request 1083252 from Base:System

Fix a regression which prevents root from using the --from-dump option after the latest security fixes. No big deal in practice as you aren't supposed to do that anyway.

OBS-URL: https://build.opensuse.org/request/show/1083252
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/dmidecode?expand=0&rev=46
This commit is contained in:
Dominique Leuenberger 2023-04-28 14:22:41 +00:00 committed by Git OBS Bridge
commit 3ad766fcf4
3 changed files with 68 additions and 0 deletions

View File

@ -1,3 +1,11 @@
-------------------------------------------------------------------
Thu Apr 27 10:55:57 UTC 2023 - Jean Delvare <jdelvare@suse.de>
Fix a potential regression:
- use-read_file-to-read-from-dump.patch: Fix an old harmless bug
which would prevent root from using the --from-dump option since
the latest security fixes.
-------------------------------------------------------------------
Mon Apr 3 10:04:57 UTC 2023 - Jean Delvare <jdelvare@suse.de>

View File

@ -29,6 +29,7 @@ Source1: http://download.savannah.gnu.org/releases/%{name}/%{name}-%{vers
Source2: %{name}.keyring
Patch1: arm-use-alignment-workaround.patch
Patch2: dmioem-hpe-oem-record-237-firmware-change.patch
Patch3: use-read_file-to-read-from-dump.patch
Provides: pmtools:%{_sbindir}/dmidecode
Obsoletes: pmtools < 20071117
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@ -53,6 +54,7 @@ the BIOS told it to.
%setup -q
%patch1 -p1
%patch2 -p1
%patch3 -p1
%build
CFLAGS="%{optflags}" make %{?_smp_mflags}

View File

@ -0,0 +1,58 @@
From c76ddda0ba0aa99a55945e3290095c2ec493c892 Mon Sep 17 00:00:00 2001
From: Jean Delvare <jdelvare@suse.de>
Date: Wed, 26 Apr 2023 15:44:27 +0200
Subject: [PATCH] Consistently use read_file() when reading from a dump file
Use read_file() instead of mem_chunk() to read the entry point from a
dump file. This is faster, and consistent with how we then read the
actual DMI table from that dump file.
This made no functional difference so far, which is why it went
unnoticed for years. But now that a file type check was added to the
mem_chunk() function, we must stop using it to read from regular
files.
This will again allow root to use the --from-dump option.
Signed-off-by: Jean Delvare <jdelvare@suse.de>
Tested-by: Jerry Hoemann <jerry.hoemann@hpe.com>
diff --git a/dmidecode.c b/dmidecode.c
index 54f59c163daf..52ddbf1a51bd 100644
--- a/dmidecode.c
+++ b/dmidecode.c
@@ -6025,17 +6025,25 @@ int main(int argc, char * const argv[])
pr_comment("dmidecode %s", VERSION);
/* Read from dump if so instructed */
+ size = 0x20;
if (opt.flags & FLAG_FROM_DUMP)
{
if (!(opt.flags & FLAG_QUIET))
pr_info("Reading SMBIOS/DMI data from file %s.",
opt.dumpfile);
- if ((buf = mem_chunk(0, 0x20, opt.dumpfile)) == NULL)
+ if ((buf = read_file(0, &size, opt.dumpfile)) == NULL)
{
ret = 1;
goto exit_free;
}
+ /* Truncated entry point can't be processed */
+ if (size < 0x20)
+ {
+ ret = 1;
+ goto done;
+ }
+
if (memcmp(buf, "_SM3_", 5) == 0)
{
if (smbios3_decode(buf, opt.dumpfile, 0))
@@ -6059,7 +6067,6 @@ int main(int argc, char * const argv[])
* contain one of several types of entry points, so read enough for
* the largest one, then determine what type it contains.
*/
- size = 0x20;
if (!(opt.flags & FLAG_NO_SYSFS)
&& (buf = read_file(0, &size, SYS_ENTRY_FILE)) != NULL)
{