Accepting request 500183 from Base:System
Automatic submission by obs-autosubmit OBS-URL: https://build.opensuse.org/request/show/500183 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/dmidecode?expand=0&rev=31
This commit is contained in:
commit
b807a55f7b
@ -1,22 +0,0 @@
|
||||
From: Roy Franz <roy.franz@linaro.org>
|
||||
Date: Thu, 1 Oct 2015 08:41:43 +0200
|
||||
Subject: Add "--no-sysfs" option description to -h output
|
||||
Git-commit: 33b5aafc6ee6b5de9f2526fb1cf4b14d1e16e4f0
|
||||
|
||||
A description of --no-sysfs was not added to the output of "-h" when
|
||||
the feature was added, so add it now.
|
||||
|
||||
---
|
||||
dmiopt.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
--- dmidecode-3.0.orig/dmiopt.c 2016-05-03 16:05:03.135840902 +0200
|
||||
+++ dmidecode-3.0/dmiopt.c 2016-05-03 16:05:04.199850803 +0200
|
||||
@@ -314,6 +314,7 @@ void print_help(void)
|
||||
" -u, --dump Do not decode the entries\n"
|
||||
" --dump-bin FILE Dump the DMI data to a binary file\n"
|
||||
" --from-dump FILE Read the DMI data from a binary file\n"
|
||||
+ " --no-sysfs Do not attempt to read DMI data from sysfs files\n"
|
||||
" -V, --version Display the version and exit\n";
|
||||
|
||||
printf("%s", help);
|
@ -1,44 +0,0 @@
|
||||
From: Xie XiuQi <xiexiuqi@huawei.com>
|
||||
Date: Wed, 21 Oct 2015 15:12:50 +0200
|
||||
Subject: Fix 'No SMBIOS nor DMI entry point found' on SMBIOS3
|
||||
Git-commit: bf7bad24ce141dab5b5acc3ffb98ce5fe4a8e0f9
|
||||
|
||||
address_from_efi may return a SMBIOS or SMBIOS3 format entry
|
||||
point, so add this condition.
|
||||
|
||||
---
|
||||
AUTHORS | 1 +
|
||||
dmidecode.c | 12 ++++++++++--
|
||||
2 files changed, 11 insertions(+), 2 deletions(-)
|
||||
|
||||
--- dmidecode-3.0.orig/AUTHORS 2016-05-03 16:05:03.118840743 +0200
|
||||
+++ dmidecode-3.0/AUTHORS 2016-05-03 16:05:07.803884342 +0200
|
||||
@@ -19,6 +19,7 @@ Jarod Wilson <jarod@redhat.com>
|
||||
Anton Arapov <anton@redhat.com>
|
||||
Roy Franz <roy.franz@linaro.org>
|
||||
Tyler Bell <tyler.bell@hp.com>
|
||||
+Xie XiuQi <xiexiuqi@huawei.com>
|
||||
|
||||
MANY THANKS TO (IN CHRONOLOGICAL ORDER)
|
||||
Werner Heuser
|
||||
--- dmidecode-3.0.orig/dmidecode.c 2016-05-03 16:05:03.118840743 +0200
|
||||
+++ dmidecode-3.0/dmidecode.c 2016-05-03 16:05:07.804884352 +0200
|
||||
@@ -4864,8 +4864,16 @@ int main(int argc, char * const argv[])
|
||||
goto exit_free;
|
||||
}
|
||||
|
||||
- if (smbios_decode(buf, opt.devmem, 0))
|
||||
- found++;
|
||||
+ if (memcmp(buf, "_SM3_", 5) == 0)
|
||||
+ {
|
||||
+ if (smbios3_decode(buf, opt.devmem, 0))
|
||||
+ found++;
|
||||
+ }
|
||||
+ else if (memcmp(buf, "_SM_", 4) == 0)
|
||||
+ {
|
||||
+ if (smbios_decode(buf, opt.devmem, 0))
|
||||
+ found++;
|
||||
+ }
|
||||
goto done;
|
||||
|
||||
memory_scan:
|
@ -1,90 +0,0 @@
|
||||
From: Jean Delvare <jdelvare@suse.de>
|
||||
Date: Mon, 2 Nov 2015 09:45:26 +0100
|
||||
Subject: Let read_file return the actual data size
|
||||
Git-commit: de9a74e1c60210bee229fcf55b1678a99d1b44dd
|
||||
|
||||
Let read_file return the actual data size to the caller. This gives
|
||||
the caller the possibility to check that the data size is as expected
|
||||
and large enough for the purpose, and report to the user if not.
|
||||
|
||||
---
|
||||
dmidecode.c | 4 +++-
|
||||
util.c | 11 +++++++----
|
||||
util.h | 2 +-
|
||||
3 files changed, 11 insertions(+), 6 deletions(-)
|
||||
|
||||
--- dmidecode-3.0.orig/dmidecode.c 2016-05-03 16:05:07.804884352 +0200
|
||||
+++ dmidecode-3.0/dmidecode.c 2016-05-03 16:05:09.139896776 +0200
|
||||
@@ -4748,6 +4748,7 @@ int main(int argc, char * const argv[])
|
||||
int ret = 0; /* Returned value */
|
||||
int found = 0;
|
||||
off_t fp;
|
||||
+ size_t size;
|
||||
int efi;
|
||||
u8 *buf;
|
||||
|
||||
@@ -4817,8 +4818,9 @@ 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(0x20, SYS_ENTRY_FILE)) != NULL)
|
||||
+ && (buf = read_file(&size, SYS_ENTRY_FILE)) != NULL)
|
||||
{
|
||||
if (!(opt.flags & FLAG_QUIET))
|
||||
printf("Getting SMBIOS data from sysfs.\n");
|
||||
--- dmidecode-3.0.orig/util.c 2016-05-03 16:05:03.085840436 +0200
|
||||
+++ dmidecode-3.0/util.c 2016-05-03 16:05:09.139896776 +0200
|
||||
@@ -94,10 +94,11 @@ int checksum(const u8 *buf, size_t len)
|
||||
* needs to be freed by the caller.
|
||||
* This provides a similar usage model to mem_chunk()
|
||||
*
|
||||
- * Returns pointer to buffer of max_len bytes, or NULL on error
|
||||
+ * Returns pointer to buffer of max_len bytes, or NULL on error, and
|
||||
+ * sets max_len to the length actually read.
|
||||
*
|
||||
*/
|
||||
-void *read_file(size_t max_len, const char *filename)
|
||||
+void *read_file(size_t *max_len, const char *filename)
|
||||
{
|
||||
int fd;
|
||||
size_t r2 = 0;
|
||||
@@ -115,7 +116,7 @@ void *read_file(size_t max_len, const ch
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
- if ((p = malloc(max_len)) == NULL)
|
||||
+ if ((p = malloc(*max_len)) == NULL)
|
||||
{
|
||||
perror("malloc");
|
||||
return NULL;
|
||||
@@ -123,7 +124,7 @@ void *read_file(size_t max_len, const ch
|
||||
|
||||
do
|
||||
{
|
||||
- r = read(fd, p + r2, max_len - r2);
|
||||
+ r = read(fd, p + r2, *max_len - r2);
|
||||
if (r == -1)
|
||||
{
|
||||
if (errno != EINTR)
|
||||
@@ -140,6 +141,8 @@ void *read_file(size_t max_len, const ch
|
||||
while (r != 0);
|
||||
|
||||
close(fd);
|
||||
+ *max_len = r2;
|
||||
+
|
||||
return p;
|
||||
}
|
||||
|
||||
--- dmidecode-3.0.orig/util.h 2016-05-03 16:05:03.085840436 +0200
|
||||
+++ dmidecode-3.0/util.h 2016-05-03 16:05:09.139896776 +0200
|
||||
@@ -25,7 +25,7 @@
|
||||
#define ARRAY_SIZE(x) (sizeof(x)/sizeof((x)[0]))
|
||||
|
||||
int checksum(const u8 *buf, size_t len);
|
||||
-void *read_file(size_t len, const char *filename);
|
||||
+void *read_file(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);
|
@ -1,67 +0,0 @@
|
||||
From: Jean Delvare <jdelvare@suse.de>
|
||||
Date: Mon, 2 Nov 2015 09:45:31 +0100
|
||||
Subject: dmidecode: Use read_file() to read the DMI table from sysfs
|
||||
Git-commit: 364055211b1956539c6a6268e111e244e1292c8c
|
||||
References: https://savannah.nongnu.org/bugs/?46176
|
||||
|
||||
We shouldn't use mem_chunk() to read the DMI table from sysfs. This
|
||||
will fail for SMBIOS v3 implementations which specify a maximum length
|
||||
for the table rather than its exact length. The kernel will trim the
|
||||
table to the actual length, so the DMI file will be shorter than the
|
||||
length announced in entry point.
|
||||
|
||||
read_file() fits the bill in this case, as it deals with end of file
|
||||
nicely.
|
||||
|
||||
This also helps with corrupted DMI tables, as the kernel will not
|
||||
export the part of the table that it wasn't able to parse, effectively
|
||||
trimming it.
|
||||
|
||||
This fixes bug #46176:
|
||||
https://savannah.nongnu.org/bugs/?46176
|
||||
Unexpected end of file error
|
||||
|
||||
---
|
||||
dmidecode.c | 29 +++++++++++++++++++++--------
|
||||
1 file changed, 21 insertions(+), 8 deletions(-)
|
||||
|
||||
--- dmidecode-3.0.orig/dmidecode.c 2016-05-03 16:05:09.139896776 +0200
|
||||
+++ dmidecode-3.0/dmidecode.c 2016-05-03 16:05:10.336907916 +0200
|
||||
@@ -4521,16 +4521,29 @@ static void dmi_table(off_t base, u32 le
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
- /*
|
||||
- * When we are reading the DMI table from sysfs, we want to print
|
||||
- * the address of the table (done above), but the offset of the
|
||||
- * data in the file is 0. When reading from /dev/mem, the offset
|
||||
- * in the file is the address.
|
||||
- */
|
||||
if (flags & FLAG_NO_FILE_OFFSET)
|
||||
- base = 0;
|
||||
+ {
|
||||
+ /*
|
||||
+ * When reading from sysfs, the file may be shorter than
|
||||
+ * announced. For SMBIOS v3 this is expcted, as we only know
|
||||
+ * the maximum table size, not the actual table size. For older
|
||||
+ * implementations (and for SMBIOS v3 too), this would be the
|
||||
+ * result of the kernel truncating the table on parse error.
|
||||
+ */
|
||||
+ size_t size = len;
|
||||
+ buf = read_file(&size, devmem);
|
||||
+ if (!(opt.flags & FLAG_QUIET) && num && size != (size_t)len)
|
||||
+ {
|
||||
+ printf("Wrong DMI structures length: %u bytes "
|
||||
+ "announced, only %lu bytes available.\n",
|
||||
+ len, (unsigned long)size);
|
||||
+ }
|
||||
+ len = size;
|
||||
+ }
|
||||
+ else
|
||||
+ buf = mem_chunk(base, len, devmem);
|
||||
|
||||
- if ((buf = mem_chunk(base, len, devmem)) == NULL)
|
||||
+ if (buf == NULL)
|
||||
{
|
||||
fprintf(stderr, "Table is unreachable, sorry."
|
||||
#ifndef USE_MMAP
|
@ -1,29 +0,0 @@
|
||||
From: Xie XiuQi <xiexiuqi@huawei.com>
|
||||
Date: Mon, 1 Feb 2016 09:30:31 +0100
|
||||
Subject: Use DWORD for Structure table maximum size in SMBIOS3
|
||||
Git-commit: ab02b117511230e46bbef7febbd854b9c832c13c
|
||||
|
||||
0Ch DWORD "Structure table maximum size"
|
||||
|
||||
Maximum size of SMBIOS Structure Table, pointed to by
|
||||
the Structure Table Address, in bytes. The actual size is
|
||||
guaranteed to be less or equal to the maximum size.
|
||||
|
||||
Signed-off-by: Xie XiuQi <xiexiuqi@huawei.com>
|
||||
Signed-off-by: Jean Delvare <jdelvare@suse.de>
|
||||
|
||||
---
|
||||
dmidecode.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- dmidecode-3.0.orig/dmidecode.c 2016-05-03 16:05:10.336907916 +0200
|
||||
+++ dmidecode-3.0/dmidecode.c 2016-05-03 16:05:11.533919057 +0200
|
||||
@@ -4612,7 +4612,7 @@ static int smbios3_decode(u8 *buf, const
|
||||
}
|
||||
|
||||
dmi_table(((off_t)offset.h << 32) | offset.l,
|
||||
- WORD(buf + 0x0C), 0, ver, devmem, flags | FLAG_STOP_AT_EOT);
|
||||
+ DWORD(buf + 0x0C), 0, ver, devmem, flags | FLAG_STOP_AT_EOT);
|
||||
|
||||
if (opt.flags & FLAG_DUMP_BIN)
|
||||
{
|
@ -1,49 +0,0 @@
|
||||
From: Jean Delvare <jdelvare@suse.de>
|
||||
Date: Tue, 3 May 2016 15:32:21 +0200
|
||||
Subject: dmidecode: Hide irrelevant fixup message
|
||||
Git-commit: cff11afa886a0147d734b650755d232b5e7f2099
|
||||
References: http://savannah.nongnu.org/support/?109024
|
||||
|
||||
Only display the message about type 34 length fixup if the entry in
|
||||
question is going to be displayed. Otherwise it's only confusing.
|
||||
|
||||
This fixes bug #109024:
|
||||
http://savannah.nongnu.org/support/?109024
|
||||
|
||||
Fixes: 3f70b3515d91 ("dmidecode: Fix up invalid DMI type 34 structure length")
|
||||
|
||||
---
|
||||
dmidecode.c | 8 +++++---
|
||||
1 file changed, 5 insertions(+), 3 deletions(-)
|
||||
|
||||
--- dmidecode-3.0.orig/dmidecode.c 2016-05-03 16:05:11.533919057 +0200
|
||||
+++ dmidecode-3.0/dmidecode.c 2016-05-03 16:05:13.223934786 +0200
|
||||
@@ -2946,7 +2946,7 @@ static void dmi_64bit_memory_error_addre
|
||||
* first 5 characters of the device name to be trimmed. It's easy to
|
||||
* check and fix, so do it, but warn.
|
||||
*/
|
||||
-static void dmi_fixup_type_34(struct dmi_header *h)
|
||||
+static void dmi_fixup_type_34(struct dmi_header *h, int display)
|
||||
{
|
||||
u8 *p = h->data;
|
||||
|
||||
@@ -2954,7 +2954,9 @@ static void dmi_fixup_type_34(struct dmi
|
||||
if (h->length == 0x10
|
||||
&& is_printable(p + 0x0B, 0x10 - 0x0B))
|
||||
{
|
||||
- printf("Invalid entry length (%u). Fixed up to %u.\n", 0x10, 0x0B);
|
||||
+ if (!(opt.flags & FLAG_QUIET) && display)
|
||||
+ printf("Invalid entry length (%u). Fixed up to %u.\n",
|
||||
+ 0x10, 0x0B);
|
||||
h->length = 0x0B;
|
||||
}
|
||||
}
|
||||
@@ -4443,7 +4445,7 @@ static void dmi_table_decode(u8 *buf, u3
|
||||
|
||||
/* Fixup a common mistake */
|
||||
if (h.type == 34)
|
||||
- dmi_fixup_type_34(&h);
|
||||
+ dmi_fixup_type_34(&h, display);
|
||||
|
||||
/* look for the next handle */
|
||||
next = data + h.length;
|
@ -1,68 +0,0 @@
|
||||
From: Jean Delvare <jdelvare@suse.de>
|
||||
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;
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:7ec35bb193729c1d593a1460b59d82d24b89102ab23fd0416e6cf4325d077e45
|
||||
size 58704
|
Binary file not shown.
3
dmidecode-3.1.tar.xz
Normal file
3
dmidecode-3.1.tar.xz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d766ce9b25548c59b1e7e930505b4cad9a7bb0b904a1a391fbb604d529781ac0
|
||||
size 61204
|
BIN
dmidecode-3.1.tar.xz.sig
Normal file
BIN
dmidecode-3.1.tar.xz.sig
Normal file
Binary file not shown.
@ -1,3 +1,24 @@
|
||||
-------------------------------------------------------------------
|
||||
Wed May 24 13:50:05 UTC 2017 - jdelvare@suse.de
|
||||
|
||||
- Update to upstream version 3.1:
|
||||
* Support for SMBIOS 3.1.0 and 3.1.1. This includes new chassis
|
||||
types, new processor family names, new processor family upgrade
|
||||
names, and new slot types, as well as support of larger BIOS
|
||||
ROM sizes and cache sizes, and a new structure type (43, TPM
|
||||
Device.)
|
||||
* A new command line option to query OEM strings.
|
||||
* All error messages are now printed on stderr (#47274, #48158.)
|
||||
* Fixes a crash with SIGBUS (#46066.)
|
||||
* Various minor fixes, improvements and cleanups.
|
||||
* Obsoletes dmidecode-01-add-no-sysfs-option-description-to-h-output.patch,
|
||||
dmidecode-02-fix-no-smbios-nor-dmi-entry-point-found-on-smbios3.patch,
|
||||
dmidecode-03-let-read_file-return-the-actual-data-size.patch,
|
||||
dmidecode-04-use-read_file-to-read-the-dmi-table-from-sysfs.patch,
|
||||
dmidecode-05-use-dword-for-structure-table-maximum-size-in-smbios3.patch,
|
||||
dmidecode-06-hide-irrelevant-fixup-message.patch, and
|
||||
dmidecode-07-only-decode-one-dmi-table.patch.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Jan 20 13:18:38 CET 2017 - jdelvare@suse.de
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# spec file for package dmidecode
|
||||
#
|
||||
# Copyright (c) 2017 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
@ -17,7 +17,7 @@
|
||||
|
||||
|
||||
Name: dmidecode
|
||||
Version: 3.0
|
||||
Version: 3.1
|
||||
Release: 0
|
||||
Summary: DMI table decoder
|
||||
License: GPL-2.0+
|
||||
@ -28,13 +28,6 @@ Source1: http://download.savannah.gnu.org/releases/%{name}/%{name}-%{vers
|
||||
# would be, but tarball is signed by someone else without signatures.
|
||||
# https://savannah.nongnu.org/project/memberlist-gpgkeys.php?group=dmidecode
|
||||
# Source2: %{name}.keyring
|
||||
Patch1: dmidecode-01-add-no-sysfs-option-description-to-h-output.patch
|
||||
Patch2: dmidecode-02-fix-no-smbios-nor-dmi-entry-point-found-on-smbios3.patch
|
||||
Patch3: dmidecode-03-let-read_file-return-the-actual-data-size.patch
|
||||
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
|
||||
@ -57,13 +50,6 @@ the BIOS told it to.
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
%patch3 -p1
|
||||
%patch4 -p1
|
||||
%patch5 -p1
|
||||
%patch6 -p1
|
||||
%patch7 -p1
|
||||
|
||||
%build
|
||||
make CFLAGS="%{optflags}" %{?_smp_mflags}
|
||||
|
Loading…
x
Reference in New Issue
Block a user