Comment 11 for bug 1671570

Revision history for this message
Mario Limonciello (superm1) wrote :

OK so my suspicion based upon that is that by checking a table that doesn't exist it's defaulting to 0x00, which for you happens to have DE for the first byte. Can you please confirm my suspicions by doing this:

Compile the following test application and run it, share your output back. I expect that it will return an invalid table address. If it does, I'll make a fix in fwupd for this for you.

# gcc -o test test.c -lsmbios_c `pkg-config glib-2.0 --cflags --libs` && sudo ./test

----
#include <smbios_c/smbios.h>
#include <glib/gstdio.h>

struct smbios_struct
{
    u8 type;
    u8 length;
    u16 handle;
};

int main(void)
{
        guint8 dell_supported = 0;
        struct smbios_struct *de_table;

        de_table = smbios_get_next_struct_by_type (0, 0xED);
        if (!de_table)
                g_print("invalid table address\n");
        else
                g_print("de_table: %d %d %d\n", de_table->type, de_table->length, de_table->handle);
        smbios_struct_get_data (de_table, &(dell_supported), 0x00, sizeof(guint8));

        if (dell_supported != 0xDE)
                g_print("not supported, dell supported != de\n");
        else
                g_print("supported\n");
}
----