From 4e29e6d5687cf25ac16e48ad41498526e6a56ca8 Mon Sep 17 00:00:00 2001 From: Lianbo Jiang 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 "", line 1, in SystemError: returned a result with an error set Signed-off-by: Lianbo Jiang --- 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)"/> + fixedsize="15" index_attr="index"/>