Hi Jerry, On Thu, 19 Nov 2020 12:55:14 -0700, Jerry Hoemann wrote: > Decoding of OEM records can depend upon the product in addition > to the manufacturer. So, save "Product Name" from type 1 record > in addition to "Manufacturer" in dmi_set_vendor. > > Signed-off-by: Jerry Hoemann <jerry.hoem...@hpe.com> > --- > dmidecode.c | 4 ++-- > dmioem.c | 5 ++++- > dmioem.h | 2 +- > 3 files changed, 7 insertions(+), 4 deletions(-) > (...) > --- a/dmidecode.c > +++ b/dmidecode.c > @@ -5242,8 +5242,8 @@ static void dmi_table_decode(u8 *buf, u32 len, u16 num, > u16 ver, u32 flags) > } > > /* assign vendor for vendor-specific decodes later */ > - if (h.type == 1 && h.length >= 5) > - dmi_set_vendor(dmi_string(&h, data[0x04])); > + if (h.type == 1 && h.length >= 6) > + dmi_set_vendor(dmi_string(&h, data[0x04]), > dmi_string(&h, data[0x5]));
Looking at this now, I think we should be calling _dmi_string() instead, as these strings will be used for comparison purposes only and will never be displayed. The issue predates your changes though, so don't bother with that, I'll fix it myself afterwards. > > /* Fixup a common mistake */ > if (h.type == 34) > diff --git a/dmioem.c b/dmioem.c > index beb3df0..36820e4 100644 > --- a/dmioem.c > +++ b/dmioem.c > (...) > -void dmi_set_vendor(const char *s) > +void dmi_set_vendor(const char *s, const char *p) > { > int len; > > @@ -70,6 +71,8 @@ void dmi_set_vendor(const char *s) > dmi_vendor = VENDOR_IBM; > else if (strncmp(s, "LENOVO", len) == 0) > dmi_vendor = VENDOR_LENOVO; > + > + dmi_product = p; > } Fine with me. I'll probably rename "s" to something else later though, originally "s" was for "string" but now that there are 2 string parameters, this gets confusing. Applied, thanks. -- Jean Delvare SUSE L3 Support _______________________________________________ https://lists.nongnu.org/mailman/listinfo/dmidecode-devel