xfree86: use calloc() instead of malloc()

Using calloc() instead of malloc() as preventive measure, so there
never can be any hidden bugs or leaks due uninitialized memory.

The extra cost of using this compiler intrinsic should be practically
impossible to measure - in many cases a good compiler can even deduce
if certain areas really don't need to be zero'd (because they're written
to right after allocation) and create more efficient machine code.

The code pathes in question are pretty cold anyways, so it's probably
not worth even thinking about potential extra runtime costs.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This commit is contained in:
Enrico Weigelt, metux IT consult 2025-04-10 20:04:52 +02:00
parent a83f56eb92
commit d8e6511b1b
30 changed files with 67 additions and 92 deletions

View File

@ -324,16 +324,14 @@ listPossibleVideoDrivers(XF86MatchedDrivers *md)
static Bool static Bool
copyScreen(confScreenPtr oscreen, GDevPtr odev, int i, char *driver) copyScreen(confScreenPtr oscreen, GDevPtr odev, int i, char *driver)
{ {
confScreenPtr nscreen;
GDevPtr cptr = NULL;
char *identifier; char *identifier;
nscreen = malloc(sizeof(confScreenRec)); confScreenPtr nscreen = calloc(1, sizeof(confScreenRec));
if (!nscreen) if (!nscreen)
return FALSE; return FALSE;
memcpy(nscreen, oscreen, sizeof(confScreenRec)); memcpy(nscreen, oscreen, sizeof(confScreenRec));
cptr = malloc(sizeof(GDevRec)); GDevPtr cptr = calloc(1, sizeof(GDevRec));
if (!cptr) { if (!cptr) {
free(nscreen); free(nscreen);
return FALSE; return FALSE;

View File

@ -482,7 +482,7 @@ AddEdge(xf86EdgePtr edge,
} }
if (!pEdge) { if (!pEdge) {
if (!(pNew = malloc(sizeof(xf86EdgeRec)))) if (!(pNew = calloc(1, sizeof(xf86EdgeRec))))
break; break;
pNew->screen = screen; pNew->screen = screen;
@ -500,7 +500,7 @@ AddEdge(xf86EdgePtr edge,
break; break;
} }
else if (min < pEdge->start) { else if (min < pEdge->start) {
if (!(pNew = malloc(sizeof(xf86EdgeRec)))) if (!(pNew = calloc(1, sizeof(xf86EdgeRec))))
break; break;
pNew->screen = screen; pNew->screen = screen;

View File

@ -145,7 +145,7 @@ DGAInit(ScreenPtr pScreen, DGAFunctionPtr funcs, DGAModePtr modes, int num)
pScreenPriv = DGA_GET_SCREEN_PRIV(pScreen); pScreenPriv = DGA_GET_SCREEN_PRIV(pScreen);
if (!pScreenPriv) { if (!pScreenPriv) {
if (!(pScreenPriv = (DGAScreenPtr) malloc(sizeof(DGAScreenRec)))) if (!(pScreenPriv = calloc(1, sizeof(DGAScreenRec))))
return FALSE; return FALSE;
dixSetPrivate(&pScreen->devPrivates, &DGAScreenKeyRec, pScreenPriv); dixSetPrivate(&pScreen->devPrivates, &DGAScreenKeyRec, pScreenPriv);
dixScreenHookClose(pScreen, DGACloseScreen); dixScreenHookClose(pScreen, DGACloseScreen);
@ -399,7 +399,7 @@ xf86SetDGAMode(ScrnInfoPtr pScrn, int num, DGADevicePtr devRet)
else else
return BadValue; return BadValue;
if (!(device = (DGADevicePtr) malloc(sizeof(DGADeviceRec)))) if (!(device = calloc(1, sizeof(DGADeviceRec))))
return BadAlloc; return BadAlloc;
if (!pScreenPriv->current) { if (!pScreenPriv->current) {
@ -663,7 +663,7 @@ DGACreateColormap(int index, ClientPtr client, int id, int mode, int alloc)
pMode = &(pScreenPriv->modes[mode - 1]); pMode = &(pScreenPriv->modes[mode - 1]);
if (!(pVisual = malloc(sizeof(VisualRec)))) if (!(pVisual = calloc(1, sizeof(VisualRec))))
return BadAlloc; return BadAlloc;
pVisual->vid = FakeClientID(0); pVisual->vid = FakeClientID(0);
@ -697,7 +697,7 @@ DGACreateColormap(int index, ClientPtr client, int id, int mode, int alloc)
pVisual->offsetBlue = BitsClear(pVisual->blueMask); pVisual->offsetBlue = BitsClear(pVisual->blueMask);
} }
if (!(fvlp = malloc(sizeof(FakedVisualList)))) { if (!(fvlp = calloc(1, sizeof(FakedVisualList)))) {
free(pVisual); free(pVisual);
return BadAlloc; return BadAlloc;
} }
@ -1681,7 +1681,7 @@ ProcXDGASetClientVersion(ClientPtr client)
REQUEST_SIZE_MATCH(xXDGASetClientVersionReq); REQUEST_SIZE_MATCH(xXDGASetClientVersionReq);
if ((pPriv = DGA_GETPRIV(client)) == NULL) { if ((pPriv = DGA_GETPRIV(client)) == NULL) {
pPriv = malloc(sizeof(DGAPrivRec)); pPriv = calloc(1, sizeof(DGAPrivRec));
/* XXX Need to look into freeing this */ /* XXX Need to look into freeing this */
if (!pPriv) if (!pPriv)
return BadAlloc; return BadAlloc;

View File

@ -410,7 +410,6 @@ Bool
xf86RandRInit(ScreenPtr pScreen) xf86RandRInit(ScreenPtr pScreen)
{ {
rrScrPrivPtr rp; rrScrPrivPtr rp;
XF86RandRInfoPtr randrp;
ScrnInfoPtr scrp = xf86ScreenToScrn(pScreen); ScrnInfoPtr scrp = xf86ScreenToScrn(pScreen);
#ifdef XINERAMA #ifdef XINERAMA
@ -424,7 +423,7 @@ xf86RandRInit(ScreenPtr pScreen)
if (!dixRegisterPrivateKey(&xf86RandRKeyRec, PRIVATE_SCREEN, 0)) if (!dixRegisterPrivateKey(&xf86RandRKeyRec, PRIVATE_SCREEN, 0))
return FALSE; return FALSE;
randrp = malloc(sizeof(XF86RandRInfoRec)); XF86RandRInfoPtr randrp = calloc(1, sizeof(XF86RandRInfoRec));
if (!randrp) if (!randrp)
return FALSE; return FALSE;

View File

@ -175,7 +175,7 @@ xf86VGAarbiterWrapFunctions(void)
if (!dixRegisterPrivateKey(&VGAarbiterScreenKeyRec, PRIVATE_SCREEN, 0)) if (!dixRegisterPrivateKey(&VGAarbiterScreenKeyRec, PRIVATE_SCREEN, 0))
return FALSE; return FALSE;
if (!(pScreenPriv = malloc(sizeof(VGAarbiterScreenRec)))) if (!(pScreenPriv = calloc(1, sizeof(VGAarbiterScreenRec))))
return FALSE; return FALSE;
dixSetPrivate(&pScreen->devPrivates, VGAarbiterScreenKey, pScreenPriv); dixSetPrivate(&pScreen->devPrivates, VGAarbiterScreenKey, pScreenPriv);

View File

@ -167,7 +167,7 @@ xf86HandleColormaps(ScreenPtr pScreen,
return FALSE; return FALSE;
} }
if (!(pScreenPriv = malloc(sizeof(CMapScreenRec)))) { if (!(pScreenPriv = calloc(1, sizeof(CMapScreenRec)))) {
free(gamma); free(gamma);
free(indices); free(indices);
return FALSE; return FALSE;
@ -254,7 +254,6 @@ CMapAllocateColormapPrivate(ColormapPtr pmap)
(CMapScreenPtr) dixLookupPrivate(&pmap->pScreen->devPrivates, (CMapScreenPtr) dixLookupPrivate(&pmap->pScreen->devPrivates,
CMapScreenKey); CMapScreenKey);
CMapColormapPtr pColPriv; CMapColormapPtr pColPriv;
CMapLinkPtr pLink;
int numColors; int numColors;
LOCO *colors; LOCO *colors;
@ -266,7 +265,7 @@ CMapAllocateColormapPrivate(ColormapPtr pmap)
if (!(colors = xallocarray(numColors, sizeof(LOCO)))) if (!(colors = xallocarray(numColors, sizeof(LOCO))))
return FALSE; return FALSE;
if (!(pColPriv = malloc(sizeof(CMapColormapRec)))) { if (!(pColPriv = calloc(1, sizeof(CMapColormapRec)))) {
free(colors); free(colors);
return FALSE; return FALSE;
} }
@ -279,7 +278,7 @@ CMapAllocateColormapPrivate(ColormapPtr pmap)
pColPriv->overscan = -1; pColPriv->overscan = -1;
/* add map to list */ /* add map to list */
pLink = malloc(sizeof(CMapLink)); CMapLinkPtr pLink = calloc(1, sizeof(CMapLink));
if (pLink) { if (pLink) {
pLink->cmap = pmap; pLink->cmap = pmap;
pLink->next = pScreenPriv->maps; pLink->next = pScreenPriv->maps;

View File

@ -318,7 +318,7 @@ AllocateArea(FBManagerPtr offman,
if (((boxp->y2 - boxp->y1) < h) || ((boxp->x2 - x) < w)) if (((boxp->y2 - boxp->y1) < h) || ((boxp->x2 - x) < w))
continue; continue;
link = malloc(sizeof(FBLink)); link = calloc(1, sizeof(FBLink));
if (!link) if (!link)
return NULL; return NULL;
@ -765,7 +765,6 @@ AllocateLinear(FBManagerPtr offman, int size, int granularity, void *privData)
{ {
ScreenPtr pScreen = offman->pScreen; ScreenPtr pScreen = offman->pScreen;
FBLinearLinkPtr linear = NULL; FBLinearLinkPtr linear = NULL;
FBLinearLinkPtr newlink = NULL;
int offset, end; int offset, end;
if (size <= 0) if (size <= 0)
@ -793,7 +792,7 @@ AllocateLinear(FBManagerPtr offman, int size, int granularity, void *privData)
/* break left */ /* break left */
if (offset > linear->linear.offset) { if (offset > linear->linear.offset) {
newlink = malloc(sizeof(FBLinearLink)); FBLinearLinkPtr newlink = calloc(1, sizeof(FBLinearLink));
if (!newlink) if (!newlink)
return NULL; return NULL;
newlink->area = NULL; newlink->area = NULL;
@ -809,7 +808,7 @@ AllocateLinear(FBManagerPtr offman, int size, int granularity, void *privData)
/* break right */ /* break right */
if (size < linear->linear.size) { if (size < linear->linear.size) {
newlink = malloc(sizeof(FBLinearLink)); FBLinearLinkPtr newlink = calloc(1, sizeof(FBLinearLink));
if (!newlink) if (!newlink)
return NULL; return NULL;
newlink->area = NULL; newlink->area = NULL;
@ -859,7 +858,7 @@ localAllocateOffscreenLinear(ScreenPtr pScreen,
DebugF("NOPE, ALLOCATING AREA\n"); DebugF("NOPE, ALLOCATING AREA\n");
if (!(link = malloc(sizeof(FBLinearLink)))) if (!(link = calloc(1, sizeof(FBLinearLink))))
return NULL; return NULL;
/* No linear available, so try and pinch some from the XY areas */ /* No linear available, so try and pinch some from the XY areas */
@ -1161,7 +1160,6 @@ xf86InitFBManager(ScreenPtr pScreen, BoxPtr FullBox)
static Bool static Bool
xf86InitFBManagerRegion(ScreenPtr pScreen, RegionPtr FullRegion) xf86InitFBManagerRegion(ScreenPtr pScreen, RegionPtr FullRegion)
{ {
FBManagerPtr offman;
if (RegionNil(FullRegion)) if (RegionNil(FullRegion))
return FALSE; return FALSE;
@ -1172,7 +1170,7 @@ xf86InitFBManagerRegion(ScreenPtr pScreen, RegionPtr FullRegion)
if (!xf86RegisterOffscreenManager(pScreen, &xf86FBManFuncs)) if (!xf86RegisterOffscreenManager(pScreen, &xf86FBManFuncs))
return FALSE; return FALSE;
offman = malloc(sizeof(FBManager)); FBManagerPtr offman = calloc(1, sizeof(FBManager));
if (!offman) if (!offman)
return FALSE; return FALSE;
@ -1210,7 +1208,7 @@ xf86InitFBManagerLinear(ScreenPtr pScreen, int offset, int size)
offman = (FBManagerPtr) dixLookupPrivate(&pScreen->devPrivates, offman = (FBManagerPtr) dixLookupPrivate(&pScreen->devPrivates,
xf86FBScreenKey); xf86FBScreenKey);
offman->LinearAreas = malloc(sizeof(FBLinearLink)); offman->LinearAreas = calloc(1, sizeof(FBLinearLink));
if (!offman->LinearAreas) if (!offman->LinearAreas)
return FALSE; return FALSE;

View File

@ -1358,7 +1358,7 @@ xf86MatchDriverFromFiles(uint16_t match_vendor, uint16_t match_chip,
} }
if (vendor == match_vendor && chip == match_chip) { if (vendor == match_vendor && chip == match_chip) {
tmpMatch = tmpMatch =
(char *) malloc(sizeof(char) * (char *) calloc(1, sizeof(char) *
strlen(direntry->d_name) - 3); strlen(direntry->d_name) - 3);
if (!tmpMatch) { if (!tmpMatch) {
LogMessageVerb(X_ERROR, 1, LogMessageVerb(X_ERROR, 1,

View File

@ -86,7 +86,7 @@ xf86SbusProbe(void)
char fbDevName[32]; char fbDevName[32];
sbusDevicePtr psdp, *psdpp; sbusDevicePtr psdp, *psdpp;
xf86SbusInfo = malloc(sizeof(psdp)); xf86SbusInfo = calloc(1, sizeof(psdp));
*xf86SbusInfo = NULL; *xf86SbusInfo = NULL;
for (i = 0; i < 32; i++) { for (i = 0; i < 32; i++) {
snprintf(fbDevName, sizeof(fbDevName), "/dev/fb%d", i); snprintf(fbDevName, sizeof(fbDevName), "/dev/fb%d", i);

View File

@ -247,7 +247,7 @@ xf86XVScreenInit(ScreenPtr pScreen, XF86VideoAdaptorPtr * adaptors, int num)
PortResource = XvGetRTPort(); PortResource = XvGetRTPort();
ScreenPriv = malloc(sizeof(XF86XVScreenRec)); ScreenPriv = calloc(1, sizeof(XF86XVScreenRec));
dixSetPrivate(&pScreen->devPrivates, &XF86XVScreenPrivateKey, ScreenPriv); dixSetPrivate(&pScreen->devPrivates, &XF86XVScreenPrivateKey, ScreenPriv);
if (!ScreenPriv) if (!ScreenPriv)

View File

@ -166,7 +166,7 @@ xf86XvMCScreenInit(ScreenPtr pScreen,
return FALSE; return FALSE;
} }
if (!(pScreenPriv = malloc(sizeof(xf86XvMCScreenRec)))) { if (!(pScreenPriv = calloc(1, sizeof(xf86XvMCScreenRec)))) {
free(pAdapt); free(pAdapt);
return FALSE; return FALSE;
} }

View File

@ -64,12 +64,10 @@
XISBuffer * XISBuffer *
XisbNew(int fd, ssize_t size) XisbNew(int fd, ssize_t size)
{ {
XISBuffer *b; XISBuffer *b = calloc(1, sizeof(XISBuffer));
b = malloc(sizeof(XISBuffer));
if (!b) if (!b)
return NULL; return NULL;
b->buf = malloc((sizeof(unsigned char) * size)); b->buf = calloc(sizeof(unsigned char), size);
if (!b->buf) { if (!b->buf) {
free(b); free(b);
return NULL; return NULL;

View File

@ -93,7 +93,7 @@ find_header(unsigned char *block)
static unsigned char * static unsigned char *
resort(unsigned char *s_block) resort(unsigned char *s_block)
{ {
unsigned char *d_new, *d_ptr, *d_end, *s_ptr, *s_end; unsigned char *d_ptr, *d_end, *s_ptr, *s_end;
unsigned char tmp; unsigned char tmp;
s_ptr = find_header(s_block); s_ptr = find_header(s_block);
@ -101,7 +101,7 @@ resort(unsigned char *s_block)
return NULL; return NULL;
s_end = s_block + EDID1_LEN; s_end = s_block + EDID1_LEN;
d_new = malloc(EDID1_LEN); unsigned char *d_new = calloc(1, EDID1_LEN);
if (!d_new) if (!d_new)
return NULL; return NULL;
d_end = d_new + EDID1_LEN; d_end = d_new + EDID1_LEN;
@ -189,7 +189,7 @@ FetchEDID_DDC1(register ScrnInfoPtr pScrn,
int count = NUM; int count = NUM;
unsigned int *ptr, *xp; unsigned int *ptr, *xp;
ptr = xp = malloc(sizeof(int) * NUM); ptr = xp = calloc(NUM, sizeof(int));
if (!ptr) if (!ptr)
return NULL; return NULL;
@ -416,9 +416,7 @@ xf86DoEEDID(ScrnInfoPtr pScrn, I2CBusPtr pBus, Bool complete)
/* Default DDC and DDC2 to enabled. */ /* Default DDC and DDC2 to enabled. */
Bool noddc = FALSE, noddc2 = FALSE; Bool noddc = FALSE, noddc2 = FALSE;
OptionInfoPtr options; OptionInfoPtr options = calloc(1, sizeof(DDCOptions));
options = malloc(sizeof(DDCOptions));
if (!options) if (!options)
return NULL; return NULL;
memcpy(options, DDCOptions, sizeof(DDCOptions)); memcpy(options, DDCOptions, sizeof(DDCOptions));

View File

@ -1334,7 +1334,7 @@ DRICreateDrawable(ScreenPtr pScreen, ClientPtr client, DrawablePtr pDrawable,
} }
else { else {
/* allocate a DRI Window Private record */ /* allocate a DRI Window Private record */
if (!(pDRIDrawablePriv = malloc(sizeof(DRIDrawablePrivRec)))) { if (!(pDRIDrawablePriv = calloc(1, sizeof(DRIDrawablePrivRec)))) {
return FALSE; return FALSE;
} }

View File

@ -236,12 +236,11 @@ static DRI2DrawablePtr
DRI2AllocateDrawable(DrawablePtr pDraw) DRI2AllocateDrawable(DrawablePtr pDraw)
{ {
DRI2ScreenPtr ds = DRI2GetScreen(pDraw->pScreen); DRI2ScreenPtr ds = DRI2GetScreen(pDraw->pScreen);
DRI2DrawablePtr pPriv;
CARD64 ust; CARD64 ust;
WindowPtr pWin; WindowPtr pWin;
PixmapPtr pPixmap; PixmapPtr pPixmap;
pPriv = malloc(sizeof *pPriv); DRI2DrawablePtr pPriv = calloc(1, sizeof *pPriv);
if (pPriv == NULL) if (pPriv == NULL)
return NULL; return NULL;
@ -328,9 +327,7 @@ static int
DRI2AddDrawableRef(DRI2DrawablePtr pPriv, XID id, XID dri2_id, DRI2AddDrawableRef(DRI2DrawablePtr pPriv, XID id, XID dri2_id,
DRI2InvalidateProcPtr invalidate, void *priv) DRI2InvalidateProcPtr invalidate, void *priv)
{ {
DRI2DrawableRefPtr ref; DRI2DrawableRefPtr ref = calloc(1, sizeof *ref);
ref = malloc(sizeof *ref);
if (ref == NULL) if (ref == NULL)
return BadAlloc; return BadAlloc;

View File

@ -88,7 +88,6 @@ struct ms_dri2_resource {
static struct ms_dri2_resource * static struct ms_dri2_resource *
ms_get_resource(XID id, RESTYPE type) ms_get_resource(XID id, RESTYPE type)
{ {
struct ms_dri2_resource *resource;
void *ptr; void *ptr;
ptr = NULL; ptr = NULL;
@ -96,7 +95,7 @@ ms_get_resource(XID id, RESTYPE type)
if (ptr) if (ptr)
return ptr; return ptr;
resource = malloc(sizeof(*resource)); struct ms_dri2_resource *resource = calloc(1, sizeof(*resource));
if (resource == NULL) if (resource == NULL)
return NULL; return NULL;

View File

@ -1328,7 +1328,7 @@ PreInit(ScrnInfoPtr pScrn, int flags)
/* Process the options */ /* Process the options */
xf86CollectOptions(pScrn, NULL); xf86CollectOptions(pScrn, NULL);
if (!(ms->drmmode.Options = malloc(sizeof(Options)))) if (!(ms->drmmode.Options = calloc(1, sizeof(Options))))
return FALSE; return FALSE;
memcpy(ms->drmmode.Options, Options, sizeof(Options)); memcpy(ms->drmmode.Options, Options, sizeof(Options));
xf86ProcessOptions(pScrn->scrnIndex, pScrn->options, ms->drmmode.Options); xf86ProcessOptions(pScrn->scrnIndex, pScrn->options, ms->drmmode.Options);

View File

@ -410,7 +410,7 @@ drmmode_prop_info_copy(drmmode_prop_info_ptr dst,
continue; continue;
dst[i].enum_values = dst[i].enum_values =
malloc(src[i].num_enum_values * calloc(src[i].num_enum_values,
sizeof(*dst[i].enum_values)); sizeof(*dst[i].enum_values));
if (!dst[i].enum_values) if (!dst[i].enum_values)
goto err; goto err;
@ -4121,7 +4121,7 @@ drmmode_crtc_upgrade_lut(xf86CrtcPtr crtc, int num)
if (size != crtc->gamma_size) { if (size != crtc->gamma_size) {
ScrnInfoPtr pScrn = crtc->scrn; ScrnInfoPtr pScrn = crtc->scrn;
uint16_t *gamma = malloc(3 * size * sizeof(uint16_t)); uint16_t *gamma = calloc(3 * size, sizeof(uint16_t));
if (gamma) { if (gamma) {
free(crtc->gamma_red); free(crtc->gamma_red);

View File

@ -207,7 +207,7 @@ xf86HandleInt10Options(ScrnInfoPtr pScrn, int entityIndex)
configOptions = pEnt->device->options; configOptions = pEnt->device->options;
if (configOptions) { if (configOptions) {
if (!(options = (OptionInfoPtr) malloc(sizeof(INT10Options)))) if (!(options = (OptionInfoPtr) calloc(1, sizeof(INT10Options))))
return NULL; return NULL;
(void) memcpy(options, INT10Options, sizeof(INT10Options)); (void) memcpy(options, INT10Options, sizeof(INT10Options));

View File

@ -505,8 +505,6 @@ VBEGetVBEMode(vbeInfoPtr pVbe, int *mode)
VbeModeInfoBlock * VbeModeInfoBlock *
VBEGetModeInfo(vbeInfoPtr pVbe, int mode) VBEGetModeInfo(vbeInfoPtr pVbe, int mode)
{ {
VbeModeInfoBlock *block = NULL;
memset(pVbe->memory, 0, sizeof(VbeModeInfoBlock)); memset(pVbe->memory, 0, sizeof(VbeModeInfoBlock));
/* /*
@ -530,7 +528,7 @@ VBEGetModeInfo(vbeInfoPtr pVbe, int mode)
if (R16(pVbe->pInt10->ax) != 0x4f) if (R16(pVbe->pInt10->ax) != 0x4f)
return NULL; return NULL;
block = malloc(sizeof(VbeModeInfoBlock)); VbeModeInfoBlock *block = calloc(1, sizeof(VbeModeInfoBlock));
if (block) if (block)
memcpy(block, pVbe->memory, sizeof(*block)); memcpy(block, pVbe->memory, sizeof(*block));

View File

@ -142,7 +142,7 @@ InitPathList(const char *path)
free(fullpath); free(fullpath);
return NULL; return NULL;
} }
list[n] = malloc(len + 1); list[n] = calloc(1, len + 1);
if (!list[n]) { if (!list[n]) {
FreeStringList(list); FreeStringList(list);
free(fullpath); free(fullpath);
@ -398,7 +398,7 @@ LoaderListDir(const char *subdir, const char **patternlist)
closedir(d); closedir(d);
goto bail; goto bail;
} }
listing[n] = malloc(len + 1); listing[n] = calloc(1, len + 1);
if (!listing[n]) { if (!listing[n]) {
FreeStringList(listing); FreeStringList(listing);
closedir(d); closedir(d);
@ -725,7 +725,7 @@ LoadModule(const char *module, void *options, const XF86ModReqInfo *modreq,
pathlist = defaultPathList; pathlist = defaultPathList;
if (!pathlist) { if (!pathlist) {
/* This could be a malloc failure too */ /* This could be a calloc failure too */
if (errmaj) if (errmaj)
*errmaj = LDR_BADUSAGE; *errmaj = LDR_BADUSAGE;
goto LoadModule_fail; goto LoadModule_fail;
@ -964,7 +964,6 @@ LoaderErrorMsg(const char *name, const char *modname, int errmaj, int errmin)
static char * static char *
LoaderGetCanonicalName(const char *modname, PatternPtr patterns) LoaderGetCanonicalName(const char *modname, PatternPtr patterns)
{ {
char *str;
const char *s; const char *s;
int len; int len;
PatternPtr p; PatternPtr p;
@ -981,7 +980,7 @@ LoaderGetCanonicalName(const char *modname, PatternPtr patterns)
for (p = patterns; p->pattern; p++) for (p = patterns; p->pattern; p++)
if (regexec(&p->rex, s, 2, match, 0) == 0 && match[1].rm_so != -1) { if (regexec(&p->rex, s, 2, match, 0) == 0 && match[1].rm_so != -1) {
len = match[1].rm_eo - match[1].rm_so; len = match[1].rm_eo - match[1].rm_so;
str = malloc(len + 1); char *str = calloc(1, len + 1);
if (!str) if (!str)
return NULL; return NULL;
strncpy(str, s + match[1].rm_so, len); strncpy(str, s + match[1].rm_so, len);

View File

@ -649,7 +649,7 @@ xf86_cursors_init(ScreenPtr screen, int max_width, int max_height, int flags)
if (!cursor_info) if (!cursor_info)
return FALSE; return FALSE;
xf86_config->cursor_image = malloc(max_width * max_height * 4); xf86_config->cursor_image = calloc(max_width * max_height, 4);
if (!xf86_config->cursor_image) { if (!xf86_config->cursor_image) {
xf86DestroyCursorInfoRec(cursor_info); xf86DestroyCursorInfoRec(cursor_info);

View File

@ -847,7 +847,6 @@ Bool
xf86RandR12Init(ScreenPtr pScreen) xf86RandR12Init(ScreenPtr pScreen)
{ {
rrScrPrivPtr rp; rrScrPrivPtr rp;
XF86RandRInfoPtr randrp;
#ifdef XINERAMA #ifdef XINERAMA
/* XXX disable RandR when using Xinerama */ /* XXX disable RandR when using Xinerama */
@ -865,7 +864,7 @@ xf86RandR12Init(ScreenPtr pScreen)
if (!dixRegisterPrivateKey(&xf86RandR12KeyRec, PRIVATE_SCREEN, 0)) if (!dixRegisterPrivateKey(&xf86RandR12KeyRec, PRIVATE_SCREEN, 0))
return FALSE; return FALSE;
randrp = malloc(sizeof(XF86RandRInfoRec)); XF86RandRInfoPtr randrp = calloc(1, sizeof(XF86RandRInfoRec));
if (!randrp) if (!randrp)
return FALSE; return FALSE;

View File

@ -457,7 +457,7 @@ xf86CrtcRotate(xf86CrtcPtr crtc)
#ifdef RANDR_12_INTERFACE #ifdef RANDR_12_INTERFACE
if (transform) { if (transform) {
if (transform->nparams) { if (transform->nparams) {
new_params = malloc(transform->nparams * sizeof(xFixed)); new_params = calloc(transform->nparams, sizeof(xFixed));
if (new_params) { if (new_params) {
memcpy(new_params, transform->params, memcpy(new_params, transform->params,
transform->nparams * sizeof(xFixed)); transform->nparams * sizeof(xFixed));

View File

@ -205,7 +205,7 @@ sparcPromInit(void)
promFd = open("/dev/openprom", O_RDONLY, 0); promFd = open("/dev/openprom", O_RDONLY, 0);
if (promFd == -1) if (promFd == -1)
return -1; return -1;
promOpio = (struct openpromio *) malloc(4096); promOpio = (struct openpromio *) calloc(1, 4096);
if (!promOpio) { if (!promOpio) {
sparcPromClose(); sparcPromClose();
return -1; return -1;
@ -526,11 +526,9 @@ promWalkNode2Pathname(char *path, int parent, int node, int searchNode,
char * char *
sparcPromNode2Pathname(sbusPromNodePtr pnode) sparcPromNode2Pathname(sbusPromNodePtr pnode)
{ {
char *ret;
if (!pnode->node) if (!pnode->node)
return NULL; return NULL;
ret = malloc(4096); char *ret = calloc(1, 4096);
if (!ret) if (!ret)
return NULL; return NULL;
if (promWalkNode2Pathname if (promWalkNode2Pathname
@ -600,10 +598,10 @@ int
sparcPromPathname2Node(const char *pathName) sparcPromPathname2Node(const char *pathName)
{ {
int i; int i;
char *name, *regstr, *p; char *regstr, *p;
i = strlen(pathName); i = strlen(pathName);
name = malloc(i + 2); char *name = calloc(1, i + 2);
if (!name) if (!name)
return 0; return 0;
strcpy(name, pathName); strcpy(name, pathName);

View File

@ -155,9 +155,7 @@ enum MatchType {
static void static void
add_group_entry(struct xorg_list *head, char **values, enum MatchType type) add_group_entry(struct xorg_list *head, char **values, enum MatchType type)
{ {
xf86MatchGroup *group; xf86MatchGroup *group = calloc(1, sizeof(xf86MatchGroup));
group = malloc(sizeof(*group));
if (group) { if (group) {
group->is_negated = (type == MATCH_NEGATED); group->is_negated = (type == MATCH_NEGATED);
group->values = values; group->values = values;

View File

@ -81,9 +81,7 @@ xf86freeOutputClassList(XF86ConfOutputClassPtr ptr)
static void static void
add_group_entry(struct xorg_list *head, char **values) add_group_entry(struct xorg_list *head, char **values)
{ {
xf86MatchGroup *group; xf86MatchGroup *group = calloc(1, sizeof(xf86MatchGroup));
group = malloc(sizeof(*group));
if (group) { if (group) {
group->values = values; group->values = values;
xorg_list_add(&group->entry, head); xorg_list_add(&group->entry, head);

View File

@ -118,20 +118,20 @@ xf86getNextLine(void)
/* /*
* reallocate the string if it was grown last time (i.e., is no * reallocate the string if it was grown last time (i.e., is no
* longer CONFIG_BUF_LEN); we malloc the new strings first, so * longer CONFIG_BUF_LEN); we calloc the new strings first, so
* that if either of the mallocs fail, we can fall back on the * that if either of the callocs fail, we can fall back on the
* existing buffer allocations * existing buffer allocations
*/ */
if (configBufLen != CONFIG_BUF_LEN) { if (configBufLen != CONFIG_BUF_LEN) {
tmpConfigBuf = malloc(CONFIG_BUF_LEN); tmpConfigBuf = calloc(1, CONFIG_BUF_LEN);
tmpConfigRBuf = malloc(CONFIG_BUF_LEN); tmpConfigRBuf = calloc(1, CONFIG_BUF_LEN);
if (!tmpConfigBuf || !tmpConfigRBuf) { if (!tmpConfigBuf || !tmpConfigRBuf) {
/* /*
* at least one of the mallocs failed; keep the old buffers * at least one of the callocs failed; keep the old buffers
* and free any partial allocations * and free any partial allocations
*/ */
@ -142,7 +142,7 @@ xf86getNextLine(void)
else { else {
/* /*
* malloc succeeded; free the old buffers and use the new * calloc succeeded; free the old buffers and use the new
* buffers * buffers
*/ */
@ -393,7 +393,7 @@ xf86getToken(const xf86ConfigSymTabRec * tab)
} }
while ((c != '\"') && (c != '\n') && (c != '\r') && (c != '\0')); while ((c != '\"') && (c != '\n') && (c != '\r') && (c != '\0'));
configRBuf[i] = '\0'; configRBuf[i] = '\0';
xf86_lex_val.str = malloc(strlen(configRBuf) + 1); xf86_lex_val.str = calloc(1, strlen(configRBuf) + 1);
strcpy(xf86_lex_val.str, configRBuf); /* private copy ! */ strcpy(xf86_lex_val.str, configRBuf); /* private copy ! */
return STRING; return STRING;
} }
@ -625,7 +625,7 @@ DoSubstitution(const char *template, const char *cmdline, const char *projroot,
break; break;
case 'H': case 'H':
if (!hostname) { if (!hostname) {
if ((hostname = malloc(MAXHOSTNAMELEN + 1))) { if ((hostname = calloc(1, MAXHOSTNAMELEN + 1))) {
if (gethostname(hostname, MAXHOSTNAMELEN) == 0) { if (gethostname(hostname, MAXHOSTNAMELEN) == 0) {
hostname[MAXHOSTNAMELEN] = '\0'; hostname[MAXHOSTNAMELEN] = '\0';
} }
@ -771,7 +771,6 @@ AddConfigDirFiles(const char *dirpath, struct dirent **list, int num)
Bool warnOnce = FALSE; Bool warnOnce = FALSE;
for (i = 0; i < num; i++) { for (i = 0; i < num; i++) {
char *path;
FILE *file; FILE *file;
if (numFiles >= CONFIG_MAX_FILES) { if (numFiles >= CONFIG_MAX_FILES) {
@ -782,7 +781,7 @@ AddConfigDirFiles(const char *dirpath, struct dirent **list, int num)
continue; continue;
} }
path = malloc(PATH_MAX + 1); char *path = calloc(1, PATH_MAX + 1);
snprintf(path, PATH_MAX + 1, "%s/%s", dirpath, list[i]->d_name); snprintf(path, PATH_MAX + 1, "%s/%s", dirpath, list[i]->d_name);
file = fopen(path, "r"); file = fopen(path, "r");
if (!file) { if (!file) {
@ -859,8 +858,8 @@ xf86initConfigFiles(void)
configLineNo = 0; configLineNo = 0;
pushToken = LOCK_TOKEN; pushToken = LOCK_TOKEN;
configBuf = malloc(CONFIG_BUF_LEN); configBuf = calloc(1, CONFIG_BUF_LEN);
configRBuf = malloc(CONFIG_BUF_LEN); configRBuf = calloc(1, CONFIG_BUF_LEN);
configBuf[0] = '\0'; /* sanity ... */ configBuf[0] = '\0'; /* sanity ... */
} }

View File

@ -60,7 +60,7 @@ ShadowFBInit2(ScreenPtr pScreen,
if (!dixRegisterPrivateKey(&ShadowScreenKeyRec, PRIVATE_SCREEN, 0)) if (!dixRegisterPrivateKey(&ShadowScreenKeyRec, PRIVATE_SCREEN, 0))
return FALSE; return FALSE;
if (!(pPriv = (ShadowScreenPtr) malloc(sizeof(ShadowScreenRec)))) if (!(pPriv = (ShadowScreenPtr) calloc(1, sizeof(ShadowScreenRec))))
return FALSE; return FALSE;
dixSetPrivate(&pScreen->devPrivates, &ShadowScreenKeyRec, pPriv); dixSetPrivate(&pScreen->devPrivates, &ShadowScreenKeyRec, pPriv);

View File

@ -953,21 +953,21 @@ vgaHWSaveFonts(ScrnInfoPtr scrninfp, vgaRegPtr save)
hwp->writeGr(hwp, 0x06, 0x05); /* set graphics */ hwp->writeGr(hwp, 0x06, 0x05); /* set graphics */
#if SAVE_FONT1 #if SAVE_FONT1
if (hwp->FontInfo1 || (hwp->FontInfo1 = malloc(FONT_AMOUNT))) { if (hwp->FontInfo1 || (hwp->FontInfo1 = calloc(1, FONT_AMOUNT))) {
hwp->writeSeq(hwp, 0x02, 0x04); /* write to plane 2 */ hwp->writeSeq(hwp, 0x02, 0x04); /* write to plane 2 */
hwp->writeGr(hwp, 0x04, 0x02); /* read plane 2 */ hwp->writeGr(hwp, 0x04, 0x02); /* read plane 2 */
slowbcopy_frombus(hwp->Base, hwp->FontInfo1, FONT_AMOUNT); slowbcopy_frombus(hwp->Base, hwp->FontInfo1, FONT_AMOUNT);
} }
#endif /* SAVE_FONT1 */ #endif /* SAVE_FONT1 */
#if SAVE_FONT2 #if SAVE_FONT2
if (hwp->FontInfo2 || (hwp->FontInfo2 = malloc(FONT_AMOUNT))) { if (hwp->FontInfo2 || (hwp->FontInfo2 = calloc(1, FONT_AMOUNT))) {
hwp->writeSeq(hwp, 0x02, 0x08); /* write to plane 3 */ hwp->writeSeq(hwp, 0x02, 0x08); /* write to plane 3 */
hwp->writeGr(hwp, 0x04, 0x03); /* read plane 3 */ hwp->writeGr(hwp, 0x04, 0x03); /* read plane 3 */
slowbcopy_frombus(hwp->Base, hwp->FontInfo2, FONT_AMOUNT); slowbcopy_frombus(hwp->Base, hwp->FontInfo2, FONT_AMOUNT);
} }
#endif /* SAVE_FONT2 */ #endif /* SAVE_FONT2 */
#if SAVE_TEXT #if SAVE_TEXT
if (hwp->TextInfo || (hwp->TextInfo = malloc(2 * TEXT_AMOUNT))) { if (hwp->TextInfo || (hwp->TextInfo = calloc(2, TEXT_AMOUNT))) {
hwp->writeSeq(hwp, 0x02, 0x01); /* write to plane 0 */ hwp->writeSeq(hwp, 0x02, 0x01); /* write to plane 0 */
hwp->writeGr(hwp, 0x04, 0x00); /* read plane 0 */ hwp->writeGr(hwp, 0x04, 0x00); /* read plane 0 */
slowbcopy_frombus(hwp->Base, hwp->TextInfo, TEXT_AMOUNT); slowbcopy_frombus(hwp->Base, hwp->TextInfo, TEXT_AMOUNT);