summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Jackson <ajax@freedesktop.org>2005-12-09 18:25:02 +0000
committerAdam Jackson <ajax@freedesktop.org>2005-12-09 18:25:02 +0000
commit5446e934a63ae28769a10110c8e712c349bacfef (patch)
tree8116f1840729d3dbffb6d6d596d585d331f7b3c0
parent8e115f2546aece7155ab266f725965830b9ad61d (diff)
Bug #3869: Don\'t walk off the end of an array in connector detection.MODULAR_COPY
(Eric Anholt)
-rw-r--r--src/radeon_bios.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/radeon_bios.c b/src/radeon_bios.c
index 787514d..aec55b7 100644
--- a/src/radeon_bios.c
+++ b/src/radeon_bios.c
@@ -165,12 +165,12 @@ Bool RADEONGetConnectorInfoFromBIOS (ScrnInfoPtr pScrn)
pRADEONEnt->PortInfo[crtc].DDCType = DDC_CRT2;
break;
default:
- pRADEONEnt->PortInfo[crtc].DDCType = DDC_NONE;
+ pRADEONEnt->PortInfo[crtc].DDCType = DDC_NONE_DETECTED;
break;
}
} else {
- pRADEONEnt->PortInfo[crtc].DDCType = DDC_NONE;
+ pRADEONEnt->PortInfo[crtc].DDCType = DDC_NONE_DETECTED;
}
crtc++;
} else {
@@ -273,6 +273,12 @@ Bool RADEONGetConnectorInfoFromBIOS (ScrnInfoPtr pScrn)
if ((tmp0 = RADEON_BIOS16(tmp + 0x15))) {
if ((tmp1 = RADEON_BIOS8(tmp0+2) & 0x07)) {
pRADEONEnt->PortInfo[0].DDCType = tmp1;
+ if (pRADEONEnt->PortInfo[0].DDCType > DDC_CRT2) {
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+ "Unknown DDCType %d found\n",
+ pRADEONEnt->PortInfo[0].DDCType);
+ pRADEONEnt->PortInfo[0].DDCType = DDC_NONE_DETECTED;
+ }
xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "LCD DDC Info Table found!\n");
}
}