Upgraded dmidecode from 3.3 to 3.5

This commit is contained in:
dslm4515
2024-01-16 14:40:32 -06:00
parent 8137478a96
commit 0a9ddbcbf9
3 changed files with 118 additions and 5 deletions

View File

@ -1,7 +1,7 @@
#! /bin/bash
# dmidecode
# Source: https://download.savannah.gnu.org/releases/dmidecode/dmidecode-3.3.tar.xz
# Source: https://download.savannah.gnu.org/releases/dmidecode/dmidecode-3.5.tar.xz
#
# $BUILD = Directory to temporarily install
# $PKGS = Directory to store built packages
@ -11,11 +11,12 @@
# Recommended: NONE
# Optional: NONE
sed -e '/^PROGRAMS !=/d' -e 's/-O2/-Os/' -i Makefile
patch -Np1 -i ../patches/dimdecode-chimera/recommended-1.patch
patch -Np1 -i ../patches/dimdecode-chimera/recommended-2.patch
read -p "Compile?" && make prefix=/usr -j2 &&
read -p "Compile?" && make prefix=/usr sbindir=/usr/bin -j2 &&
sudo -S make prefix=/usr DESTDIR=$BUILD install &&
sudo -S make prefix=/usr sbindir=/usr/bin DESTDIR=$BUILD install &&
cd $BUILD && sudo -S mkdir -v ${BUILD}/install &&
cat > /tmp/slack-desc << "EOF"
@ -35,5 +36,5 @@ dmidecode: https://nongnu.org/dmidecode
dmidecode:
EOF
sudo -S mv -v /tmp/slack-desc install/ &&
sudo -S makepkg -l y -c n $PKGS/dmidecode-3.3-$(uname -m)-mlfs.txz &&
sudo -S makepkg -l y -c n $PKGS/dmidecode-3.5-$PSUFFIX &&
sudo -S rm -rf ${BUILD}/*

View File

@ -0,0 +1,46 @@
Patch-Source: https://git.savannah.gnu.org/cgit/dmidecode.git/commit/?id=80de376231e903d2cbea95e51ffea31860502159
--
From 80de376231e903d2cbea95e51ffea31860502159 Mon Sep 17 00:00:00 2001
From: Jerry Hoemann <jerry.hoemann@hpe.com>
Date: Mon, 3 Apr 2023 10:15:12 +0200
Subject: dmioem: HPE OEM Record 237 Firmware change
HPE OEM record type 237 offset 0x09 field was changed from a single
byte STRING to a two byte WORD representing date.
Fixes: cdab638dabb7 ("dmioem: Decode HPE OEM Record 237")
Signed-off-by: Jerry Hoemann <jerry.hoemann@hpe.com>
Signed-off-by: Jean Delvare <jdelvare@suse.de>
---
dmioem.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/dmioem.c b/dmioem.c
index dc4b857..2746e15 100644
--- a/dmioem.c
+++ b/dmioem.c
@@ -1094,7 +1094,8 @@ static int dmi_decode_hp(const struct dmi_header *h)
* 0x06 | Manufacture|STRING | DIMM Manufacturer
* 0x07 | Part Number|STRING | DIMM Manufacturer's Part Number
* 0x08 | Serial Num |STRING | DIMM Vendor Serial Number
- * 0x09 | Spare Part |STRING | DIMM Spare Part Number
+ * 0x09 | Man Date | BYTE | DIMM Manufacture Date (YEAR) in BCD
+ * 0x0A | Man Date | BYTE | DIMM Manufacture Date (WEEK) in BCD
*/
if (gen < G9) return 0;
pr_handle_name("%s DIMM Vendor Information", company);
@@ -1105,8 +1106,9 @@ static int dmi_decode_hp(const struct dmi_header *h)
pr_attr("DIMM Manufacturer Part Number", "%s", dmi_string(h, data[0x07]));
if (h->length < 0x09) break;
pr_attr("DIMM Vendor Serial Number", "%s", dmi_string(h, data[0x08]));
- if (h->length < 0x0A) break;
- pr_attr("DIMM Spare Part Number", "%s", dmi_string(h, data[0x09]));
+ if (h->length < 0x0B) break;
+ if (WORD(data + 0x09))
+ pr_attr("DIMM Manufacture Date", "20%02x-W%02x", data[0x09], data[0x0A]);
break;
case 238:
--
cgit v1.1

View File

@ -0,0 +1,66 @@
Patch-Source: https://git.savannah.gnu.org/cgit/dmidecode.git/commit/?id=c76ddda0ba0aa99a55945e3290095c2ec493c892
--
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: 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>
---
dmidecode.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/dmidecode.c b/dmidecode.c
index 54f59c1..52ddbf1 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)
{
--
cgit v1.1