summaryrefslogtreecommitdiff
path: root/xkb
diff options
context:
space:
mode:
authorDaniel Stone <daniel@fooishbar.org>2007-11-05 13:59:15 +0000
committerDaniel Stone <daniel@fooishbar.org>2007-11-05 14:34:41 +0000
commit59774af86b851c7fb8989cef6c013522549000b8 (patch)
tree0d5e626e0a4b4984d6e97f57980275c9314c6568 /xkb
parent6e4f5cf83f35ffebb51633ab30b1826e63e37223 (diff)
XKB: Remove usage of alloca
alloca has no way to return failure, and instead can possibly arbitrarily overflow the stack. Let's avoid that one.
Diffstat (limited to 'xkb')
-rw-r--r--xkb/xkb.c24
-rw-r--r--xkb/xkbInit.c4
2 files changed, 14 insertions, 14 deletions
diff --git a/xkb/xkb.c b/xkb/xkb.c
index cf4243070..2b8b52835 100644
--- a/xkb/xkb.c
+++ b/xkb/xkb.c
@@ -1312,7 +1312,7 @@ unsigned i,len;
char *desc,*start;
len= (rep->length*4)-(SIZEOF(xkbGetMapReply)-SIZEOF(xGenericReply));
- start= desc= (char *)ALLOCATE_LOCAL(len);
+ start= desc= (char *)xalloc(len);
if (!start)
return BadAlloc;
if ( rep->nTypes>0 )
@@ -1352,7 +1352,7 @@ char *desc,*start;
}
WriteToClient(client, (i=SIZEOF(xkbGetMapReply)), (char *)rep);
WriteToClient(client, len, start);
- DEALLOCATE_LOCAL((char *)start);
+ xfree((char *)start);
return client->noClientException;
}
@@ -2499,7 +2499,7 @@ int size;
size= rep->length*4;
if (size>0) {
- data = (char *)ALLOCATE_LOCAL(size);
+ data = (char *)xalloc(size);
if (data) {
register unsigned i,bit;
xkbModsWireDesc * grp;
@@ -2550,7 +2550,7 @@ int size;
WriteToClient(client, SIZEOF(xkbGetCompatMapReply), (char *)rep);
if (data) {
WriteToClient(client, size, data);
- DEALLOCATE_LOCAL((char *)data);
+ xfree((char *)data);
}
return client->noClientException;
}
@@ -2801,7 +2801,7 @@ register unsigned bit;
length = rep->length*4;
if (length>0) {
CARD8 *to;
- to= map= (CARD8 *)ALLOCATE_LOCAL(length);
+ to= map= (CARD8 *)xalloc(length);
if (map) {
xkbIndicatorMapWireDesc *wire = (xkbIndicatorMapWireDesc *)to;
for (i=0,bit=1;i<XkbNumIndicators;i++,bit<<=1) {
@@ -2840,7 +2840,7 @@ register unsigned bit;
WriteToClient(client, SIZEOF(xkbGetIndicatorMapReply), (char *)rep);
if (map) {
WriteToClient(client, length, (char *)map);
- DEALLOCATE_LOCAL((char *)map);
+ xfree((char *)map);
}
return client->noClientException;
}
@@ -3292,7 +3292,7 @@ register int n;
swapl(&rep->indicators,n);
}
- start = desc = (char *)ALLOCATE_LOCAL(length);
+ start = desc = (char *)xalloc(length);
if ( !start )
return BadAlloc;
if (xkb->names) {
@@ -3416,7 +3416,7 @@ register int n;
}
WriteToClient(client, SIZEOF(xkbGetNamesReply), (char *)rep);
WriteToClient(client, length, start);
- DEALLOCATE_LOCAL((char *)start);
+ xfree((char *)start);
return client->noClientException;
}
@@ -4314,7 +4314,7 @@ XkbSendGeometry( ClientPtr client,
if (geom!=NULL) {
len= rep->length*4;
- start= desc= (char *)ALLOCATE_LOCAL(len);
+ start= desc= (char *)xalloc(len);
if (!start)
return BadAlloc;
desc= XkbWriteCountedString(desc,geom->label_font,client->swapped);
@@ -4358,7 +4358,7 @@ XkbSendGeometry( ClientPtr client,
if (len>0)
WriteToClient(client, len, start);
if (start!=NULL)
- DEALLOCATE_LOCAL((char *)start);
+ xfree((char *)start);
if (freeGeom)
XkbFreeGeometry(geom,XkbGeomAllMask,True);
return client->noClientException;
@@ -5758,12 +5758,12 @@ char * str;
}
WriteToClient(client,SIZEOF(xkbGetDeviceInfoReply), (char *)&rep);
- str= (char*) ALLOCATE_LOCAL(nameLen);
+ str= (char*) xalloc(nameLen);
if (!str)
return BadAlloc;
XkbWriteCountedString(str,dev->name,client->swapped);
WriteToClient(client,nameLen,str);
- DEALLOCATE_LOCAL(str);
+ xfree(str);
length-= nameLen;
if (rep.nBtnsRtrn>0) {
diff --git a/xkb/xkbInit.c b/xkb/xkbInit.c
index c0867adf0..6301a32e7 100644
--- a/xkb/xkbInit.c
+++ b/xkb/xkbInit.c
@@ -182,7 +182,7 @@ char * pval;
ErrorF("Atom error: %s not created\n",_XKB_RF_NAMES_PROP_ATOM);
return True;
}
- pval= (char*) ALLOCATE_LOCAL(len);
+ pval= (char*) xalloc(len);
if (!pval) {
ErrorF("Allocation error: %s proprerty not created\n",
_XKB_RF_NAMES_PROP_ATOM);
@@ -223,7 +223,7 @@ char * pval;
}
ChangeWindowProperty(WindowTable[0],name,XA_STRING,8,PropModeReplace,
len,pval,True);
- DEALLOCATE_LOCAL(pval);
+ xfree(pval);
return True;
}