diff options
author | Egbert Eich <eich@freedesktop.org> | 2009-11-09 23:42:35 +0100 |
---|---|---|
committer | Egbert Eich <eich@freedesktop.org> | 2009-11-09 23:42:35 +0100 |
commit | 2949564e1b2ab751067ef7864adc1afeab055c3f (patch) | |
tree | c2028bf2eee0b88d9e682c349d34c6924180d339 | |
parent | fb1f84dd62cfd4e2a550ccc90006f4e75c1b6b86 (diff) |
AtomBIOS/PM: Detect wrong size value in VoltageObj table.
Some Voltage Object tables contain a size of 0. If this isn't caught
the driver will hang in an endless loop.
-rw-r--r-- | src/rhd_atombios.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/rhd_atombios.c b/src/rhd_atombios.c index be36d54..313329e 100644 --- a/src/rhd_atombios.c +++ b/src/rhd_atombios.c @@ -5452,6 +5452,10 @@ rhdAtomChipLimits(atomBiosHandlePtr handle, AtomBiosRequestID func, AtomBiosArgP (voltage->asVoltageObj[0].asFormula.ucFlag & 0x01 ? 2 : 1); break; } + if (!voltage->asVoltageObj[0].ucSize) { + xf86DrvMsg(handle->scrnIndex, X_WARNING, "VoltageObjectInfo table has invalid entry size info.\n"); + break; + } voltage = (ATOM_VOLTAGE_OBJECT_INFO *) (((char *) voltage) + voltage->asVoltageObj[0].ucSize); } } else |