summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Coopersmith <alan.coopersmith@sun.com>2009-12-11 00:46:22 -0800
committerAlan Coopersmith <alan.coopersmith@sun.com>2009-12-18 16:51:45 -0800
commiteb750f8b5e14751d4c40b50499baec5d2ba79db9 (patch)
tree48791902f8ebe6f6422787285accb13d44e25b8a
parent1df4bd6011e110dcf0649b15bfffd4ab9e6961d6 (diff)
Check for failures from CreateNewResourceType
Make sure to check return value before setting bitmask flags. For most calls, just fails to init the extension. Since Xinput already calls FatalError() on initialization failure, so does failure to allocate Xinput's resource type. Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> Reviewed-by: Keith Packard <keithp@keithp.com>
-rw-r--r--Xext/mbuf.c4
-rw-r--r--Xext/panoramiX.c16
-rw-r--r--Xext/sync.c8
-rw-r--r--Xext/xvdisp.c4
-rw-r--r--Xi/extinit.c2
-rw-r--r--dbe/dbe.c9
-rw-r--r--glx/glxext.c3
-rw-r--r--hw/dmx/glxProxy/glxext.c4
-rw-r--r--hw/kdrive/ephyr/ephyrdriext.c4
-rw-r--r--hw/xfree86/dri/dri.c3
-rw-r--r--hw/xfree86/dri2/dri2ext.c6
-rw-r--r--hw/xquartz/xpr/dri.c2
-rw-r--r--xfixes/cursor.c2
-rw-r--r--xfixes/region.c3
-rw-r--r--xkb/xkb.c5
15 files changed, 58 insertions, 17 deletions
diff --git a/Xext/mbuf.c b/Xext/mbuf.c
index 1f2497463..af312212f 100644
--- a/Xext/mbuf.c
+++ b/Xext/mbuf.c
@@ -467,7 +467,9 @@ MultibufferExtensionInit()
* create the resource types
*/
MultibufferDrawableResType =
- CreateNewResourceType(MultibufferDrawableDelete)|RC_DRAWABLE;
+ CreateNewResourceType(MultibufferDrawableDelete);
+ if (MultiBufferDrawableResType)
+ MultibufferDrawableResType |= RC_DRAWABLE;
MultibufferResType = CreateNewResourceType(MultibufferDelete);
MultibuffersResType = CreateNewResourceType(MultibuffersDelete);
OtherClientResType = CreateNewResourceType(OtherClientDelete);
diff --git a/Xext/panoramiX.c b/Xext/panoramiX.c
index 4b7b07e1d..f48bd36a6 100644
--- a/Xext/panoramiX.c
+++ b/Xext/panoramiX.c
@@ -503,15 +503,19 @@ void PanoramiXExtensionInit(int argc, char *argv[])
}
XRC_DRAWABLE = CreateNewResourceClass();
- XRT_WINDOW = CreateNewResourceType(XineramaDeleteResource) |
- XRC_DRAWABLE;
- XRT_PIXMAP = CreateNewResourceType(XineramaDeleteResource) |
- XRC_DRAWABLE;
+ XRT_WINDOW = CreateNewResourceType(XineramaDeleteResource);
+ if (XRT_WINDOW)
+ XRT_WINDOW |= XRC_DRAWABLE;
+ XRT_PIXMAP = CreateNewResourceType(XineramaDeleteResource);
+ if (XRT_PIXMAP)
+ XRT_PIXMAP |= XRC_DRAWABLE;
XRT_GC = CreateNewResourceType(XineramaDeleteResource);
XRT_COLORMAP = CreateNewResourceType(XineramaDeleteResource);
- panoramiXGeneration = serverGeneration;
- success = TRUE;
+ if (XRT_WINDOW && XRT_PIXMAP && XRT_GC && XRT_COLORMAP) {
+ panoramiXGeneration = serverGeneration;
+ success = TRUE;
+ }
}
if (!success) {
diff --git a/Xext/sync.c b/Xext/sync.c
index 667f8ab78..d8a2b1535 100644
--- a/Xext/sync.c
+++ b/Xext/sync.c
@@ -2113,8 +2113,12 @@ SyncExtensionInit(void)
RTCounter = CreateNewResourceType(FreeCounter);
}
RTAlarm = CreateNewResourceType(FreeAlarm);
- RTAwait = CreateNewResourceType(FreeAwait)|RC_NEVERRETAIN;
- RTAlarmClient = CreateNewResourceType(FreeAlarmClient)|RC_NEVERRETAIN;
+ RTAwait = CreateNewResourceType(FreeAwait);
+ if (RTAwait)
+ RTAwait |= RC_NEVERRETAIN;
+ RTAlarmClient = CreateNewResourceType(FreeAlarmClient);
+ if (RTAlarmClient)
+ RTAlarmClient |= RC_NEVERRETAIN;
if (RTCounter == 0 || RTAwait == 0 || RTAlarm == 0 ||
RTAlarmClient == 0 ||
diff --git a/Xext/xvdisp.c b/Xext/xvdisp.c
index 5229916a9..1f3fc0f3d 100644
--- a/Xext/xvdisp.c
+++ b/Xext/xvdisp.c
@@ -1865,8 +1865,8 @@ void XineramifyXv(void)
XvXRTPort = CreateNewResourceType(XineramaDeleteResource);
- if(!xvsp0) return;
-
+ if (!xvsp0 || !XvXRTPort) return;
+
for(i = 0; i < xvsp0->nAdaptors; i++) {
refAdapt = xvsp0->pAdaptors + i;
diff --git a/Xi/extinit.c b/Xi/extinit.c
index 0c1291903..372f77f3b 100644
--- a/Xi/extinit.c
+++ b/Xi/extinit.c
@@ -1270,6 +1270,8 @@ XInputExtensionInit(void)
XIVersion = thisversion;
MakeDeviceTypeAtoms();
RT_INPUTCLIENT = CreateNewResourceType((DeleteType) InputClientGone);
+ if (!RT_INPUTCLIENT)
+ FatalError("Failed to add resource type for XI.\n");
RegisterResourceName(RT_INPUTCLIENT, "INPUTCLIENT");
FixExtensionEvents(extEntry);
ReplySwapVector[IReqCode] = (ReplySwapPtr) SReplyIDispatch;
diff --git a/dbe/dbe.c b/dbe/dbe.c
index a4f853d80..8d2a343fe 100644
--- a/dbe/dbe.c
+++ b/dbe/dbe.c
@@ -1573,9 +1573,16 @@ DbeExtensionInit(void)
/* Create the resource types. */
dbeDrawableResType =
- CreateNewResourceType(DbeDrawableDelete) | RC_DRAWABLE;
+ CreateNewResourceType(DbeDrawableDelete);
+ if (!dbeDrawableResType)
+ return;
+ dbeDrawableResType |= RC_DRAWABLE;
+
dbeWindowPrivResType =
CreateNewResourceType(DbeWindowPrivDelete);
+ if (!dbeWindowPrivResType)
+ return;
+
if (!dixRegisterPrivateOffset(dbeDrawableResType,
offsetof(PixmapRec, devPrivates)))
return;
diff --git a/glx/glxext.c b/glx/glxext.c
index 9f9c0ed1f..546d968fd 100644
--- a/glx/glxext.c
+++ b/glx/glxext.c
@@ -347,6 +347,9 @@ void GlxExtensionInit(void)
__glXDrawableRes = CreateNewResourceType((DeleteType)DrawableGone);
__glXSwapBarrierRes = CreateNewResourceType((DeleteType)SwapBarrierGone);
+ if (!__glXContextRes || !__glXDrawableRes || !__glXSwapBarrierRes)
+ return;
+
RegisterResourceName(__glXContextRes, "GLXContext");
RegisterResourceName(__glXDrawableRes, "GLXDrawable");
RegisterResourceName(__glXSwapBarrierRes, "GLXSwapBarrier");
diff --git a/hw/dmx/glxProxy/glxext.c b/hw/dmx/glxProxy/glxext.c
index b30d144ee..0c3906897 100644
--- a/hw/dmx/glxProxy/glxext.c
+++ b/hw/dmx/glxProxy/glxext.c
@@ -299,6 +299,10 @@ void GlxExtensionInit(void)
__glXWindowRes = CreateNewResourceType((DeleteType)WindowGone);
__glXPbufferRes = CreateNewResourceType((DeleteType)PbufferGone);
+ if (!__glXContextRes || !__glXClientRes || !__glXPixmapRes ||
+ !__glXWindowRes || !__glXPbufferRes)
+ return;
+
/*
** Add extension to server extensions.
*/
diff --git a/hw/kdrive/ephyr/ephyrdriext.c b/hw/kdrive/ephyr/ephyrdriext.c
index 231b0985c..ba1733bdf 100644
--- a/hw/kdrive/ephyr/ephyrdriext.c
+++ b/hw/kdrive/ephyr/ephyrdriext.c
@@ -141,6 +141,10 @@ ephyrDRIExtensionInit (ScreenPtr a_screen)
#ifdef XF86DRI_EVENTS
EventType = CreateNewResourceType (XF86DRIFreeEvents);
+ if (!EventType) {
+ EPHYR_LOG_ERROR ("failed to register DRI event resource type\n") ;
+ goto out ;
+ }
#endif
if ((extEntry = AddExtension(XF86DRINAME,
diff --git a/hw/xfree86/dri/dri.c b/hw/xfree86/dri/dri.c
index 0de9be621..1a6cb4d83 100644
--- a/hw/xfree86/dri/dri.c
+++ b/hw/xfree86/dri/dri.c
@@ -792,6 +792,9 @@ DRIExtensionInit(void)
DRIDrawablePrivResType = CreateNewResourceType(DRIDrawablePrivDelete);
DRIContextPrivResType = CreateNewResourceType(DRIContextPrivDelete);
+ if (!DRIDrawablePrivResType || !DRIContextPrivResType)
+ return FALSE;
+
RegisterBlockAndWakeupHandlers(DRIBlockHandler, DRIWakeupHandler, NULL);
return TRUE;
diff --git a/hw/xfree86/dri2/dri2ext.c b/hw/xfree86/dri2/dri2ext.c
index dc07b47af..8acf26709 100644
--- a/hw/xfree86/dri2/dri2ext.c
+++ b/hw/xfree86/dri2/dri2ext.c
@@ -416,6 +416,11 @@ static int DRI2DrawableGone(pointer p, XID id)
static void
DRI2ExtensionInit(void)
{
+ dri2DrawableRes = CreateNewResourceType(DRI2DrawableGone);
+
+ if (!dri2DrawableRes)
+ return;
+
dri2Extension = AddExtension(DRI2_NAME,
DRI2NumberEvents,
DRI2NumberErrors,
@@ -424,7 +429,6 @@ DRI2ExtensionInit(void)
NULL,
StandardMinorOpcode);
- dri2DrawableRes = CreateNewResourceType(DRI2DrawableGone);
}
extern Bool noDRI2Extension;
diff --git a/hw/xquartz/xpr/dri.c b/hw/xquartz/xpr/dri.c
index f570bee5d..a9c0f2234 100644
--- a/hw/xquartz/xpr/dri.c
+++ b/hw/xquartz/xpr/dri.c
@@ -279,7 +279,7 @@ DRIExtensionInit(void)
{
DRIDrawablePrivResType = CreateNewResourceType(DRIDrawablePrivDelete);
- return TRUE;
+ return (DRIDrawablePrivResType != 0);
}
void
diff --git a/xfixes/cursor.c b/xfixes/cursor.c
index 60d422296..c3e1e3534 100644
--- a/xfixes/cursor.c
+++ b/xfixes/cursor.c
@@ -1095,6 +1095,6 @@ XFixesCursorInit (void)
}
}
- return CursorClientType && CursorWindowType;
+ return CursorClientType && CursorHideCountType && CursorWindowType;
}
diff --git a/xfixes/region.c b/xfixes/region.c
index 966eda051..59d8cee54 100644
--- a/xfixes/region.c
+++ b/xfixes/region.c
@@ -64,7 +64,8 @@ Bool
XFixesRegionInit (void)
{
RegionResType = CreateNewResourceType(RegionResFree);
- return TRUE;
+
+ return (RegionResType != 0);
}
int
diff --git a/xkb/xkb.c b/xkb/xkb.c
index 35f8d1cbd..c490f8b9f 100644
--- a/xkb/xkb.c
+++ b/xkb/xkb.c
@@ -6704,6 +6704,10 @@ XkbExtensionInit(void)
{
ExtensionEntry *extEntry;
+ RT_XKBCLIENT = CreateNewResourceType(XkbClientGone);
+ if (!RT_XKBCLIENT)
+ return;
+
if ((extEntry = AddExtension(XkbName, XkbNumberEvents, XkbNumberErrors,
ProcXkbDispatch, SProcXkbDispatch,
NULL, StandardMinorOpcode))) {
@@ -6711,7 +6715,6 @@ XkbExtensionInit(void)
XkbEventBase = (unsigned char)extEntry->eventBase;
XkbErrorBase = (unsigned char)extEntry->errorBase;
XkbKeyboardErrorCode = XkbErrorBase+XkbKeyboard;
- RT_XKBCLIENT = CreateNewResourceType(XkbClientGone);
}
return;
}