diff options
-rw-r--r-- | Xext/xtest.c | 5 | ||||
-rw-r--r-- | Xi/exevents.c | 8 | ||||
-rw-r--r-- | Xi/getprop.c | 2 | ||||
-rw-r--r-- | Xi/getselev.c | 6 | ||||
-rw-r--r-- | Xi/xiquerydevice.c | 4 | ||||
-rw-r--r-- | dix/colormap.c | 2 | ||||
-rw-r--r-- | dix/dixfonts.c | 18 | ||||
-rw-r--r-- | dix/extension.c | 5 | ||||
-rw-r--r-- | fb/fboverlay.c | 8 | ||||
-rw-r--r-- | fb/fbscreen.c | 4 | ||||
-rw-r--r-- | hw/xfree86/common/xf86Config.c | 32 | ||||
-rw-r--r-- | hw/xfree86/common/xf86Helper.c | 1 | ||||
-rw-r--r-- | hw/xfree86/common/xf86Init.c | 4 | ||||
-rw-r--r-- | hw/xfree86/dri2/dri2.c | 9 | ||||
-rw-r--r-- | mi/micmap.c | 2 | ||||
-rw-r--r-- | mi/midispcur.c | 10 | ||||
-rw-r--r-- | mi/mipointer.c | 1 | ||||
-rw-r--r-- | mi/mispans.c | 2 | ||||
-rw-r--r-- | mi/mizerline.c | 6 | ||||
-rw-r--r-- | os/utils.c | 21 | ||||
-rw-r--r-- | render/render.c | 25 | ||||
-rw-r--r-- | xfixes/region.c | 2 | ||||
-rw-r--r-- | xkb/ddxList.c | 4 |
23 files changed, 92 insertions, 89 deletions
diff --git a/Xext/xtest.c b/Xext/xtest.c index b26bc3387..6780aa62a 100644 --- a/Xext/xtest.c +++ b/Xext/xtest.c @@ -374,10 +374,7 @@ ProcXTestFakeInput(ClientPtr client) if (!dev->valuator) return BadDevice; - /* broken lib, XI events have root uninitialized */ - if (extension || ev->u.keyButtonPointer.root == None) - root = GetCurrentRootWindow(dev); - else + if (!(extension || ev->u.keyButtonPointer.root == None)) { rc = dixLookupWindow(&root, ev->u.keyButtonPointer.root, client, DixGetAttrAccess); diff --git a/Xi/exevents.c b/Xi/exevents.c index 5b207bc4b..18803c95e 100644 --- a/Xi/exevents.c +++ b/Xi/exevents.c @@ -1607,14 +1607,18 @@ AddExtensionClient(WindowPtr pWin, ClientPtr client, Mask mask, int mskidx) if (!others) return BadAlloc; if (!pWin->optional->inputMasks && !MakeInputMasks(pWin)) - return BadAlloc; + goto bail; others->mask[mskidx] = mask; others->resource = FakeClientID(client->index); others->next = pWin->optional->inputMasks->inputClients; pWin->optional->inputMasks->inputClients = others; if (!AddResource(others->resource, RT_INPUTCLIENT, (pointer) pWin)) - return BadAlloc; + goto bail; return Success; + +bail: + free(others); + return BadAlloc; } static Bool diff --git a/Xi/getprop.c b/Xi/getprop.c index ba98fc80f..5e102627d 100644 --- a/Xi/getprop.c +++ b/Xi/getprop.c @@ -115,7 +115,7 @@ ProcXGetDeviceDontPropagateList(ClientPtr client) if ((others = wOtherInputMasks(pWin)) != 0) { for (i = 0; i < EMASKSIZE; i++) - tbuf = ClassFromMask(NULL, others->dontPropagateMask[i], i, + ClassFromMask(NULL, others->dontPropagateMask[i], i, &count, COUNT); if (count) { rep.count = count; diff --git a/Xi/getselev.c b/Xi/getselev.c index d63b661cd..7304738b3 100644 --- a/Xi/getselev.c +++ b/Xi/getselev.c @@ -118,13 +118,13 @@ ProcXGetSelectedExtensionEvents(ClientPtr client) if ((pOthers = wOtherInputMasks(pWin)) != 0) { for (others = pOthers->inputClients; others; others = others->next) for (i = 0; i < EMASKSIZE; i++) - tclient = ClassFromMask(NULL, others->mask[i], i, + ClassFromMask(NULL, others->mask[i], i, &rep.all_clients_count, COUNT); for (others = pOthers->inputClients; others; others = others->next) if (SameClient(others, client)) { for (i = 0; i < EMASKSIZE; i++) - tclient = ClassFromMask(NULL, others->mask[i], i, + ClassFromMask(NULL, others->mask[i], i, &rep.this_client_count, COUNT); break; } @@ -152,8 +152,8 @@ ProcXGetSelectedExtensionEvents(ClientPtr client) if (total_length) { client->pSwapReplyFunc = (ReplySwapPtr) Swap32Write; WriteSwappedDataToClient(client, total_length, buf); - free(buf); } + free(buf); return Success; } diff --git a/Xi/xiquerydevice.c b/Xi/xiquerydevice.c index 6eea72410..a768d499c 100644 --- a/Xi/xiquerydevice.c +++ b/Xi/xiquerydevice.c @@ -107,8 +107,10 @@ ProcXIQueryDevice(ClientPtr client) } info = calloc(1, len); - if (!info) + if (!info) { + free(skip); return BadAlloc; + } memset(&rep, 0, sizeof(xXIQueryDeviceReply)); rep.repType = X_Reply; diff --git a/dix/colormap.c b/dix/colormap.c index 2e9a80647..0e1feb6c4 100644 --- a/dix/colormap.c +++ b/dix/colormap.c @@ -1879,6 +1879,7 @@ AllocPseudo (int client, ColormapPtr pmap, int c, int r, Bool contig, { for (p = ppixTemp; p < ppixTemp + npix; p++) pmap->red[*p].refcnt = 0; + free(ppixTemp); return BadAlloc; } pmap->clientPixelsRed[client] = ppix; @@ -2104,6 +2105,7 @@ AllocShared (ColormapPtr pmap, Pixel *ppix, int c, int r, int g, int b, { for (z++ ; z < npixShared; z++) free(ppshared[z]); + free(psharedList); return FALSE; } } diff --git a/dix/dixfonts.c b/dix/dixfonts.c index d8f15290b..fbac124da 100644 --- a/dix/dixfonts.c +++ b/dix/dixfonts.c @@ -66,16 +66,10 @@ Equipment Corporation. #include "dixfont.h" #include "xace.h" -#ifdef DEBUG -#include <stdio.h> -#endif - #ifdef XF86BIGFONT #include "xf86bigfontsrv.h" #endif -#define QUERYCHARINFO(pci, pr) *(pr) = (pci)->metrics - extern pointer fosNaturalParams; extern FontPtr defaultFont; @@ -391,14 +385,6 @@ OpenFont(ClientPtr client, XID fid, Mask flags, unsigned lenfname, char *pfontna int i; FontPtr cached = (FontPtr)0; -#ifdef FONTDEBUG - char *f; - f = malloc(lenfname + 1); - memmove(f, pfontname, lenfname); - f[lenfname] = '\0'; - ErrorF("[dix] OpenFont: fontname is \"%s\"\n", f); - free(f); -#endif if (!lenfname || lenfname > XLFDMAXFONTNAMELEN) return BadName; if (patternCache) @@ -1829,8 +1815,10 @@ SetDefaultFontPath(char *path) /* get enough for string, plus values -- use up commas */ len = strlen(temp_path) + 1; nump = cp = newpath = malloc(len); - if (!newpath) + if (!newpath) { + free(temp_path); return BadAlloc; + } pp = (unsigned char *) temp_path; cp++; while (*pp) { diff --git a/dix/extension.c b/dix/extension.c index 6540b64b0..c7bbac5ff 100644 --- a/dix/extension.c +++ b/dix/extension.c @@ -353,9 +353,8 @@ ProcListExtensions(ClientPtr client) } WriteReplyToClient(client, sizeof(xListExtensionsReply), &reply); if (reply.length) - { WriteToClient(client, total_length, buffer); - free(buffer); - } + + free(buffer); return Success; } diff --git a/fb/fboverlay.c b/fb/fboverlay.c index 61eaaa3f9..255cc23c1 100644 --- a/fb/fboverlay.c +++ b/fb/fboverlay.c @@ -384,12 +384,16 @@ fbOverlayFinishScreenInit(ScreenPtr pScreen, if (!fbInitVisuals (&visuals, &depths, &nvisuals, &ndepths, &depth1, &defaultVisual, ((unsigned long)1<<(bpp1-1)) | - ((unsigned long)1<<(bpp2-1)), 8)) + ((unsigned long)1<<(bpp2-1)), 8)) { + free(pScrPriv); return FALSE; + } if (! miScreenInit(pScreen, 0, xsize, ysize, dpix, dpiy, 0, depth1, ndepths, depths, - defaultVisual, nvisuals, visuals)) + defaultVisual, nvisuals, visuals)) { + free(pScrPriv); return FALSE; + } /* MI thinks there's no frame buffer */ #ifdef MITSHM ShmRegisterFbFuncs(pScreen); diff --git a/fb/fbscreen.c b/fb/fbscreen.c index fa518f64a..9e6ecf50f 100644 --- a/fb/fbscreen.c +++ b/fb/fbscreen.c @@ -221,11 +221,7 @@ fbFinishScreenInit(ScreenPtr pScreen, rootdepth = 0; if (!fbInitVisuals (&visuals, &depths, &nvisuals, &ndepths, &rootdepth, &defaultVisual,((unsigned long)1<<(imagebpp-1)), 8)) - { - free(visuals); - free(depths); return FALSE; - } if (! miScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width, rootdepth, ndepths, depths, defaultVisual, nvisuals, visuals)) diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c index 5312ca60d..114bdc3a3 100644 --- a/hw/xfree86/common/xf86Config.c +++ b/hw/xfree86/common/xf86Config.c @@ -309,7 +309,7 @@ xf86ModulelistFromConfig(pointer **optlist) } if (found == FALSE) { XF86LoadPtr ptr = (XF86LoadPtr)xf86configptr->conf_modules; - ptr = xf86addNewLoadDirective(ptr, ModuleDefaults[i].name, XF86_LOAD_MODULE, ModuleDefaults[i].load_opt); + xf86addNewLoadDirective(ptr, ModuleDefaults[i].name, XF86_LOAD_MODULE, ModuleDefaults[i].load_opt); xf86Msg(X_INFO, "\"%s\" will be loaded by default.\n", ModuleDefaults[i].name); } } @@ -318,7 +318,7 @@ xf86ModulelistFromConfig(pointer **optlist) for (i=0 ; ModuleDefaults[i].name != NULL ; i++) { if (ModuleDefaults[i].toLoad == TRUE) { XF86LoadPtr ptr = (XF86LoadPtr)xf86configptr->conf_modules; - ptr = xf86addNewLoadDirective(ptr, ModuleDefaults[i].name, XF86_LOAD_MODULE, ModuleDefaults[i].load_opt); + xf86addNewLoadDirective(ptr, ModuleDefaults[i].name, XF86_LOAD_MODULE, ModuleDefaults[i].load_opt); } } } @@ -1459,8 +1459,9 @@ configInputDevices(XF86ConfLayoutPtr layout, serverLayoutPtr servlayoutp) while (irp) { indp[count] = xf86AllocateInput(); if (!configInput(indp[count], irp->iref_inputdev, X_CONFIG)) { - while(count--) + do { free(indp[count]); + } while(count--); free(indp); return FALSE; } @@ -1485,7 +1486,7 @@ configLayout(serverLayoutPtr servlayoutp, XF86ConfLayoutPtr conf_layout, { XF86ConfAdjacencyPtr adjp; XF86ConfInactivePtr idp; - int count = 0; + int saved_count, count = 0; int scrnum; XF86ConfLayoutPtr l; MessageType from; @@ -1553,6 +1554,9 @@ configLayout(serverLayoutPtr servlayoutp, XF86ConfLayoutPtr conf_layout, scrnum = adjp->adj_scrnum; if (!configScreen(slp[count].screen, adjp->adj_screen, scrnum, X_CONFIG)) { + do { + free(slp[count].screen); + } while(count--); free(slp); return FALSE; } @@ -1641,6 +1645,10 @@ configLayout(serverLayoutPtr servlayoutp, XF86ConfLayoutPtr conf_layout, } } + if (!count) + saved_count = 1; + else + saved_count = count; /* * Count the number of inactive devices. */ @@ -1657,16 +1665,14 @@ configLayout(serverLayoutPtr servlayoutp, XF86ConfLayoutPtr conf_layout, idp = conf_layout->lay_inactive_lst; count = 0; while (idp) { - if (!configDevice(&gdp[count], idp->inactive_device, FALSE)) { - free(gdp); - return FALSE; - } + if (!configDevice(&gdp[count], idp->inactive_device, FALSE)) + goto bail; count++; idp = (XF86ConfInactivePtr)idp->list.next; } if (!configInputDevices(conf_layout, servlayoutp)) - return FALSE; + goto bail; servlayoutp->id = conf_layout->lay_identifier; servlayoutp->screens = slp; @@ -1675,6 +1681,14 @@ configLayout(serverLayoutPtr servlayoutp, XF86ConfLayoutPtr conf_layout, from = X_DEFAULT; return TRUE; + +bail: + do { + free(slp[saved_count].screen); + } while(saved_count--); + free(slp); + free(gdp); + return FALSE; } /* diff --git a/hw/xfree86/common/xf86Helper.c b/hw/xfree86/common/xf86Helper.c index 399883886..3cdffdb43 100644 --- a/hw/xfree86/common/xf86Helper.c +++ b/hw/xfree86/common/xf86Helper.c @@ -1831,6 +1831,7 @@ xf86ConfigFbEntity(ScrnInfoPtr pScrn, int scrnFlag, int entityIndex, xf86SetEntityFuncs(entityIndex,init,enter,leave,private); + free(pEnt); return pScrn; } diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c index e664ce451..0b36163c0 100644 --- a/hw/xfree86/common/xf86Init.c +++ b/hw/xfree86/common/xf86Init.c @@ -1414,8 +1414,10 @@ xf86LoadModules(char **list, pointer *optlist) name = xf86NormalizeName(list[i]); /* Skip empty names */ - if (name == NULL || *name == '\0') + if (name == NULL || *name == '\0') { + free(name); continue; + } /* Replace obsolete keyboard driver with kbd */ if (!xf86NameCmp(name, "keyboard")) { diff --git a/hw/xfree86/dri2/dri2.c b/hw/xfree86/dri2/dri2.c index 9ca378fed..10be59953 100644 --- a/hw/xfree86/dri2/dri2.c +++ b/hw/xfree86/dri2/dri2.c @@ -221,11 +221,16 @@ DRI2AddDrawableRef(DRI2DrawablePtr pPriv, XID id, XID dri2_id, if (ref == NULL) return BadAlloc; - if (!AddResource(dri2_id, dri2DrawableRes, pPriv)) + if (!AddResource(dri2_id, dri2DrawableRes, pPriv)) { + free(ref); return BadAlloc; + } if (!DRI2LookupDrawableRef(pPriv, id)) - if (!AddResource(id, dri2DrawableRes, pPriv)) + if (!AddResource(id, dri2DrawableRes, pPriv)) { + FreeResourceByType(dri2_id, dri2DrawableRes, TRUE); + free(ref); return BadAlloc; + } ref->id = id; ref->dri2_id = dri2_id; diff --git a/mi/micmap.c b/mi/micmap.c index 41e03006e..7448ef8fd 100644 --- a/mi/micmap.c +++ b/mi/micmap.c @@ -564,6 +564,8 @@ miInitVisuals(VisualPtr *visualp, DepthPtr *depthp, int *nvisualp, { vid = malloc(nvtype * sizeof (VisualID)); if (!vid) { + free(depth); + free(visual); free(preferredCVCs); return FALSE; } diff --git a/mi/midispcur.c b/mi/midispcur.c index 9b3e87a57..32c5c9df6 100644 --- a/mi/midispcur.c +++ b/mi/midispcur.c @@ -397,7 +397,6 @@ Bool miDCPutUpCursor (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor, int x, int y, unsigned long source, unsigned long mask) { - miDCScreenPtr pScreenPriv; miDCCursorPtr pPriv; miDCBufferPtr pBuffer; WindowPtr pWin; @@ -410,8 +409,7 @@ miDCPutUpCursor (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor, if (!pPriv) return FALSE; } - pScreenPriv = (miDCScreenPtr)dixLookupPrivate(&pScreen->devPrivates, - miDCScreenKey); + pWin = pScreen->root; pBuffer = miGetDCDevice(pDev, pScreen); @@ -444,14 +442,11 @@ Bool miDCSaveUnderCursor (DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y, int w, int h) { - miDCScreenPtr pScreenPriv; miDCBufferPtr pBuffer; PixmapPtr pSave; WindowPtr pWin; GCPtr pGC; - pScreenPriv = (miDCScreenPtr)dixLookupPrivate(&pScreen->devPrivates, - miDCScreenKey); pBuffer = miGetDCDevice(pDev, pScreen); pSave = pBuffer->pSave; @@ -478,14 +473,11 @@ Bool miDCRestoreUnderCursor (DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y, int w, int h) { - miDCScreenPtr pScreenPriv; miDCBufferPtr pBuffer; PixmapPtr pSave; WindowPtr pWin; GCPtr pGC; - pScreenPriv = (miDCScreenPtr)dixLookupPrivate(&pScreen->devPrivates, - miDCScreenKey); pBuffer = miGetDCDevice(pDev, pScreen); pSave = pBuffer->pSave; diff --git a/mi/mipointer.c b/mi/mipointer.c index c578d0b1d..db243810c 100644 --- a/mi/mipointer.c +++ b/mi/mipointer.c @@ -602,7 +602,6 @@ miPointerSetPosition(DeviceIntPtr pDev, int mode, int *x, int *y) pScreen = newScreen; (*pScreenPriv->screenFuncs->NewEventScreen) (pDev, pScreen, FALSE); - pScreenPriv = GetScreenPrivate (pScreen); /* Smash the confine to the new screen */ pPointer->limits.x2 = pScreen->width; pPointer->limits.y2 = pScreen->height; diff --git a/mi/mispans.c b/mi/mispans.c index 53539e515..21ba4da4f 100644 --- a/mi/mispans.c +++ b/mi/mispans.c @@ -458,6 +458,8 @@ void miFillUniqueSpanGroup(DrawablePtr pDraw, GCPtr pGC, SpanGroup *spanGroup) } free(yspans); free(ysizes); + free(newpoints); + free(newwidths); miDisposeSpanGroup (spanGroup); return; } diff --git a/mi/mizerline.c b/mi/mizerline.c index 07cfbe113..7077b5198 100644 --- a/mi/mizerline.c +++ b/mi/mizerline.c @@ -157,9 +157,11 @@ miZeroLine( list_len = (height >= width) ? height : width; pspanInit = malloc(list_len * sizeof(DDXPointRec)); pwidthInit = malloc(list_len * sizeof(int)); - if (!pspanInit || !pwidthInit) + if (!pspanInit || !pwidthInit) { + free(pspanInit); + free(pwidthInit); return; - + } Nspans = 0; new_span = TRUE; spans = pspanInit - 1; diff --git a/os/utils.c b/os/utils.c index a365aca81..36cb46f11 100644 --- a/os/utils.c +++ b/os/utils.c @@ -1256,10 +1256,7 @@ System(char *command) perror("signal"); return -1; } - -#ifdef DEBUG - ErrorF("System: `%s'\n", command); -#endif + DebugF("System: `%s'\n", command); switch (pid = fork()) { case -1: /* error */ @@ -1318,6 +1315,9 @@ Popen(char *command, char *type) /* Ignore the smart scheduler while this is going on */ old_alarm = OsSignal(SIGALRM, SIG_IGN); if (old_alarm == SIG_ERR) { + close(pdes[0]); + close(pdes[1]); + free(cur); perror("signal"); return NULL; } @@ -1371,9 +1371,7 @@ Popen(char *command, char *type) cur->next = pidlist; pidlist = cur; -#ifdef DEBUG - ErrorF("Popen: `%s', fp = %p\n", command, iop); -#endif + DebugF("Popen: `%s', fp = %p\n", command, iop); return iop; } @@ -1448,9 +1446,7 @@ Fopen(char *file, char *type) cur->next = pidlist; pidlist = cur; -#ifdef DEBUG - ErrorF("Fopen(%s), fp = %p\n", file, iop); -#endif + DebugF("Fopen(%s), fp = %p\n", file, iop); return iop; #else @@ -1479,10 +1475,7 @@ Pclose(pointer iop) int pstat; int pid; -#ifdef DEBUG - ErrorF("Pclose: fp = %p\n", iop); -#endif - + DebugF("Pclose: fp = %p\n", iop); fclose(iop); for (last = NULL, cur = pidlist; cur; last = cur, cur = cur->next) diff --git a/render/render.c b/render/render.c index 8ff8ee6f6..c5da6d78f 100644 --- a/render/render.c +++ b/render/render.c @@ -1372,8 +1372,10 @@ ProcRenderCompositeGlyphs (ClientPtr client) else { listsBase = (GlyphListPtr) malloc(nlist * sizeof (GlyphListRec)); - if (!listsBase) - return BadAlloc; + if (!listsBase) { + rc = BadAlloc; + goto bail; + } } buffer = (CARD8 *) (stuff + 1); glyphs = glyphsBase; @@ -1392,13 +1394,7 @@ ProcRenderCompositeGlyphs (ClientPtr client) GlyphSetType, client, DixUseAccess); if (rc != Success) - { - if (glyphsBase != glyphsLocal) - free(glyphsBase); - if (listsBase != listsLocal) - free(listsBase); - return rc; - } + goto bail; } buffer += 4; } @@ -1436,8 +1432,10 @@ ProcRenderCompositeGlyphs (ClientPtr client) lists++; } } - if (buffer > end) - return BadLength; + if (buffer > end) { + rc = BadLength; + goto bail; + } CompositeGlyphs (stuff->op, pSrc, @@ -1448,13 +1446,14 @@ ProcRenderCompositeGlyphs (ClientPtr client) nlist, listsBase, glyphsBase); + rc = Success; +bail: if (glyphsBase != glyphsLocal) free(glyphsBase); if (listsBase != listsLocal) free(listsBase); - - return Success; + return rc; } static int diff --git a/xfixes/region.c b/xfixes/region.c index 81ead4d1c..f49349629 100644 --- a/xfixes/region.c +++ b/xfixes/region.c @@ -757,13 +757,11 @@ ProcXFixesSetPictureClipRegion (ClientPtr client) PicturePtr pPicture; RegionPtr pRegion; ScreenPtr pScreen; - PictureScreenPtr ps; REQUEST(xXFixesSetPictureClipRegionReq); REQUEST_SIZE_MATCH (xXFixesSetPictureClipRegionReq); VERIFY_PICTURE(pPicture, stuff->picture, client, DixSetAttrAccess); pScreen = pPicture->pDrawable->pScreen; - ps = GetPictureScreen (pScreen); VERIFY_REGION_OR_NONE(pRegion, stuff->region, client, DixReadAccess); return SetPictureClipRegion (pPicture, stuff->xOrigin, stuff->yOrigin, diff --git a/xkb/ddxList.c b/xkb/ddxList.c index 9623cb6aa..3d301d88e 100644 --- a/xkb/ddxList.c +++ b/xkb/ddxList.c @@ -222,8 +222,10 @@ char tmpname[PATH_MAX]; list->nFound[what]= 0; free(buf); buf = malloc(PATH_MAX * sizeof(char)); - if (!buf) + if (!buf) { + fclose(in); return BadAlloc; + } while ((status==Success)&&((tmp=fgets(buf,PATH_MAX,in))!=NULL)) { unsigned flags; register unsigned int i; |