xserver: Branch 'master'

Michel Daenzer daenzer at kemper.freedesktop.org
Tue Jul 17 03:14:05 PDT 2007


 exa/exa.c |   39 +++++++++++++++++++++++++++++++++++++++
 1 files changed, 39 insertions(+)

New commits:
diff-tree 5657fb065cc79ba3ca5a836f45637ba9894f9abf (from bbe7ce10fa93017374d7a4611427b70a22d7507a)
Author: Dodji Seketeli <dodji at seketeli.org>
Date:   Tue Jul 17 12:12:02 2007 +0200

    exaDriverInit: Fail if pScreenInfo or a member of it is invalid.
    
    EXA may attempt to use the invalid value and crash otherwise.

diff --git a/exa/exa.c b/exa/exa.c
index c5b5a66..8e22b89 100644
--- a/exa/exa.c
+++ b/exa/exa.c
@@ -569,6 +569,45 @@ exaDriverInit (ScreenPtr		pScreen,
     PictureScreenPtr ps;
 #endif
 
+    if (!pScreenInfo)
+	return FALSE;
+
+    if (!pScreenInfo->memoryBase) {
+	LogMessage(X_ERROR, "EXA(%d): ExaDriverRec::memoryBase must be "
+		   "non-zero\n", pScreen->myNum);
+	return FALSE;
+    }
+
+    if (!pScreenInfo->memorySize) {
+	LogMessage(X_ERROR, "EXA(%d): ExaDriverRec::memorySize must be "
+		   "non-zero\n", pScreen->myNum);
+	return FALSE;
+    }
+
+    if (pScreenInfo->offScreenBase > pScreenInfo->memorySize) {
+	LogMessage(X_ERROR, "EXA(%d): ExaDriverRec::offScreenBase must be <= "
+		   "ExaDriverRec::memorySize\n", pScreen->myNum);
+	return FALSE;
+    }
+
+    if (!pScreenInfo->PrepareSolid) {
+	LogMessage(X_ERROR, "EXA(%d): ExaDriverRec::PrepareSolid must be "
+		   "non-NULL\n", pScreen->myNum);
+	return FALSE;
+    }
+
+    if (!pScreenInfo->PrepareCopy) {
+	LogMessage(X_ERROR, "EXA(%d): ExaDriverRec::PrepareCopy must be "
+		   "non-NULL\n", pScreen->myNum);
+	return FALSE;
+    }
+
+    if (!pScreenInfo->WaitMarker) {
+	LogMessage(X_ERROR, "EXA(%d): ExaDriverRec::WaitMarker must be "
+		   "non-NULL\n", pScreen->myNum);
+	return FALSE;
+    }
+
     if (pScreenInfo->exa_major != EXA_VERSION_MAJOR ||
 	pScreenInfo->exa_minor > EXA_VERSION_MINOR)
     {


More information about the xorg-commit mailing list