summaryrefslogtreecommitdiff
path: root/tools/intel_bios_reader.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/intel_bios_reader.c')
-rw-r--r--tools/intel_bios_reader.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/tools/intel_bios_reader.c b/tools/intel_bios_reader.c
index a5412f5a..bb6139eb 100644
--- a/tools/intel_bios_reader.c
+++ b/tools/intel_bios_reader.c
@@ -1055,11 +1055,14 @@ err:
static int
-get_device_id(unsigned char *bios)
+get_device_id(unsigned char *bios, int size)
{
int device;
int offset = (bios[0x19] << 8) + bios[0x18];
+ if (offset + 7 >= size)
+ return -1;
+
if (bios[offset] != 'P' ||
bios[offset+1] != 'C' ||
bios[offset+2] != 'I' ||
@@ -1299,7 +1302,7 @@ int main(int argc, char **argv)
printf("\n");
if (devid == -1)
- devid = get_device_id(VBIOS);
+ devid = get_device_id(VBIOS, size);
if (devid == -1)
printf("Warning: could not find PCI device ID!\n");