summaryrefslogtreecommitdiffstats
path: root/src/interface/smbios
diff options
context:
space:
mode:
authorMichael Brown2012-09-10 16:29:36 +0200
committerMichael Brown2012-09-10 16:29:36 +0200
commitc4500fb7cab08beabeee5c2d1e35f964764a7045 (patch)
tree402cf1a6a5b90fe0f948f4fc08c82f744a82b5d2 /src/interface/smbios
parent[settings] Use a generic setting's own type as its default type (diff)
downloadipxe-c4500fb7cab08beabeee5c2d1e35f964764a7045.tar.gz
ipxe-c4500fb7cab08beabeee5c2d1e35f964764a7045.tar.xz
ipxe-c4500fb7cab08beabeee5c2d1e35f964764a7045.zip
[smbios] Default to "hex" type for non-string SMBIOS settings
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/interface/smbios')
-rw-r--r--src/interface/smbios/smbios_settings.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/interface/smbios/smbios_settings.c b/src/interface/smbios/smbios_settings.c
index 727970e9..893b958e 100644
--- a/src/interface/smbios/smbios_settings.c
+++ b/src/interface/smbios/smbios_settings.c
@@ -120,14 +120,21 @@ static int smbios_fetch ( struct settings *settings __unused,
if ( tag_len == 0 ) {
/* String */
- return read_smbios_string ( &structure,
- buf[tag_offset],
- data, len );
+ if ( ( rc = read_smbios_string ( &structure,
+ buf[tag_offset],
+ data, len ) ) < 0 ) {
+ return rc;
+ }
+ if ( ! setting->type )
+ setting->type = &setting_type_string;
+ return rc;
} else {
/* Raw data */
if ( len > tag_len )
len = tag_len;
memcpy ( data, &buf[tag_offset], len );
+ if ( ! setting->type )
+ setting->type = &setting_type_hex;
return tag_len;
}
}