if (rep->nKeyActs > sizeof(numDesc)) return BadLength;
_XkbReadKeyActions(buf,info,rep)    XkbReadBufferPtr	buf;    XkbDescPtr		info;    xkbGetMapReply *	rep;#endif{int		i;CARD8		numDesc[248];register int	nKeyActs;    if ( (nKeyActs=rep->nKeyActs)>0 ) {	XkbSymMapPtr	symMap;	if (!_XkbCopyFromReadBuffer(buf, (char *)numDesc, nKeyActs))	    return BadLength;	i= XkbPaddedSize(nKeyActs)-nKeyActs;	if ((i>0)&&(!_XkbSkipReadBufferData(buf,i)))	    return BadLength;	symMap = &info->map->key_sym_map[rep->firstKeyAct];	for (i=0;i<(int)rep->nKeyActs;i++,symMap++) {	    if (numDesc[i]==0) {		info->server->key_acts[i+rep->firstKeyAct]= 0;	    }	    else {		XkbAction *newActs;		/* 8/16/93 (ef) -- XXX! Verify size here (numdesc must be */		/*                 either zero or XkbKeyNumSyms(info,key) */		newActs=XkbResizeKeyActions(info,i+rep->firstKeyAct,								numDesc[i]);		if (newActs==NULL)		    return BadAlloc;		if (!_XkbCopyFromReadBuffer(buf,(char *)newActs,					(int)(numDesc[i]*sizeof(XkbAction))))		    return BadLength;	    }	}    }    return Success;}