diff --git a/.dmidecode.metadata b/.dmidecode.metadata index 7550d54..3bc180d 100644 --- a/.dmidecode.metadata +++ b/.dmidecode.metadata @@ -1 +1 @@ -99b8a9deaf0a003083a5a5fadcb8c016e4ebdaa4 SOURCES/dmidecode-3.3.tar.xz +80898f5e95d905080426fdff7899d81eb4f888c2 SOURCES/dmidecode-3.5.tar.xz diff --git a/.gitignore b/.gitignore index f38f40b..9e60609 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/dmidecode-3.3.tar.xz +SOURCES/dmidecode-3.5.tar.xz diff --git a/SOURCES/0001-dmidecode-Add-new-system-slot-types-from-SMBIOS-spec.patch b/SOURCES/0001-dmidecode-Add-new-system-slot-types-from-SMBIOS-spec.patch deleted file mode 100644 index cd9963e..0000000 --- a/SOURCES/0001-dmidecode-Add-new-system-slot-types-from-SMBIOS-spec.patch +++ /dev/null @@ -1,75 +0,0 @@ -From 0d40ff02f2ae692c34cfd63b0617abf66ea58c5e Mon Sep 17 00:00:00 2001 -From: Jean Delvare -Date: Wed, 21 Oct 2020 15:24:40 +0200 -Subject: [PATCH 1/2] dmidecode: Add new system slot types from SMBIOS spec - 3.4.0 - -Based on an earlier patch from Prabhakar Pujeri (Dell). - -Version 3.4.0 of the SMBIOS specification adds 14 new system slot -types and updates 2 (DMI type 9). - -Signed-off-by: Jean Delvare -Signed-off-by: Lianbo Jiang ---- - dmidecode.c | 26 ++++++++++++++++++++------ - 1 file changed, 20 insertions(+), 6 deletions(-) - -diff --git a/dmidecode.c b/dmidecode.c -index 981fe9697458..0e480d3e337b 100644 ---- a/dmidecode.c -+++ b/dmidecode.c -@@ -1931,11 +1931,16 @@ static const char *dmi_slot_type(u8 code) - "MXM Type IV", - "MXM 3.0 Type A", - "MXM 3.0 Type B", -- "PCI Express 2 SFF-8639", -- "PCI Express 3 SFF-8639", -+ "PCI Express 2 SFF-8639 (U.2)", -+ "PCI Express 3 SFF-8639 (U.2)", - "PCI Express Mini 52-pin with bottom-side keep-outs", - "PCI Express Mini 52-pin without bottom-side keep-outs", -- "PCI Express Mini 76-pin" /* 0x23 */ -+ "PCI Express Mini 76-pin" -+ "PCI Express 4 SFF-8639 (U.2)", -+ "PCI Express 5 SFF-8639 (U.2)", -+ "OCP NIC 3.0 Small Form Factor (SFF)", -+ "OCP NIC 3.0 Large Form Factor (LFF)", -+ "OCP NIC Prior to 3.0" /* 0x28 */ - }; - static const char *type_0x30[] = { - "CXL FLexbus 1.0" /* 0x30 */ -@@ -1970,18 +1975,27 @@ static const char *dmi_slot_type(u8 code) - "PCI Express 4 x2", - "PCI Express 4 x4", - "PCI Express 4 x8", -- "PCI Express 4 x16" /* 0xBD */ -+ "PCI Express 4 x16", -+ "PCI Express 5", -+ "PCI Express 5 x1", -+ "PCI Express 5 x2", -+ "PCI Express 5 x4", -+ "PCI Express 5 x8", -+ "PCI Express 5 x16", -+ "PCI Express 6+", -+ "EDSFF E1", -+ "EDSFF E3" /* 0xC6 */ - }; - /* - * Note to developers: when adding entries to these lists, check if - * function dmi_slot_id below needs updating too. - */ - -- if (code >= 0x01 && code <= 0x23) -+ if (code >= 0x01 && code <= 0x28) - return type[code - 0x01]; - if (code == 0x30) - return type_0x30[code - 0x30]; -- if (code >= 0xA0 && code <= 0xBD) -+ if (code >= 0xA0 && code <= 0xC6) - return type_0xA0[code - 0xA0]; - return out_of_spec; - } --- -2.17.1 - diff --git a/SOURCES/0002-dmidecode-Add-new-processor-characteristics-bits-from-SMBIOS-s.patch b/SOURCES/0002-dmidecode-Add-new-processor-characteristics-bits-from-SMBIOS-s.patch deleted file mode 100644 index 4fe50bd..0000000 --- a/SOURCES/0002-dmidecode-Add-new-processor-characteristics-bits-from-SMBIOS-s.patch +++ /dev/null @@ -1,40 +0,0 @@ -From b289de9deb325eeef7919a1f4e3ac1f93b099c16 Mon Sep 17 00:00:00 2001 -From: Prabhakar pujeri -Date: Fri, 23 Oct 2020 17:45:16 +0200 -Subject: [PATCH] Add new processor characteristics bits from SMBIOS spec 3.4.0 - -* The bit to indicate 128-bit capable processor -* The bit to indicate processor supports returning ARM64 SoC ID - -Signed-off-by: Coiby Xu ---- - dmidecode.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/dmidecode.c b/dmidecode.c -index 31a49e4..67f6048 100644 ---- a/dmidecode.c -+++ b/dmidecode.c -@@ -1388,7 +1388,9 @@ static void dmi_processor_characteristics(const char *attr, u16 code) - "Hardware Thread", - "Execute Protection", - "Enhanced Virtualization", -- "Power/Performance Control" /* 7 */ -+ "Power/Performance Control", -+ "128-bit Capable" -+ "Arm64 SoC ID" /* 9 */ - }; - - if ((code & 0x00FC) == 0) -@@ -1398,7 +1400,7 @@ static void dmi_processor_characteristics(const char *attr, u16 code) - int i; - - pr_list_start(attr, NULL); -- for (i = 2; i <= 7; i++) -+ for (i = 2; i <= 9; i++) - if (code & (1 << i)) - pr_list_item("%s", characteristics[i - 2]); - pr_list_end(); --- -2.31.1 - diff --git a/SOURCES/0003-dmidecode-Missing-comma-in-the-dmi_slot_type.patch b/SOURCES/0003-dmidecode-Missing-comma-in-the-dmi_slot_type.patch deleted file mode 100644 index dd3a4a6..0000000 --- a/SOURCES/0003-dmidecode-Missing-comma-in-the-dmi_slot_type.patch +++ /dev/null @@ -1,45 +0,0 @@ -From ac6a64496fc99a5cc05ebe4dd7d1b88f60041009 Mon Sep 17 00:00:00 2001 -From: Lianbo Jiang -Date: Thu, 10 Dec 2020 11:21:21 +0100 -Subject: [PATCH] Missing comma in the dmi_slot_type() - -In the initialization of "type", a suspicious concatenated string -"PCI Express Mini 76-pinPCI Express 4 SFF-8639 (U.2)" is produced -due to a missing comma between lines. - -[JD: Fixed a similar bug in dmi_processor_characteristics.] - -Fixes: b289de9deb32 ("Add new processor characteristics bits from SMBIOS spec 3.4.0") -Fixes: c54348130a2a ("dmidecode: Add new system slot types from SMBIOS spec 3.4.0") -Signed-off-by: Lianbo Jiang -Signed-off-by: Jean Delvare -Signed-off-by: Coiby Xu ---- - dmidecode.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/dmidecode.c b/dmidecode.c -index ac96395..4c98553 100644 ---- a/dmidecode.c -+++ b/dmidecode.c -@@ -1389,7 +1389,7 @@ static void dmi_processor_characteristics(const char *attr, u16 code) - "Execute Protection", - "Enhanced Virtualization", - "Power/Performance Control", -- "128-bit Capable" -+ "128-bit Capable", - "Arm64 SoC ID" /* 9 */ - }; - -@@ -1939,7 +1939,7 @@ static const char *dmi_slot_type(u8 code) - "PCI Express 3 SFF-8639 (U.2)", - "PCI Express Mini 52-pin with bottom-side keep-outs", - "PCI Express Mini 52-pin without bottom-side keep-outs", -- "PCI Express Mini 76-pin" -+ "PCI Express Mini 76-pin", - "PCI Express 4 SFF-8639 (U.2)", - "PCI Express 5 SFF-8639 (U.2)", - "OCP NIC 3.0 Small Form Factor (SFF)", --- -2.31.1 - diff --git a/SOURCES/0004-dmidecode-Skip-details-of-uninstalled-memory-modules.patch b/SOURCES/0004-dmidecode-Skip-details-of-uninstalled-memory-modules.patch deleted file mode 100644 index 638534c..0000000 --- a/SOURCES/0004-dmidecode-Skip-details-of-uninstalled-memory-modules.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 02ff0488f7d7a0f7e69ff7141236cbc1392c3b4c Mon Sep 17 00:00:00 2001 -From: Jean Delvare -Date: Fri, 30 Oct 2020 15:36:19 +0100 -Subject: [PATCH 2/2] dmidecode: Skip details of uninstalled memory modules - -If a memory slot is empty then by definition the fields containing -the memory module details are irrelevant. Best case they are filled -with "Unused" and "None", but in some cases they are even invalid -because the manufacturer did not bother setting the fields to -valid neutral values. So it is better to not print these fields -at all, so as to not confuse the user. - -Signed-off-by: Jean Delvare -Signed-off-by: Lianbo Jiang ---- - dmidecode.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/dmidecode.c b/dmidecode.c -index 0e480d3e337b..657a1341470b 100644 ---- a/dmidecode.c -+++ b/dmidecode.c -@@ -4465,6 +4465,9 @@ static void dmi_decode(const struct dmi_header *h, u16 ver) - dmi_memory_device_type(data[0x12])); - dmi_memory_device_type_detail(WORD(data + 0x13)); - if (h->length < 0x17) break; -+ /* If no module is present, the remaining fields are irrelevant */ -+ if (WORD(data + 0x0C) == 0) -+ break; - dmi_memory_device_speed("Speed", WORD(data + 0x15)); - if (h->length < 0x1B) break; - pr_attr("Manufacturer", "%s", --- -2.17.1 - diff --git a/SOURCES/0005-dmidecode-Add-new-processor-upgrades-from-SMBIOS-spec-3.4.0.patch b/SOURCES/0005-dmidecode-Add-new-processor-upgrades-from-SMBIOS-spec-3.4.0.patch deleted file mode 100644 index 94de9a6..0000000 --- a/SOURCES/0005-dmidecode-Add-new-processor-upgrades-from-SMBIOS-spec-3.4.0.patch +++ /dev/null @@ -1,34 +0,0 @@ -From b3b4c29f38b29a6ac3779ff97363d42fd3061c4a Mon Sep 17 00:00:00 2001 -From: Prabhakar pujeri -Date: Mon, 19 Oct 2020 14:38:04 +0200 -Subject: [PATCH] Add new processor upgrades from SMBIOS spec 3.4.0 - -Added 2 more new values (0x3D and 0x3E). - -Signed-off-by: Coiby Xu ---- - dmidecode.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/dmidecode.c b/dmidecode.c -index 97ba941..eb5a5af 100644 ---- a/dmidecode.c -+++ b/dmidecode.c -@@ -1355,10 +1355,12 @@ static const char *dmi_processor_upgrade(u8 code) - "Socket LGA2066", - "Socket BGA1392", - "Socket BGA1510", -- "Socket BGA1528" /* 0x3C */ -+ "Socket BGA1528", -+ "Socket LGA4189", -+ "Socket LGA1200" /* 0x3E */ - }; - -- if (code >= 0x01 && code <= 0x3C) -+ if (code >= 0x01 && code <= 0x3E) - return upgrade[code - 0x01]; - return out_of_spec; - } --- -2.31.1 - diff --git a/SOURCES/0006-dmidedecode-Add-new-memory-device-types-from-SMBIOS-spec-3.4.0.patch b/SOURCES/0006-dmidedecode-Add-new-memory-device-types-from-SMBIOS-spec-3.4.0.patch deleted file mode 100644 index 3b630ce..0000000 --- a/SOURCES/0006-dmidedecode-Add-new-memory-device-types-from-SMBIOS-spec-3.4.0.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 7e25483a392e292c58cea67ba4d052856c2f35d0 Mon Sep 17 00:00:00 2001 -From: Prabhakar pujeri -Date: Mon, 19 Oct 2020 14:38:04 +0200 -Subject: [PATCH] Add new memory device types from SMBIOS spec 3.4.0 - -Added 2 more new values (0x22 and 0x23). - -Signed-off-by: Coiby Xu ---- - dmidecode.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/dmidecode.c b/dmidecode.c -index 8b6f5af..97ba941 100644 ---- a/dmidecode.c -+++ b/dmidecode.c -@@ -2639,10 +2639,12 @@ static const char *dmi_memory_device_type(u8 code) - "LPDDR4", - "Logical non-volatile device", - "HBM", -- "HBM2" /* 0x21 */ -+ "HBM2", -+ "DDR5", -+ "LPDDR5" /* 0x23 */ - }; - -- if (code >= 0x01 && code <= 0x21) -+ if (code >= 0x01 && code <= 0x23) - return type[code - 0x01]; - return out_of_spec; - } --- -2.31.1 - diff --git a/SOURCES/0007-dmidecode-Split-table-fetching-from-decoding.patch b/SOURCES/0007-dmidecode-Split-table-fetching-from-decoding.patch deleted file mode 100644 index f392600..0000000 --- a/SOURCES/0007-dmidecode-Split-table-fetching-from-decoding.patch +++ /dev/null @@ -1,230 +0,0 @@ -From 8c3a5e0d6578ebda64362d2345ba824167bacd20 Mon Sep 17 00:00:00 2001 -From: Jean Delvare -Date: Mon, 20 Feb 2023 14:53:21 +0100 -Subject: [PATCH 1/3] dmidecode: Split table fetching from decoding - -Clean up function dmi_table so that it does only one thing: -* dmi_table() is renamed to dmi_table_get(). It now retrieves the - DMI table, but does not process it any longer. -* Decoding or dumping the table is now done in smbios3_decode(), - smbios_decode() and legacy_decode(). -No functional change. - -A side effect of this change is that writing the header and body of -dump files is now done in a single location. This is required to -further consolidate the writing of dump files. - -Signed-off-by: Jean Delvare -Reviewed-by: Jerry Hoemann ---- - dmidecode.c | 86 ++++++++++++++++++++++++++++++++++++++--------------- - 1 file changed, 62 insertions(+), 24 deletions(-) - -diff --git a/dmidecode.c b/dmidecode.c -index 4c98553..f743db3 100644 ---- a/dmidecode.c -+++ b/dmidecode.c -@@ -5287,8 +5287,9 @@ static void dmi_table_decode(u8 *buf, u32 len, u16 num, u16 ver, u32 flags) - } - } - --static void dmi_table(off_t base, u32 len, u16 num, u32 ver, const char *devmem, -- u32 flags) -+/* Allocates a buffer for the table, must be freed by the caller */ -+static u8 *dmi_table_get(off_t base, u32 *len, u16 num, u32 ver, -+ const char *devmem, u32 flags) - { - u8 *buf; - -@@ -5307,7 +5308,7 @@ static void dmi_table(off_t base, u32 len, u16 num, u32 ver, const char *devmem, - { - if (num) - pr_info("%u structures occupying %u bytes.", -- num, len); -+ num, *len); - if (!(opt.flags & FLAG_FROM_DUMP)) - pr_info("Table at 0x%08llX.", - (unsigned long long)base); -@@ -5325,19 +5326,19 @@ static void dmi_table(off_t base, u32 len, u16 num, u32 ver, const char *devmem, - * would be the result of the kernel truncating the table on - * parse error. - */ -- size_t size = len; -+ size_t size = *len; - buf = read_file(flags & FLAG_NO_FILE_OFFSET ? 0 : base, - &size, devmem); -- if (!(opt.flags & FLAG_QUIET) && num && size != (size_t)len) -+ if (!(opt.flags & FLAG_QUIET) && num && size != (size_t)*len) - { - fprintf(stderr, "Wrong DMI structures length: %u bytes " - "announced, only %lu bytes available.\n", -- len, (unsigned long)size); -+ *len, (unsigned long)size); - } -- len = size; -+ *len = size; - } - else -- buf = mem_chunk(base, len, devmem); -+ buf = mem_chunk(base, *len, devmem); - - if (buf == NULL) - { -@@ -5347,15 +5348,9 @@ static void dmi_table(off_t base, u32 len, u16 num, u32 ver, const char *devmem, - fprintf(stderr, - "Try compiling dmidecode with -DUSE_MMAP.\n"); - #endif -- return; - } - -- if (opt.flags & FLAG_DUMP_BIN) -- dmi_table_dump(buf, len); -- else -- dmi_table_decode(buf, len, num, ver >> 8, flags); -- -- free(buf); -+ return buf; - } - - -@@ -5390,8 +5385,9 @@ static void overwrite_smbios3_address(u8 *buf) - - static int smbios3_decode(u8 *buf, const char *devmem, u32 flags) - { -- u32 ver; -+ u32 ver, len; - u64 offset; -+ u8 *table; - - /* Don't let checksum run beyond the buffer */ - if (buf[0x06] > 0x20) -@@ -5417,8 +5413,12 @@ static int smbios3_decode(u8 *buf, const char *devmem, u32 flags) - return 0; - } - -- dmi_table(((off_t)offset.h << 32) | offset.l, -- DWORD(buf + 0x0C), 0, ver, devmem, flags | FLAG_STOP_AT_EOT); -+ /* Maximum length, may get trimmed */ -+ len = DWORD(buf + 0x0C); -+ table = dmi_table_get(((off_t)offset.h << 32) | offset.l, &len, 0, ver, -+ devmem, flags | FLAG_STOP_AT_EOT); -+ if (table == NULL) -+ return 1; - - if (opt.flags & FLAG_DUMP_BIN) - { -@@ -5427,18 +5427,28 @@ static int smbios3_decode(u8 *buf, const char *devmem, u32 flags) - memcpy(crafted, buf, 32); - overwrite_smbios3_address(crafted); - -+ dmi_table_dump(table, len); - if (!(opt.flags & FLAG_QUIET)) - pr_comment("Writing %d bytes to %s.", crafted[0x06], - opt.dumpfile); - write_dump(0, crafted[0x06], crafted, opt.dumpfile, 1); - } -+ else -+ { -+ dmi_table_decode(table, len, 0, ver >> 8, -+ flags | FLAG_STOP_AT_EOT); -+ } -+ -+ free(table); - - return 1; - } - - static int smbios_decode(u8 *buf, const char *devmem, u32 flags) - { -- u16 ver; -+ u16 ver, num; -+ u32 len; -+ u8 *table; - - /* Don't let checksum run beyond the buffer */ - if (buf[0x05] > 0x20) -@@ -5478,8 +5488,13 @@ static int smbios_decode(u8 *buf, const char *devmem, u32 flags) - pr_info("SMBIOS %u.%u present.", - ver >> 8, ver & 0xFF); - -- dmi_table(DWORD(buf + 0x18), WORD(buf + 0x16), WORD(buf + 0x1C), -- ver << 8, devmem, flags); -+ /* Maximum length, may get trimmed */ -+ len = WORD(buf + 0x16); -+ num = WORD(buf + 0x1C); -+ table = dmi_table_get(DWORD(buf + 0x18), &len, num, ver << 8, -+ devmem, flags); -+ if (table == NULL) -+ return 1; - - if (opt.flags & FLAG_DUMP_BIN) - { -@@ -5488,27 +5503,43 @@ static int smbios_decode(u8 *buf, const char *devmem, u32 flags) - memcpy(crafted, buf, 32); - overwrite_dmi_address(crafted + 0x10); - -+ dmi_table_dump(table, len); - if (!(opt.flags & FLAG_QUIET)) - pr_comment("Writing %d bytes to %s.", crafted[0x05], - opt.dumpfile); - write_dump(0, crafted[0x05], crafted, opt.dumpfile, 1); - } -+ else -+ { -+ dmi_table_decode(table, len, num, ver, flags); -+ } -+ -+ free(table); - - return 1; - } - - static int legacy_decode(u8 *buf, const char *devmem, u32 flags) - { -+ u16 ver, num; -+ u32 len; -+ u8 *table; -+ - if (!checksum(buf, 0x0F)) - return 0; - -+ ver = ((buf[0x0E] & 0xF0) << 4) + (buf[0x0E] & 0x0F); - if (!(opt.flags & FLAG_QUIET)) - pr_info("Legacy DMI %u.%u present.", - buf[0x0E] >> 4, buf[0x0E] & 0x0F); - -- dmi_table(DWORD(buf + 0x08), WORD(buf + 0x06), WORD(buf + 0x0C), -- ((buf[0x0E] & 0xF0) << 12) + ((buf[0x0E] & 0x0F) << 8), -- devmem, flags); -+ /* Maximum length, may get trimmed */ -+ len = WORD(buf + 0x06); -+ num = WORD(buf + 0x0C); -+ table = dmi_table_get(DWORD(buf + 0x08), &len, num, ver << 8, -+ devmem, flags); -+ if (table == NULL) -+ return 1; - - if (opt.flags & FLAG_DUMP_BIN) - { -@@ -5517,11 +5548,18 @@ static int legacy_decode(u8 *buf, const char *devmem, u32 flags) - memcpy(crafted, buf, 16); - overwrite_dmi_address(crafted); - -+ dmi_table_dump(table, len); - if (!(opt.flags & FLAG_QUIET)) - pr_comment("Writing %d bytes to %s.", 0x0F, - opt.dumpfile); - write_dump(0, 0x0F, crafted, opt.dumpfile, 1); - } -+ else -+ { -+ dmi_table_decode(table, len, num, ver, flags); -+ } -+ -+ free(table); - - return 1; - } --- -2.40.1 - diff --git a/SOURCES/0008-dmidecode-Write-the-whole-dump-file-at-once.patch b/SOURCES/0008-dmidecode-Write-the-whole-dump-file-at-once.patch deleted file mode 100644 index d9e6f98..0000000 --- a/SOURCES/0008-dmidecode-Write-the-whole-dump-file-at-once.patch +++ /dev/null @@ -1,191 +0,0 @@ -From d7dff2691ab3df03a3d7ddda6be714a57ce2fec9 Mon Sep 17 00:00:00 2001 -From: Jean Delvare -Date: Mon, 20 Feb 2023 14:53:25 +0100 -Subject: [PATCH 2/3] dmidecode: Write the whole dump file at once - -When option --dump-bin is used, write the whole dump file at once, -instead of opening and closing the file separately for the table -and then for the entry point. - -As the file writing function is no longer generic, it gets moved -from util.c to dmidecode.c. - -One minor functional change resulting from the new implementation is -that the entry point is written first now, so the messages printed -are swapped. - -Signed-off-by: Jean Delvare -Reviewed-by: Jerry Hoemann ---- - dmidecode.c | 69 +++++++++++++++++++++++++++++++++++++++-------------- - util.c | 40 ------------------------------- - util.h | 1 - - 3 files changed, 51 insertions(+), 59 deletions(-) - -diff --git a/dmidecode.c b/dmidecode.c -index f743db3..cfc7672 100644 ---- a/dmidecode.c -+++ b/dmidecode.c -@@ -5170,11 +5170,56 @@ static void dmi_table_string(const struct dmi_header *h, const u8 *data, u16 ver - } - } - --static void dmi_table_dump(const u8 *buf, u32 len) -+static int dmi_table_dump(const u8 *ep, u32 ep_len, const u8 *table, -+ u32 table_len) - { -+ FILE *f; -+ -+ f = fopen(opt.dumpfile, "wb"); -+ if (!f) -+ { -+ fprintf(stderr, "%s: ", opt.dumpfile); -+ perror("fopen"); -+ return -1; -+ } -+ -+ if (!(opt.flags & FLAG_QUIET)) -+ pr_comment("Writing %d bytes to %s.", ep_len, opt.dumpfile); -+ if (fwrite(ep, ep_len, 1, f) != 1) -+ { -+ fprintf(stderr, "%s: ", opt.dumpfile); -+ perror("fwrite"); -+ goto err_close; -+ } -+ -+ if (fseek(f, 32, SEEK_SET) != 0) -+ { -+ fprintf(stderr, "%s: ", opt.dumpfile); -+ perror("fseek"); -+ goto err_close; -+ } -+ - if (!(opt.flags & FLAG_QUIET)) -- pr_comment("Writing %d bytes to %s.", len, opt.dumpfile); -- write_dump(32, len, buf, opt.dumpfile, 0); -+ pr_comment("Writing %d bytes to %s.", table_len, opt.dumpfile); -+ if (fwrite(table, table_len, 1, f) != 1) -+ { -+ fprintf(stderr, "%s: ", opt.dumpfile); -+ perror("fwrite"); -+ goto err_close; -+ } -+ -+ if (fclose(f)) -+ { -+ fprintf(stderr, "%s: ", opt.dumpfile); -+ perror("fclose"); -+ return -1; -+ } -+ -+ return 0; -+ -+err_close: -+ fclose(f); -+ return -1; - } - - static void dmi_table_decode(u8 *buf, u32 len, u16 num, u16 ver, u32 flags) -@@ -5427,11 +5472,7 @@ static int smbios3_decode(u8 *buf, const char *devmem, u32 flags) - memcpy(crafted, buf, 32); - overwrite_smbios3_address(crafted); - -- dmi_table_dump(table, len); -- if (!(opt.flags & FLAG_QUIET)) -- pr_comment("Writing %d bytes to %s.", crafted[0x06], -- opt.dumpfile); -- write_dump(0, crafted[0x06], crafted, opt.dumpfile, 1); -+ dmi_table_dump(crafted, crafted[0x06], table, len); - } - else - { -@@ -5503,11 +5544,7 @@ static int smbios_decode(u8 *buf, const char *devmem, u32 flags) - memcpy(crafted, buf, 32); - overwrite_dmi_address(crafted + 0x10); - -- dmi_table_dump(table, len); -- if (!(opt.flags & FLAG_QUIET)) -- pr_comment("Writing %d bytes to %s.", crafted[0x05], -- opt.dumpfile); -- write_dump(0, crafted[0x05], crafted, opt.dumpfile, 1); -+ dmi_table_dump(crafted, crafted[0x05], table, len); - } - else - { -@@ -5548,11 +5585,7 @@ static int legacy_decode(u8 *buf, const char *devmem, u32 flags) - memcpy(crafted, buf, 16); - overwrite_dmi_address(crafted); - -- dmi_table_dump(table, len); -- if (!(opt.flags & FLAG_QUIET)) -- pr_comment("Writing %d bytes to %s.", 0x0F, -- opt.dumpfile); -- write_dump(0, 0x0F, crafted, opt.dumpfile, 1); -+ dmi_table_dump(crafted, 0x0F, table, len); - } - else - { -diff --git a/util.c b/util.c -index 04aaadd..1547096 100644 ---- a/util.c -+++ b/util.c -@@ -259,46 +259,6 @@ void *mem_chunk(off_t base, size_t len, const char *devmem) - return p; - } - --int write_dump(size_t base, size_t len, const void *data, const char *dumpfile, int add) --{ -- FILE *f; -- -- f = fopen(dumpfile, add ? "r+b" : "wb"); -- if (!f) -- { -- fprintf(stderr, "%s: ", dumpfile); -- perror("fopen"); -- return -1; -- } -- -- if (fseek(f, base, SEEK_SET) != 0) -- { -- fprintf(stderr, "%s: ", dumpfile); -- perror("fseek"); -- goto err_close; -- } -- -- if (fwrite(data, len, 1, f) != 1) -- { -- fprintf(stderr, "%s: ", dumpfile); -- perror("fwrite"); -- goto err_close; -- } -- -- if (fclose(f)) -- { -- fprintf(stderr, "%s: ", dumpfile); -- perror("fclose"); -- return -1; -- } -- -- return 0; -- --err_close: -- fclose(f); -- return -1; --} -- - /* Returns end - start + 1, assuming start < end */ - u64 u64_range(u64 start, u64 end) - { -diff --git a/util.h b/util.h -index 3094cf8..ef24eb9 100644 ---- a/util.h -+++ b/util.h -@@ -27,5 +27,4 @@ - int checksum(const u8 *buf, size_t len); - void *read_file(off_t base, size_t *len, const char *filename); - void *mem_chunk(off_t base, size_t len, const char *devmem); --int write_dump(size_t base, size_t len, const void *data, const char *dumpfile, int add); - u64 u64_range(u64 start, u64 end); --- -2.40.1 - diff --git a/SOURCES/0009-dmidecode-Do-not-let-dump-bin-overwrite-an-existing-.patch b/SOURCES/0009-dmidecode-Do-not-let-dump-bin-overwrite-an-existing-.patch deleted file mode 100644 index 6a099f0..0000000 --- a/SOURCES/0009-dmidecode-Do-not-let-dump-bin-overwrite-an-existing-.patch +++ /dev/null @@ -1,76 +0,0 @@ -From 6f110c7e2ba531904f3a2816917f1a433e3eb89d Mon Sep 17 00:00:00 2001 -From: Jean Delvare -Date: Mon, 20 Feb 2023 14:53:31 +0100 -Subject: [PATCH 3/3] dmidecode: Do not let --dump-bin overwrite an existing - file - -Make sure that the file passed to option --dump-bin does not already -exist. In practice, it is rather unlikely that an honest user would -want to overwrite an existing dump file, while this possibility -could be used by a rogue user to corrupt a system file. - -Signed-off-by: Jean Delvare -Reviewed-by: Jerry Hoemann ---- - dmidecode.c | 14 ++++++++++++-- - man/dmidecode.8 | 3 ++- - 2 files changed, 14 insertions(+), 3 deletions(-) - -diff --git a/dmidecode.c b/dmidecode.c -index cfc7672..ef5040f 100644 ---- a/dmidecode.c -+++ b/dmidecode.c -@@ -60,6 +60,7 @@ - * https://www.dmtf.org/sites/default/files/DSP0270_1.0.1.pdf - */ - -+#include - #include - #include - #include -@@ -5173,13 +5174,22 @@ static void dmi_table_string(const struct dmi_header *h, const u8 *data, u16 ver - static int dmi_table_dump(const u8 *ep, u32 ep_len, const u8 *table, - u32 table_len) - { -+ int fd; - FILE *f; - -- f = fopen(opt.dumpfile, "wb"); -+ fd = open(opt.dumpfile, O_WRONLY|O_CREAT|O_EXCL, 0666); -+ if (fd == -1) -+ { -+ fprintf(stderr, "%s: ", opt.dumpfile); -+ perror("open"); -+ return -1; -+ } -+ -+ f = fdopen(fd, "wb"); - if (!f) - { - fprintf(stderr, "%s: ", opt.dumpfile); -- perror("fopen"); -+ perror("fdopen"); - return -1; - } - -diff --git a/man/dmidecode.8 b/man/dmidecode.8 -index 64dc7e7..d5b7f01 100644 ---- a/man/dmidecode.8 -+++ b/man/dmidecode.8 -@@ -1,4 +1,4 @@ --.TH DMIDECODE 8 "January 2019" "dmidecode" -+.TH DMIDECODE 8 "February 2023" "dmidecode" - .\" - .SH NAME - dmidecode \- \s-1DMI\s0 table decoder -@@ -132,6 +132,7 @@ hexadecimal and \s-1ASCII\s0. This option is mainly useful for debugging. - Do not decode the entries, instead dump the DMI data to a file in binary - form. The generated file is suitable to pass to \fB--from-dump\fR - later. -+\fIFILE\fP must not exist. - .TP - .BR " " " " "--from-dump FILE" - Read the DMI data from a binary file previously generated using --- -2.40.1 - diff --git a/SPECS/dmidecode.spec b/SPECS/dmidecode.spec index c808fff..c033275 100644 --- a/SPECS/dmidecode.spec +++ b/SPECS/dmidecode.spec @@ -1,7 +1,7 @@ Summary: Tool to analyse BIOS DMI data Name: dmidecode -Version: 3.3 -Release: 7%{?dist}.1 +Version: 3.5 +Release: 1%{?dist} Epoch: 1 License: GPLv2+ Source0: https://download.savannah.gnu.org/releases/%{name}/%{name}-%{version}.tar.xz @@ -9,15 +9,6 @@ URL: https://www.nongnu.org/dmidecode/ BuildRequires: gcc make ExclusiveArch: %{ix86} x86_64 ia64 aarch64 -Patch0: 0001-dmidecode-Add-new-system-slot-types-from-SMBIOS-spec.patch -Patch1: 0002-dmidecode-Add-new-processor-characteristics-bits-from-SMBIOS-s.patch -Patch2: 0003-dmidecode-Missing-comma-in-the-dmi_slot_type.patch -Patch3: 0004-dmidecode-Skip-details-of-uninstalled-memory-modules.patch -Patch4: 0005-dmidecode-Add-new-processor-upgrades-from-SMBIOS-spec-3.4.0.patch -Patch5: 0006-dmidedecode-Add-new-memory-device-types-from-SMBIOS-spec-3.4.0.patch -Patch6: 0007-dmidecode-Split-table-fetching-from-decoding.patch -Patch7: 0008-dmidecode-Write-the-whole-dump-file-at-once.patch -Patch8: 0009-dmidecode-Do-not-let-dump-bin-overwrite-an-existing-.patch %description dmidecode reports information about x86 & ia64 hardware as described in the system BIOS according to the SMBIOS/DMI standard. This information @@ -31,15 +22,6 @@ I/O ports (e.g. serial, parallel, USB). %prep %setup -q -%patch0 -p1 -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 -%patch6 -p1 -%patch7 -p1 -%patch8 -p1 %build %make_build CFLAGS="%{optflags}" LDFLAGS="%{__global_ldflags}" @@ -59,8 +41,9 @@ I/O ports (e.g. serial, parallel, USB). %{_mandir}/man8/* %changelog -* Tue Jun 06 2023 Lichen Liu - 1:3.3-7.1 -- Resolves: rhbz#2186857 +* Fri May 05 2023 Lichen Liuu - 1:3.5-1 +- updated to upstream v3.5 +- Resolves: rhbz#2186858 * Wed Jan 05 2022 Coiby Xu - 1:3.3-7 - Resolves: rhbz#2029784