[smbios] Fix SMBIOS string fetching
authorMichael Brown <mcb30@etherboot.org>
Wed, 11 Jun 2008 12:43:58 +0000 (13:43 +0100)
committerMichael Brown <mcb30@etherboot.org>
Wed, 11 Jun 2008 12:43:58 +0000 (13:43 +0100)
A bug in read_smbios_string() was causing the starting offset of the
SMBIOS structure to be added twice, resulting in completely the wrong
strings being returned.

Bug identified by Martin Herweg <m.herweg@gmx.de>

src/arch/i386/firmware/pcbios/smbios.c

index aa4f3f3..875d421 100644 (file)
@@ -275,14 +275,12 @@ int read_smbios_string ( struct smbios_structure *structure,
                 * smbios_strings struct is constructed so as to
                 * always end on a string boundary.
                 */
                 * smbios_strings struct is constructed so as to
                 * always end on a string boundary.
                 */
-               string_len = strlen_user ( smbios.address,
-                                          ( structure->offset + offset ) );
+               string_len = strlen_user ( smbios.address, offset );
                if ( --index == 0 ) {
                        /* Copy string, truncating as necessary. */
                        if ( len > string_len )
                                len = string_len;
                if ( --index == 0 ) {
                        /* Copy string, truncating as necessary. */
                        if ( len > string_len )
                                len = string_len;
-                       copy_from_user ( data, smbios.address,
-                                        ( structure->offset + offset ), len );
+                       copy_from_user ( data, smbios.address, offset, len );
                        return string_len;
                }
        }
                        return string_len;
                }
        }