summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEgbert Eich <eich@freedesktop.org>2009-11-09 23:42:35 +0100
committerEgbert Eich <eich@freedesktop.org>2009-11-09 23:42:35 +0100
commit2949564e1b2ab751067ef7864adc1afeab055c3f (patch)
treec2028bf2eee0b88d9e682c349d34c6924180d339
parentfb1f84dd62cfd4e2a550ccc90006f4e75c1b6b86 (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.c4
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