From 9131df4ced22a2a1ce71d0321cd445ff7a916556 Mon Sep 17 00:00:00 2001 From: Jarrod Johnson Date: Wed, 11 Oct 2017 09:22:41 -0400 Subject: [PATCH] Fix for DIMM models with invalid bytes Some DIMMs have short model numbers and pad with NULL. Also tolerate other common padding (0xff and spaces). Change-Id: I01550996ade799b2c29d910ae9bb8c5150f94a38 --- pyghmi/ipmi/private/spd.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pyghmi/ipmi/private/spd.py b/pyghmi/ipmi/private/spd.py index 4450ef32..e3c631a9 100644 --- a/pyghmi/ipmi/private/spd.py +++ b/pyghmi/ipmi/private/spd.py @@ -737,7 +737,8 @@ class SPD(object): self.info['manufacture_date'] = decode_spd_date(spd[120], spd[121]) self.info['serial'] = hex(struct.unpack( '>I', struct.pack('4B', *spd[122:126]))[0])[2:].rjust(8, '0') - self.info['model'] = struct.pack('18B', *spd[128:146]) + self.info['model'] = struct.pack('18B', *spd[128:146]).strip( + '\x00\xff ') def _decode_ddr4(self): spd = self.rawdata @@ -762,4 +763,5 @@ class SPD(object): self.info['manufacture_date'] = decode_spd_date(spd[323], spd[324]) self.info['serial'] = hex(struct.unpack( '>I', struct.pack('4B', *spd[325:329]))[0])[2:].rjust(8, '0') - self.info['model'] = struct.pack('18B', *spd[329:347]) + self.info['model'] = struct.pack('18B', *spd[329:347]).strip( + '\x00\xff ')