forked from pool/xorg-x11-server
18 lines
665 B
Diff
18 lines
665 B
Diff
|
diff --git a/hw/xfree86/modes/xf86EdidModes.c b/hw/xfree86/modes/xf86EdidModes.c
|
||
|
index 2f26a64..9489947 100644
|
||
|
--- a/hw/xfree86/modes/xf86EdidModes.c
|
||
|
+++ b/hw/xfree86/modes/xf86EdidModes.c
|
||
|
@@ -327,6 +327,12 @@ DDCModeFromDetailedTiming(int scrnIndex, struct detailed_timings *timing,
|
||
|
Mode->VSyncEnd = Mode->VSyncStart + timing->v_sync_width;
|
||
|
Mode->VTotal = timing->v_active + timing->v_blanking;
|
||
|
|
||
|
+ /* perform basic check on the detail timing */
|
||
|
+ if (Mode->HSyncEnd > Mode->HTotal || Mode->VSyncEnd > Mode->VTotal) {
|
||
|
+ xfree(Mode);
|
||
|
+ return NULL;
|
||
|
+ }
|
||
|
+
|
||
|
xf86SetModeDefaultName(Mode);
|
||
|
|
||
|
/* We ignore h/v_size and h/v_border for now. */
|