Coverity #340: Fix potential NULL dereference. Clean up proliferation of
'register int n' in loops of ProcXkbGetNames.
This commit is contained in:
parent
f324be00c5
commit
1357af2474
|
@ -9,6 +9,10 @@
|
||||||
* xkb/XKBMAlloc.c:
|
* xkb/XKBMAlloc.c:
|
||||||
Coverity #324: Fix potential NULL dereference. (Alan Coopersmith)
|
Coverity #324: Fix potential NULL dereference. (Alan Coopersmith)
|
||||||
|
|
||||||
|
* xkb/xkb.c:
|
||||||
|
Coverity #340: Fix potential NULL dereference.
|
||||||
|
Clean up proliferation of 'register int n' in loops of ProcXkbGetNames.
|
||||||
|
|
||||||
2006-04-07 Aaron Plattner <aplattner@nvidia.com>
|
2006-04-07 Aaron Plattner <aplattner@nvidia.com>
|
||||||
|
|
||||||
* hw/xfree86/common/xf86Module.h:
|
* hw/xfree86/common/xf86Module.h:
|
||||||
|
|
235
xkb/xkb.c
235
xkb/xkb.c
|
@ -3121,7 +3121,8 @@ ProcXkbSetNamedIndicator(ClientPtr client)
|
||||||
if (!stuff->createMap)
|
if (!stuff->createMap)
|
||||||
return client->noClientException;
|
return client->noClientException;
|
||||||
for (led=0,map=NULL;(led<XkbNumIndicators)&&(map==NULL);led++) {
|
for (led=0,map=NULL;(led<XkbNumIndicators)&&(map==NULL);led++) {
|
||||||
if ((sli->names[led]==None)&&(!XkbIM_InUse(&sli->maps[led]))) {
|
if ((sli->names)&&(sli->leds)&&(sli->names[led]==None)&&
|
||||||
|
(!XkbIM_InUse(&sli->maps[led]))) {
|
||||||
map= &sli->maps[led];
|
map= &sli->maps[led];
|
||||||
sli->names[led]= stuff->indicator;
|
sli->names[led]= stuff->indicator;
|
||||||
break;
|
break;
|
||||||
|
@ -3317,11 +3318,11 @@ XkbSendNames(ClientPtr client,XkbDescPtr xkb,xkbGetNamesReply *rep)
|
||||||
register unsigned i,length,which;
|
register unsigned i,length,which;
|
||||||
char * start;
|
char * start;
|
||||||
char * desc;
|
char * desc;
|
||||||
|
register int n;
|
||||||
|
|
||||||
length= rep->length*4;
|
length= rep->length*4;
|
||||||
which= rep->which;
|
which= rep->which;
|
||||||
if (client->swapped) {
|
if (client->swapped) {
|
||||||
register int n;
|
|
||||||
swaps(&rep->sequenceNumber,n);
|
swaps(&rep->sequenceNumber,n);
|
||||||
swapl(&rep->length,n);
|
swapl(&rep->length,n);
|
||||||
swapl(&rep->which,n);
|
swapl(&rep->which,n);
|
||||||
|
@ -3332,127 +3333,121 @@ char * desc;
|
||||||
start = desc = (char *)ALLOCATE_LOCAL(length);
|
start = desc = (char *)ALLOCATE_LOCAL(length);
|
||||||
if ( !start )
|
if ( !start )
|
||||||
return BadAlloc;
|
return BadAlloc;
|
||||||
if (which&XkbKeycodesNameMask) {
|
if (xkb->names) {
|
||||||
*((CARD32 *)desc)= xkb->names->keycodes;
|
if (which&XkbKeycodesNameMask) {
|
||||||
if (client->swapped) {
|
*((CARD32 *)desc)= xkb->names->keycodes;
|
||||||
register int n;
|
if (client->swapped) {
|
||||||
swapl(desc,n);
|
swapl(desc,n);
|
||||||
}
|
}
|
||||||
desc+= 4;
|
desc+= 4;
|
||||||
}
|
}
|
||||||
if (which&XkbGeometryNameMask) {
|
if (which&XkbGeometryNameMask) {
|
||||||
*((CARD32 *)desc)= xkb->names->geometry;
|
*((CARD32 *)desc)= xkb->names->geometry;
|
||||||
if (client->swapped) {
|
if (client->swapped) {
|
||||||
register int n;
|
swapl(desc,n);
|
||||||
swapl(desc,n);
|
}
|
||||||
}
|
desc+= 4;
|
||||||
desc+= 4;
|
}
|
||||||
}
|
if (which&XkbSymbolsNameMask) {
|
||||||
if (which&XkbSymbolsNameMask) {
|
*((CARD32 *)desc)= xkb->names->symbols;
|
||||||
*((CARD32 *)desc)= xkb->names->symbols;
|
if (client->swapped) {
|
||||||
if (client->swapped) {
|
swapl(desc,n);
|
||||||
register int n;
|
}
|
||||||
swapl(desc,n);
|
desc+= 4;
|
||||||
}
|
}
|
||||||
desc+= 4;
|
if (which&XkbPhysSymbolsNameMask) {
|
||||||
}
|
register CARD32 *atm= (CARD32 *)desc;
|
||||||
if (which&XkbPhysSymbolsNameMask) {
|
atm[0]= (CARD32)xkb->names->phys_symbols;
|
||||||
register CARD32 *atm= (CARD32 *)desc;
|
if (client->swapped) {
|
||||||
atm[0]= (CARD32)xkb->names->phys_symbols;
|
swapl(&atm[0],n);
|
||||||
if (client->swapped) {
|
}
|
||||||
register int n;
|
desc+= 4;
|
||||||
swapl(&atm[0],n);
|
}
|
||||||
}
|
if (which&XkbTypesNameMask) {
|
||||||
desc+= 4;
|
*((CARD32 *)desc)= (CARD32)xkb->names->types;
|
||||||
}
|
if (client->swapped) {
|
||||||
if (which&XkbTypesNameMask) {
|
swapl(desc,n);
|
||||||
*((CARD32 *)desc)= (CARD32)xkb->names->types;
|
}
|
||||||
if (client->swapped) {
|
desc+= 4;
|
||||||
register int n;
|
}
|
||||||
swapl(desc,n);
|
if (which&XkbCompatNameMask) {
|
||||||
}
|
*((CARD32 *)desc)= (CARD32)xkb->names->compat;
|
||||||
desc+= 4;
|
if (client->swapped) {
|
||||||
}
|
swapl(desc,n);
|
||||||
if (which&XkbCompatNameMask) {
|
}
|
||||||
*((CARD32 *)desc)= (CARD32)xkb->names->compat;
|
desc+= 4;
|
||||||
if (client->swapped) {
|
}
|
||||||
register int n;
|
if (which&XkbKeyTypeNamesMask) {
|
||||||
swapl(desc,n);
|
register CARD32 *atm= (CARD32 *)desc;
|
||||||
}
|
register XkbKeyTypePtr type= xkb->map->types;
|
||||||
desc+= 4;
|
|
||||||
}
|
|
||||||
if (which&XkbKeyTypeNamesMask) {
|
|
||||||
register CARD32 *atm= (CARD32 *)desc;
|
|
||||||
register XkbKeyTypePtr type= xkb->map->types;
|
|
||||||
|
|
||||||
for (i=0;i<xkb->map->num_types;i++,atm++,type++) {
|
for (i=0;i<xkb->map->num_types;i++,atm++,type++) {
|
||||||
*atm= (CARD32)type->name;
|
*atm= (CARD32)type->name;
|
||||||
if (client->swapped) {
|
if (client->swapped) {
|
||||||
register int n;
|
swapl(atm,n);
|
||||||
swapl(atm,n);
|
}
|
||||||
}
|
}
|
||||||
}
|
desc= (char *)atm;
|
||||||
desc= (char *)atm;
|
}
|
||||||
}
|
if (which&XkbKTLevelNamesMask && xkb->map) {
|
||||||
if (which&XkbKTLevelNamesMask) {
|
XkbKeyTypePtr type = xkb->map->types;
|
||||||
XkbKeyTypePtr type = xkb->map->types;
|
register CARD32 *atm;
|
||||||
register CARD32 *atm;
|
for (i=0;i<rep->nTypes;i++,type++) {
|
||||||
for (i=0;i<rep->nTypes;i++,type++) {
|
*desc++ = type->num_levels;
|
||||||
*desc++ = type->num_levels;
|
}
|
||||||
}
|
desc+= XkbPaddedSize(rep->nTypes)-rep->nTypes;
|
||||||
desc+= XkbPaddedSize(rep->nTypes)-rep->nTypes;
|
|
||||||
|
|
||||||
atm= (CARD32 *)desc;
|
atm= (CARD32 *)desc;
|
||||||
type = xkb->map->types;
|
type = xkb->map->types;
|
||||||
for (i=0;i<xkb->map->num_types;i++,type++) {
|
for (i=0;i<xkb->map->num_types;i++,type++) {
|
||||||
register unsigned l;
|
register unsigned l;
|
||||||
if (type->level_names) {
|
if (type->level_names) {
|
||||||
for (l=0;l<type->num_levels;l++,atm++) {
|
for (l=0;l<type->num_levels;l++,atm++) {
|
||||||
*atm= type->level_names[l];
|
*atm= type->level_names[l];
|
||||||
if (client->swapped) {
|
if (client->swapped) {
|
||||||
register unsigned n;
|
swapl(atm,n);
|
||||||
swapl(atm,n);
|
}
|
||||||
}
|
}
|
||||||
}
|
desc+= type->num_levels*4;
|
||||||
desc+= type->num_levels*4;
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
if (which&XkbIndicatorNamesMask) {
|
||||||
if (which&XkbIndicatorNamesMask) {
|
desc= _XkbWriteAtoms(desc,xkb->names->indicators,XkbNumIndicators,
|
||||||
desc= _XkbWriteAtoms(desc,xkb->names->indicators,XkbNumIndicators,
|
client->swapped);
|
||||||
client->swapped);
|
}
|
||||||
}
|
if (which&XkbVirtualModNamesMask) {
|
||||||
if (which&XkbVirtualModNamesMask) {
|
desc= _XkbWriteAtoms(desc,xkb->names->vmods,XkbNumVirtualMods,
|
||||||
desc= _XkbWriteAtoms(desc,xkb->names->vmods,XkbNumVirtualMods,
|
client->swapped);
|
||||||
client->swapped);
|
}
|
||||||
}
|
if (which&XkbGroupNamesMask) {
|
||||||
if (which&XkbGroupNamesMask) {
|
desc= _XkbWriteAtoms(desc,xkb->names->groups,XkbNumKbdGroups,
|
||||||
desc= _XkbWriteAtoms(desc,xkb->names->groups,XkbNumKbdGroups,
|
client->swapped);
|
||||||
client->swapped);
|
}
|
||||||
}
|
if (which&XkbKeyNamesMask) {
|
||||||
if (which&XkbKeyNamesMask) {
|
for (i=0;i<rep->nKeys;i++,desc+= sizeof(XkbKeyNameRec)) {
|
||||||
for (i=0;i<rep->nKeys;i++,desc+= sizeof(XkbKeyNameRec)) {
|
*((XkbKeyNamePtr)desc)= xkb->names->keys[i+rep->firstKey];
|
||||||
*((XkbKeyNamePtr)desc)= xkb->names->keys[i+rep->firstKey];
|
}
|
||||||
}
|
}
|
||||||
}
|
if (which&XkbKeyAliasesMask) {
|
||||||
if (which&XkbKeyAliasesMask) {
|
XkbKeyAliasPtr pAl;
|
||||||
XkbKeyAliasPtr pAl;
|
pAl= xkb->names->key_aliases;
|
||||||
pAl= xkb->names->key_aliases;
|
for (i=0;i<rep->nKeyAliases;i++,pAl++,desc+=2*XkbKeyNameLength) {
|
||||||
for (i=0;i<rep->nKeyAliases;i++,pAl++,desc+=2*XkbKeyNameLength) {
|
*((XkbKeyAliasPtr)desc)= *pAl;
|
||||||
*((XkbKeyAliasPtr)desc)= *pAl;
|
}
|
||||||
}
|
}
|
||||||
}
|
if ((which&XkbRGNamesMask)&&(rep->nRadioGroups>0)) {
|
||||||
if ((which&XkbRGNamesMask)&&(rep->nRadioGroups>0)) {
|
register CARD32 *atm= (CARD32 *)desc;
|
||||||
register CARD32 *atm= (CARD32 *)desc;
|
for (i=0;i<rep->nRadioGroups;i++,atm++) {
|
||||||
for (i=0;i<rep->nRadioGroups;i++,atm++) {
|
*atm= (CARD32)xkb->names->radio_groups[i];
|
||||||
*atm= (CARD32)xkb->names->radio_groups[i];
|
if (client->swapped) {
|
||||||
if (client->swapped) {
|
swapl(atm,n);
|
||||||
register unsigned n;
|
}
|
||||||
swapl(atm,n);
|
}
|
||||||
}
|
desc+= rep->nRadioGroups*4;
|
||||||
}
|
}
|
||||||
desc+= rep->nRadioGroups*4;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((desc-start)!=(length)) {
|
if ((desc-start)!=(length)) {
|
||||||
ErrorF("BOGUS LENGTH in write names, expected %d, got %ld\n",
|
ErrorF("BOGUS LENGTH in write names, expected %d, got %ld\n",
|
||||||
length, (unsigned long)(desc-start));
|
length, (unsigned long)(desc-start));
|
||||||
|
|
Loading…
Reference in New Issue
Block a user