From 4e29e6d5687cf25ac16e48ad41498526e6a56ca8 Mon Sep 17 00:00:00 2001
From: Lianbo Jiang <lijiang@redhat.com>
Date: Sun, 28 Apr 2019 14:06:59 +0800
Subject: [PATCH] Fix memory type detail map size
Note: (https://github.com/nima/python-dmidecode/pull/5/commits/
edca64c89d084a8c42b9c48a51eb5ac13eac52c6)
For index and array size in xml map, bit mapped type descriptions
array size must be kept coerent with bit mask otherwise it could
cause an error, e.g:
Python 3.6.8 (default, Apr 3 2019, 12:10:30)
[GCC 8.2.1 20180905 (Red Hat 8.2.1-3)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import dmidecode
>>> dmidecode.memory()
IndexError: list assignment index out of range
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
SystemError: <built-in function memory> returned a result with an error set
Signed-off-by: Lianbo Jiang <lijiang@redhat.com>
---
src/dmidecode.c | 4 ++--
src/pymap.xml | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/dmidecode.c b/src/dmidecode.c
index 0615bad315fb..d74a374a3a0f 100644
--- a/src/dmidecode.c
+++ b/src/dmidecode.c
@@ -2905,9 +2905,9 @@ void dmi_memory_device_type_detail(xmlNode *node, u16 code)
dmixml_AddAttribute(data_n, "dmispec", "7.18.3");
dmixml_AddAttribute(data_n, "flags", "0x%04x", code);
- if((code & 0x1FFE) != 0) {
+ if((code & 0xFFFE) != 0) {
int i;
- for(i = 1; i <= 14; i++) {
+ for(i = 1; i <= 15; i++) {
if(code & (1 << i)) {
xmlNode *td_n = dmixml_AddTextChild(data_n, "flag", "%s", detail[i - 1]);
assert( td_n != NULL );
diff --git a/src/pymap.xml b/src/pymap.xml
index 7d5de70bda65..7325a8527018 100644
--- a/src/pymap.xml
+++ b/src/pymap.xml
@@ -440,7 +440,7 @@
valuetype="string" value="concat(TotalWidth, ' ', TotalWidth/@unit)"/>
<Map keytype="constant" key="AssetTag" valuetype="string" value="AssetTag"/>
<Map keytype="constant" key="Type Detail" valuetype="list:string" value="TypeDetails/flag"
- fixedsize="12" index_attr="index"/>
+ fixedsize="15" index_attr="index"/>
<Map keytype="constant" key="Array Handle" valuetype="string" value="@ArrayHandle"/>
<Map keytype="constant" key="Form Factor" valuetype="string" value="FormFactor"/>
<Map keytype="constant" key="Size"
--
2.17.1