diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/intel_bios_reader.c | 7 |
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"); |