diff options
Diffstat (limited to 'modules/devices')
| -rw-r--r-- | modules/devices/spd-decode.c | 7 | 
1 files changed, 4 insertions, 3 deletions
| diff --git a/modules/devices/spd-decode.c b/modules/devices/spd-decode.c index 06fb4d32..27e4593f 100644 --- a/modules/devices/spd-decode.c +++ b/modules/devices/spd-decode.c @@ -1593,18 +1593,19 @@ static void decode_ddr4_manufacturer(unsigned char count, unsigned char code, ch          return;      } -    if (parity(count) != 1) { +    if (parity(count) != 1 || parity(code) != 1) {          *manufacturer = _("Invalid");          return;      }      int bank = count & 0x7f; -    if (bank >= VENDORS_BANKS || (bank == VENDORS_BANKS - 1 && code > VENDORS_LAST_BANK_SIZE)) { +    int pos = code & 0x7f; +    if (bank >= VENDORS_BANKS || (bank == VENDORS_BANKS - 1 && pos > VENDORS_LAST_BANK_SIZE)) {          *manufacturer = _("Unknown");          return;      } -    *manufacturer = (char *)vendors[bank][code - 1]; +    *manufacturer = (char *)vendors[bank][pos - 1];  }  static void decode_ddr4_module_manufacturer(unsigned char *bytes, int spd_size, | 
