aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/interface/smbios/smbios_settings.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/interface/smbios/smbios_settings.c b/src/interface/smbios/smbios_settings.c
index ec31b43f2..ca3f2fe2f 100644
--- a/src/interface/smbios/smbios_settings.c
+++ b/src/interface/smbios/smbios_settings.c
@@ -130,6 +130,13 @@ static int smbios_fetch ( struct settings *settings __unused,
return rc;
}
+ /* Limit length */
+ if ( tag_offset > sizeof ( buf ) ) {
+ tag_len = 0;
+ } else if ( ( tag_offset + tag_len ) > sizeof ( buf ) ) {
+ tag_len = ( sizeof ( buf ) - tag_offset );
+ }
+
/* Mangle UUIDs if necessary. iPXE treats UUIDs as
* being in network byte order (big-endian). SMBIOS
* specification version 2.6 states that UUIDs are