Xi: use byte-counting macros instead of manual calculation.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
Peter Hutterer 2009-07-03 13:57:14 +10:00
parent 912402fd71
commit 7dd415aa6a
28 changed files with 56 additions and 55 deletions

View File

@ -142,7 +142,7 @@ ProcXChangeDeviceControl(ClientPtr client)
REQUEST(xChangeDeviceControlReq); REQUEST(xChangeDeviceControlReq);
REQUEST_AT_LEAST_SIZE(xChangeDeviceControlReq); REQUEST_AT_LEAST_SIZE(xChangeDeviceControlReq);
len = stuff->length - (sizeof(xChangeDeviceControlReq) >> 2); len = stuff->length - bytes_to_int32(sizeof(xChangeDeviceControlReq));
ret = dixLookupDevice(&dev, stuff->deviceid, client, DixManageAccess); ret = dixLookupDevice(&dev, stuff->deviceid, client, DixManageAccess);
if (ret != Success) if (ret != Success)
goto out; goto out;
@ -155,8 +155,8 @@ ProcXChangeDeviceControl(ClientPtr client)
switch (stuff->control) { switch (stuff->control) {
case DEVICE_RESOLUTION: case DEVICE_RESOLUTION:
r = (xDeviceResolutionCtl *) & stuff[1]; r = (xDeviceResolutionCtl *) & stuff[1];
if ((len < (sizeof(xDeviceResolutionCtl) >> 2)) || if ((len < bytes_to_int32(sizeof(xDeviceResolutionCtl))) ||
(len != (sizeof(xDeviceResolutionCtl) >> 2) + r->num_valuators)) { (len != bytes_to_int32(sizeof(xDeviceResolutionCtl)) + r->num_valuators)) {
ret = BadLength; ret = BadLength;
goto out; goto out;
} }

View File

@ -441,14 +441,14 @@ ProcXChangeFeedbackControl(ClientPtr client)
REQUEST(xChangeFeedbackControlReq); REQUEST(xChangeFeedbackControlReq);
REQUEST_AT_LEAST_SIZE(xChangeFeedbackControlReq); REQUEST_AT_LEAST_SIZE(xChangeFeedbackControlReq);
len = stuff->length - (sizeof(xChangeFeedbackControlReq) >> 2); len = stuff->length - bytes_to_int32(sizeof(xChangeFeedbackControlReq));
rc = dixLookupDevice(&dev, stuff->deviceid, client, DixManageAccess); rc = dixLookupDevice(&dev, stuff->deviceid, client, DixManageAccess);
if (rc != Success) if (rc != Success)
return rc; return rc;
switch (stuff->feedbackid) { switch (stuff->feedbackid) {
case KbdFeedbackClass: case KbdFeedbackClass:
if (len != (sizeof(xKbdFeedbackCtl) >> 2)) if (len != bytes_to_int32(sizeof(xKbdFeedbackCtl)))
return BadLength; return BadLength;
for (k = dev->kbdfeed; k; k = k->next) for (k = dev->kbdfeed; k; k = k->next)
@ -457,7 +457,7 @@ ProcXChangeFeedbackControl(ClientPtr client)
(xKbdFeedbackCtl *) & stuff[1]); (xKbdFeedbackCtl *) & stuff[1]);
break; break;
case PtrFeedbackClass: case PtrFeedbackClass:
if (len != (sizeof(xPtrFeedbackCtl) >> 2)) if (len != bytes_to_int32(sizeof(xPtrFeedbackCtl)))
return BadLength; return BadLength;
for (p = dev->ptrfeed; p; p = p->next) for (p = dev->ptrfeed; p; p = p->next)
@ -473,7 +473,7 @@ ProcXChangeFeedbackControl(ClientPtr client)
if (client->swapped) { if (client->swapped) {
swaps(&f->num_keysyms, n); swaps(&f->num_keysyms, n);
} }
if (len != ((sizeof(xStringFeedbackCtl) >> 2) + f->num_keysyms)) if (len != (bytes_to_int32(sizeof(xStringFeedbackCtl)) + f->num_keysyms))
return BadLength; return BadLength;
for (s = dev->stringfeed; s; s = s->next) for (s = dev->stringfeed; s; s = s->next)
@ -483,7 +483,7 @@ ProcXChangeFeedbackControl(ClientPtr client)
break; break;
} }
case IntegerFeedbackClass: case IntegerFeedbackClass:
if (len != (sizeof(xIntegerFeedbackCtl) >> 2)) if (len != bytes_to_int32(sizeof(xIntegerFeedbackCtl)))
return BadLength; return BadLength;
for (i = dev->intfeed; i; i = i->next) for (i = dev->intfeed; i; i = i->next)
@ -492,7 +492,7 @@ ProcXChangeFeedbackControl(ClientPtr client)
(xIntegerFeedbackCtl *)&stuff[1]); (xIntegerFeedbackCtl *)&stuff[1]);
break; break;
case LedFeedbackClass: case LedFeedbackClass:
if (len != (sizeof(xLedFeedbackCtl) >> 2)) if (len != bytes_to_int32(sizeof(xLedFeedbackCtl)))
return BadLength; return BadLength;
for (l = dev->leds; l; l = l->next) for (l = dev->leds; l; l = l->next)
@ -501,7 +501,7 @@ ProcXChangeFeedbackControl(ClientPtr client)
(xLedFeedbackCtl *) & stuff[1]); (xLedFeedbackCtl *) & stuff[1]);
break; break;
case BellFeedbackClass: case BellFeedbackClass:
if (len != (sizeof(xBellFeedbackCtl) >> 2)) if (len != bytes_to_int32(sizeof(xBellFeedbackCtl)))
return BadLength; return BadLength;
for (b = dev->bell; b; b = b->next) for (b = dev->bell; b; b = b->next)

View File

@ -107,7 +107,7 @@ ProcXChangeDeviceKeyMapping(ClientPtr client)
ret = dixLookupDevice(&dev, stuff->deviceid, client, DixManageAccess); ret = dixLookupDevice(&dev, stuff->deviceid, client, DixManageAccess);
if (ret != Success) if (ret != Success)
return ret; return ret;
len = stuff->length - (sizeof(xChangeDeviceKeyMappingReq) >> 2); len = stuff->length - bytes_to_int32(sizeof(xChangeDeviceKeyMappingReq));
ret = ChangeKeyMapping(client, dev, len, DeviceMappingNotify, ret = ChangeKeyMapping(client, dev, len, DeviceMappingNotify,
stuff->firstKeyCode, stuff->keyCodes, stuff->firstKeyCode, stuff->keyCodes,

View File

@ -104,7 +104,7 @@ ProcXChangeDeviceDontPropagateList(ClientPtr client)
REQUEST(xChangeDeviceDontPropagateListReq); REQUEST(xChangeDeviceDontPropagateListReq);
REQUEST_AT_LEAST_SIZE(xChangeDeviceDontPropagateListReq); REQUEST_AT_LEAST_SIZE(xChangeDeviceDontPropagateListReq);
if (stuff->length != (sizeof(xChangeDeviceDontPropagateListReq) >> 2) + if (stuff->length != bytes_to_int32(sizeof(xChangeDeviceDontPropagateListReq)) +
stuff->count) stuff->count)
return BadLength; return BadLength;

View File

@ -686,7 +686,7 @@ XISendDeviceChangedEvent(DeviceIntPtr device, DeviceIntPtr master, DeviceChanged
{ {
len += sizeof(xXIButtonInfo); len += sizeof(xXIButtonInfo);
len += dce->buttons.num_buttons * sizeof(Atom); /* button names */ len += dce->buttons.num_buttons * sizeof(Atom); /* button names */
len += ((((dce->buttons.num_buttons + 7)/8) + 3)/4) * 4; len += pad_to_int32(bits_to_bytes(dce->buttons.num_buttons));
} }
if (dce->num_valuators) if (dce->num_valuators)
len += sizeof(xXIValuatorInfo) * dce->num_valuators; len += sizeof(xXIValuatorInfo) * dce->num_valuators;
@ -714,7 +714,7 @@ XISendDeviceChangedEvent(DeviceIntPtr device, DeviceIntPtr master, DeviceChanged
dcce->sourceid = device->id; dcce->sourceid = device->id;
dcce->reason = (dce->flags & DEVCHANGE_DEVICE_CHANGE) ? XIDeviceChange : XISlaveSwitch; dcce->reason = (dce->flags & DEVCHANGE_DEVICE_CHANGE) ? XIDeviceChange : XISlaveSwitch;
dcce->num_classes = 0; dcce->num_classes = 0;
dcce->length = (len - sizeof(xEvent))/4; dcce->length = bytes_to_int32(len - sizeof(xEvent));
ptr = (char*)&dcce[1]; ptr = (char*)&dcce[1];
if (dce->buttons.num_buttons) if (dce->buttons.num_buttons)
@ -1249,15 +1249,15 @@ DeviceFocusEvent(DeviceIntPtr dev, int type, int mode, int detail,
mouse = (IsMaster(dev) || dev->u.master) ? GetMaster(dev, MASTER_POINTER) : dev; mouse = (IsMaster(dev) || dev->u.master) ? GetMaster(dev, MASTER_POINTER) : dev;
/* XI 2 event */ /* XI 2 event */
btlen = (mouse->button) ? (mouse->button->numButtons + 7)/8 : 0; btlen = (mouse->button) ? bits_to_bytes(mouse->button->numButtons) : 0;
btlen = (btlen + 3)/4; btlen = bytes_to_int32(btlen);
len = sizeof(xXIFocusInEvent) + btlen * 4; len = sizeof(xXIFocusInEvent) + btlen * 4;
xi2event = xcalloc(1, len); xi2event = xcalloc(1, len);
xi2event->type = GenericEvent; xi2event->type = GenericEvent;
xi2event->extension = IReqCode; xi2event->extension = IReqCode;
xi2event->evtype = type; xi2event->evtype = type;
xi2event->length = (len - sizeof(xEvent))/4; xi2event->length = bytes_to_int32(len - sizeof(xEvent));
xi2event->buttons_len = btlen; xi2event->buttons_len = btlen;
xi2event->detail = detail; xi2event->detail = detail;
xi2event->time = currentTime.milliseconds; xi2event->time = currentTime.milliseconds;

View File

@ -109,7 +109,7 @@ ProcXGetDeviceButtonMapping(ClientPtr client)
return BadMatch; return BadMatch;
rep.nElts = b->numButtons; rep.nElts = b->numButtons;
rep.length = (rep.nElts + (4 - 1)) / 4; rep.length = bytes_to_int32(rep.nElts);
WriteReplyToClient(client, sizeof(xGetDeviceButtonMappingReply), &rep); WriteReplyToClient(client, sizeof(xGetDeviceButtonMappingReply), &rep);
(void)WriteToClient(client, rep.nElts, (char *)&b->map[1]); (void)WriteToClient(client, rep.nElts, (char *)&b->map[1]);
return Success; return Success;

View File

@ -306,7 +306,7 @@ ProcXGetDeviceControl(ClientPtr client)
break; break;
} }
rep.length = (total_length + 3) >> 2; rep.length = bytes_to_int32(total_length);
WriteReplyToClient(client, sizeof(xGetDeviceControlReply), &rep); WriteReplyToClient(client, sizeof(xGetDeviceControlReply), &rep);
WriteToClient(client, total_length, savbuf); WriteToClient(client, total_length, savbuf);
xfree(savbuf); xfree(savbuf);

View File

@ -358,7 +358,7 @@ ProcXGetFeedbackControl(ClientPtr client)
for (b = dev->bell; b; b = b->next) for (b = dev->bell; b; b = b->next)
CopySwapBellFeedback(client, b, &buf); CopySwapBellFeedback(client, b, &buf);
rep.length = (total_length + 3) >> 2; rep.length = bytes_to_int32(total_length);
WriteReplyToClient(client, sizeof(xGetFeedbackControlReply), &rep); WriteReplyToClient(client, sizeof(xGetFeedbackControlReply), &rep);
WriteToClient(client, total_length, savbuf); WriteToClient(client, total_length, savbuf);
xfree(savbuf); xfree(savbuf);

View File

@ -120,7 +120,7 @@ ProcXGetDeviceDontPropagateList(ClientPtr client)
if (count) { if (count) {
rep.count = count; rep.count = count;
buf = (XEventClass *) xalloc(rep.count * sizeof(XEventClass)); buf = (XEventClass *) xalloc(rep.count * sizeof(XEventClass));
rep.length = (rep.count * sizeof(XEventClass) + 3) >> 2; rep.length = bytes_to_int32(rep.count * sizeof(XEventClass));
tbuf = buf; tbuf = buf;
for (i = 0; i < EMASKSIZE; i++) for (i = 0; i < EMASKSIZE; i++)

View File

@ -131,7 +131,7 @@ ProcXGetSelectedExtensionEvents(ClientPtr client)
total_length = (rep.all_clients_count + rep.this_client_count) * total_length = (rep.all_clients_count + rep.this_client_count) *
sizeof(XEventClass); sizeof(XEventClass);
rep.length = (total_length + 3) >> 2; rep.length = bytes_to_int32(total_length);
buf = (XEventClass *) xalloc(total_length); buf = (XEventClass *) xalloc(total_length);
tclient = buf; tclient = buf;

View File

@ -96,8 +96,8 @@ ProcXGetExtensionVersion(ClientPtr client)
REQUEST(xGetExtensionVersionReq); REQUEST(xGetExtensionVersionReq);
REQUEST_AT_LEAST_SIZE(xGetExtensionVersionReq); REQUEST_AT_LEAST_SIZE(xGetExtensionVersionReq);
if (stuff->length != (sizeof(xGetExtensionVersionReq) + if (stuff->length != bytes_to_int32(sizeof(xGetExtensionVersionReq) +
stuff->nbytes + 3) >> 2) stuff->nbytes))
return BadLength; return BadLength;
memset(&rep, 0, sizeof(xGetExtensionVersionReply)); memset(&rep, 0, sizeof(xGetExtensionVersionReply));

View File

@ -84,7 +84,7 @@ SProcXGrabDevice(ClientPtr client)
swapl(&stuff->time, n); swapl(&stuff->time, n);
swaps(&stuff->event_count, n); swaps(&stuff->event_count, n);
if (stuff->length != (sizeof(xGrabDeviceReq) >> 2) + stuff->event_count) if (stuff->length != bytes_to_int32(sizeof(xGrabDeviceReq)) + stuff->event_count)
return BadLength; return BadLength;
SwapLongs((CARD32 *) (&stuff[1]), stuff->event_count); SwapLongs((CARD32 *) (&stuff[1]), stuff->event_count);
@ -110,7 +110,7 @@ ProcXGrabDevice(ClientPtr client)
REQUEST(xGrabDeviceReq); REQUEST(xGrabDeviceReq);
REQUEST_AT_LEAST_SIZE(xGrabDeviceReq); REQUEST_AT_LEAST_SIZE(xGrabDeviceReq);
if (stuff->length != (sizeof(xGrabDeviceReq) >> 2) + stuff->event_count) if (stuff->length != bytes_to_int32(sizeof(xGrabDeviceReq)) + stuff->event_count)
return BadLength; return BadLength;
rep.repType = X_Reply; rep.repType = X_Reply;

View File

@ -110,7 +110,7 @@ ProcXGrabDeviceButton(ClientPtr client)
REQUEST_AT_LEAST_SIZE(xGrabDeviceButtonReq); REQUEST_AT_LEAST_SIZE(xGrabDeviceButtonReq);
if (stuff->length != if (stuff->length !=
(sizeof(xGrabDeviceButtonReq) >> 2) + stuff->event_count) bytes_to_int32(sizeof(xGrabDeviceButtonReq)) + stuff->event_count)
return BadLength; return BadLength;
ret = dixLookupDevice(&dev, stuff->grabbed_device, client, DixGrabAccess); ret = dixLookupDevice(&dev, stuff->grabbed_device, client, DixGrabAccess);

View File

@ -107,7 +107,7 @@ ProcXGrabDeviceKey(ClientPtr client)
REQUEST(xGrabDeviceKeyReq); REQUEST(xGrabDeviceKeyReq);
REQUEST_AT_LEAST_SIZE(xGrabDeviceKeyReq); REQUEST_AT_LEAST_SIZE(xGrabDeviceKeyReq);
if (stuff->length != (sizeof(xGrabDeviceKeyReq) >> 2) + stuff->event_count) if (stuff->length != bytes_to_int32(sizeof(xGrabDeviceKeyReq)) + stuff->event_count)
return BadLength; return BadLength;
ret = dixLookupDevice(&dev, stuff->grabbed_device, client, DixGrabAccess); ret = dixLookupDevice(&dev, stuff->grabbed_device, client, DixGrabAccess);

View File

@ -136,7 +136,7 @@ ProcXGetDeviceMotionEvents(ClientPtr client)
(ScreenPtr) NULL, FALSE); (ScreenPtr) NULL, FALSE);
} }
if (rep.nEvents > 0) { if (rep.nEvents > 0) {
length = (rep.nEvents * size + 3) >> 2; length = bytes_to_int32(rep.nEvents * size);
rep.length = length; rep.length = length;
} }
nEvents = rep.nEvents; nEvents = rep.nEvents;

View File

@ -409,7 +409,7 @@ ProcXListInputDevices(ClientPtr client)
ListDeviceInfo(client, d, dev++, &devbuf, &classbuf, &namebuf); ListDeviceInfo(client, d, dev++, &devbuf, &classbuf, &namebuf);
} }
rep.ndevices = numdevs; rep.ndevices = numdevs;
rep.length = (total_length + 3) >> 2; rep.length = bytes_to_int32(total_length);
WriteReplyToClient(client, sizeof(xListInputDevicesReply), &rep); WriteReplyToClient(client, sizeof(xListInputDevicesReply), &rep);
WriteToClient(client, total_length, savbuf); WriteToClient(client, total_length, savbuf);
xfree(savbuf); xfree(savbuf);

View File

@ -150,7 +150,7 @@ ProcXOpenDevice(ClientPtr client)
} }
evbase[j].class = OtherClass; evbase[j].class = OtherClass;
evbase[j++].event_type_base = event_base[OtherClass]; evbase[j++].event_type_base = event_base[OtherClass];
rep.length = (j * sizeof(xInputClassInfo) + 3) >> 2; rep.length = bytes_to_int32(j * sizeof(xInputClassInfo));
rep.num_classes = j; rep.num_classes = j;
WriteReplyToClient(client, sizeof(xOpenDeviceReply), &rep); WriteReplyToClient(client, sizeof(xOpenDeviceReply), &rep);
WriteToClient(client, j * sizeof(xInputClassInfo), (char *)evbase); WriteToClient(client, j * sizeof(xInputClassInfo), (char *)evbase);

View File

@ -161,7 +161,7 @@ ProcXQueryDeviceState(ClientPtr client)
} }
rep.num_classes = num_classes; rep.num_classes = num_classes;
rep.length = (total_length + 3) >> 2; rep.length = bytes_to_int32(total_length);
WriteReplyToClient(client, sizeof(xQueryDeviceStateReply), &rep); WriteReplyToClient(client, sizeof(xQueryDeviceStateReply), &rep);
if (total_length > 0) if (total_length > 0)
WriteToClient(client, total_length, savbuf); WriteToClient(client, total_length, savbuf);

View File

@ -154,7 +154,7 @@ ProcXSelectExtensionEvent(ClientPtr client)
REQUEST(xSelectExtensionEventReq); REQUEST(xSelectExtensionEventReq);
REQUEST_AT_LEAST_SIZE(xSelectExtensionEventReq); REQUEST_AT_LEAST_SIZE(xSelectExtensionEventReq);
if (stuff->length != (sizeof(xSelectExtensionEventReq) >> 2) + stuff->count) if (stuff->length != bytes_to_int32(sizeof(xSelectExtensionEventReq)) + stuff->count)
return BadLength; return BadLength;
ret = dixLookupWindow(&pWin, stuff->window, client, DixReceiveAccess); ret = dixLookupWindow(&pWin, stuff->window, client, DixReceiveAccess);

View File

@ -89,8 +89,8 @@ SProcXSendExtensionEvent(ClientPtr client)
swapl(&stuff->destination, n); swapl(&stuff->destination, n);
swaps(&stuff->count, n); swaps(&stuff->count, n);
if (stuff->length != (sizeof(xSendExtensionEventReq) >> 2) + stuff->count + if (stuff->length != bytes_to_int32(sizeof(xSendExtensionEventReq)) + stuff->count +
(stuff->num_events * (sizeof(xEvent) >> 2))) bytes_to_int32(stuff->num_events * sizeof(xEvent)))
return BadLength; return BadLength;
eventP = (xEvent *) & stuff[1]; eventP = (xEvent *) & stuff[1];
@ -126,8 +126,8 @@ ProcXSendExtensionEvent(ClientPtr client)
REQUEST(xSendExtensionEventReq); REQUEST(xSendExtensionEventReq);
REQUEST_AT_LEAST_SIZE(xSendExtensionEventReq); REQUEST_AT_LEAST_SIZE(xSendExtensionEventReq);
if (stuff->length != (sizeof(xSendExtensionEventReq) >> 2) + stuff->count + if (stuff->length != bytes_to_int32(sizeof(xSendExtensionEventReq)) + stuff->count +
(stuff->num_events * (sizeof(xEvent) >> 2))) (stuff->num_events * bytes_to_int32(sizeof(xEvent))))
return BadLength; return BadLength;
ret = dixLookupDevice(&dev, stuff->deviceid, client, DixWriteAccess); ret = dixLookupDevice(&dev, stuff->deviceid, client, DixWriteAccess);

View File

@ -94,8 +94,8 @@ ProcXSetDeviceButtonMapping(ClientPtr client)
REQUEST(xSetDeviceButtonMappingReq); REQUEST(xSetDeviceButtonMappingReq);
REQUEST_AT_LEAST_SIZE(xSetDeviceButtonMappingReq); REQUEST_AT_LEAST_SIZE(xSetDeviceButtonMappingReq);
if (stuff->length != (sizeof(xSetDeviceButtonMappingReq) + if (stuff->length !=
stuff->map_length + 3) >> 2) bytes_to_int32(sizeof(xSetDeviceButtonMappingReq) + stuff->map_length))
return BadLength; return BadLength;
ret = dixLookupDevice(&dev, stuff->deviceid, client, DixManageAccess); ret = dixLookupDevice(&dev, stuff->deviceid, client, DixManageAccess);

View File

@ -100,7 +100,7 @@ ProcXSetDeviceValuators(ClientPtr client)
rep.status = Success; rep.status = Success;
rep.sequenceNumber = client->sequence; rep.sequenceNumber = client->sequence;
if (stuff->length != (sizeof(xSetDeviceValuatorsReq) >> 2) + if (stuff->length != bytes_to_int32(sizeof(xSetDeviceValuatorsReq)) +
stuff->num_valuators) stuff->num_valuators)
return BadLength; return BadLength;

View File

@ -96,8 +96,8 @@ ProcXSetDeviceModifierMapping(ClientPtr client)
REQUEST(xSetDeviceModifierMappingReq); REQUEST(xSetDeviceModifierMappingReq);
REQUEST_AT_LEAST_SIZE(xSetDeviceModifierMappingReq); REQUEST_AT_LEAST_SIZE(xSetDeviceModifierMappingReq);
if (stuff->length != ((sizeof(xSetDeviceModifierMappingReq) >> 2) + if (stuff->length != bytes_to_int32(sizeof(xSetDeviceModifierMappingReq)) +
(stuff->numKeyPerModifier << 1))) (stuff->numKeyPerModifier << 1))
return BadLength; return BadLength;
rep.repType = X_Reply; rep.repType = X_Reply;

View File

@ -112,7 +112,7 @@ void XISendDeviceHierarchyEvent(int flags[MAXDEVICES])
} }
} }
ev->length = (ev->num_info * sizeof(xXIHierarchyInfo))/4; ev->length = bytes_to_int32(ev->num_info * sizeof(xXIHierarchyInfo));
dummyDev.id = XIAllDevices; dummyDev.id = XIAllDevices;
SendEventToAllWindows(&dummyDev, (XI_HierarchyChangedMask >> 8), (xEvent*)ev, 1); SendEventToAllWindows(&dummyDev, (XI_HierarchyChangedMask >> 8), (xEvent*)ev, 1);

View File

@ -903,7 +903,7 @@ ProcXChangeDeviceProperty (ClientPtr client)
stuff->format, stuff->mode, stuff->nUnits); stuff->format, stuff->mode, stuff->nUnits);
len = stuff->nUnits; len = stuff->nUnits;
if (len > ((0xffffffff - sizeof(xChangeDevicePropertyReq)) >> 2)) if (len > (bytes_to_int32(0xffffffff - sizeof(xChangeDevicePropertyReq))))
return BadLength; return BadLength;
totalSize = len * (stuff->format/8); totalSize = len * (stuff->format/8);
@ -972,7 +972,7 @@ ProcXGetDeviceProperty (ClientPtr client)
reply.format = format; reply.format = format;
reply.bytesAfter = bytes_after; reply.bytesAfter = bytes_after;
reply.propertyType = type; reply.propertyType = type;
reply.length = (length + 3) >> 2; reply.length = bytes_to_int32(length);
if (stuff->delete && (reply.bytesAfter == 0)) if (stuff->delete && (reply.bytesAfter == 0))
send_property_event(dev, stuff->property, XIPropertyDeleted); send_property_event(dev, stuff->property, XIPropertyDeleted);
@ -1146,7 +1146,7 @@ ProcXIChangeProperty(ClientPtr client)
rc = check_change_property(client, stuff->property, stuff->type, rc = check_change_property(client, stuff->property, stuff->type,
stuff->format, stuff->mode, stuff->num_items); stuff->format, stuff->mode, stuff->num_items);
len = stuff->num_items; len = stuff->num_items;
if (len > ((0xffffffff - sizeof(xXIChangePropertyReq)) >> 2)) if (len > bytes_to_int32(0xffffffff - sizeof(xXIChangePropertyReq)))
return BadLength; return BadLength;
totalSize = len * (stuff->format/8); totalSize = len * (stuff->format/8);
@ -1215,7 +1215,7 @@ ProcXIGetProperty(ClientPtr client)
reply.format = format; reply.format = format;
reply.bytes_after = bytes_after; reply.bytes_after = bytes_after;
reply.type = type; reply.type = type;
reply.length = (length + 3)/4; reply.length = bytes_to_int32(length);
if (length && stuff->delete && (reply.bytes_after == 0)) if (length && stuff->delete && (reply.bytes_after == 0))
send_property_event(dev, stuff->property, XIPropertyDeleted); send_property_event(dev, stuff->property, XIPropertyDeleted);

View File

@ -200,7 +200,7 @@ SizeDeviceInfo(DeviceIntPtr dev)
int len = sizeof(xXIDeviceInfo); int len = sizeof(xXIDeviceInfo);
/* 4-padded name */ /* 4-padded name */
len += (((strlen(dev->name) + 3)/4)*4); len += pad_to_int32(strlen(dev->name));
return len + SizeDeviceClasses(dev); return len + SizeDeviceClasses(dev);
@ -218,7 +218,7 @@ SizeDeviceClasses(DeviceIntPtr dev)
{ {
len += sizeof(xXIButtonInfo); len += sizeof(xXIButtonInfo);
len += dev->button->numButtons * sizeof(Atom); len += dev->button->numButtons * sizeof(Atom);
len += ((((dev->button->numButtons + 7)/8) + 3)/4) * 4; len += pad_to_int32(bits_to_bytes(dev->button->numButtons));
} }
if (dev->key) if (dev->key)
@ -246,11 +246,12 @@ ListButtonInfo(DeviceIntPtr dev, xXIButtonInfo* info)
int mask_len; int mask_len;
int i; int i;
mask_len = (((dev->button->numButtons + 7)/8) + 3)/4; /* 4-byte units*/ mask_len = bytes_to_int32(bits_to_bytes(dev->button->numButtons));
info->type = ButtonClass; info->type = ButtonClass;
info->num_buttons = dev->button->numButtons; info->num_buttons = dev->button->numButtons;
info->length = sizeof(xXIButtonInfo)/4 + mask_len + info->num_buttons; info->length = bytes_to_int32(sizeof(xXIButtonInfo)) +
info->num_buttons + mask_len;
info->sourceid = dev->button->sourceid; info->sourceid = dev->button->sourceid;
bits = (unsigned char*)&info[1]; bits = (unsigned char*)&info[1];
@ -400,7 +401,7 @@ ListDeviceInfo(DeviceIntPtr dev, xXIDeviceInfo* info)
info->enabled = dev->enabled; info->enabled = dev->enabled;
total_len = sizeof(xXIDeviceInfo); total_len = sizeof(xXIDeviceInfo);
len = ((info->name_len + 3)/4) * 4; len = pad_to_int32(info->name_len);
memset(any, 0, len); memset(any, 0, len);
strncpy(any, dev->name, info->name_len); strncpy(any, dev->name, info->name_len);
any += len; any += len;
@ -456,7 +457,7 @@ SwapDeviceInfo(DeviceIntPtr dev, xXIDeviceInfo* info)
int i; int i;
/* Skip over name */ /* Skip over name */
any += (((info->name_len + 3)/4) * 4); any += pad_to_int32(info->name_len);
for (i = 0; i < info->num_classes; i++) for (i = 0; i < info->num_classes; i++)
{ {

View File

@ -126,7 +126,7 @@ ProcXIQueryPointer(ClientPtr client)
if (pDev->button) if (pDev->button)
{ {
int i, down; int i, down;
rep.buttons_len = (((pDev->button->numButtons + 7)/8) + 3)/4; rep.buttons_len = bytes_to_int32(bits_to_bytes(pDev->button->numButtons));
rep.length += rep.buttons_len; rep.length += rep.buttons_len;
buttons = xcalloc(rep.buttons_len, 4); buttons = xcalloc(rep.buttons_len, 4);
if (!buttons) if (!buttons)

View File

@ -196,7 +196,7 @@ ProcXIGetSelectedEvents(ClientPtr client)
return Success; return Success;
} }
buffer = xcalloc(MAXDEVICES, sizeof(xXIEventMask) + ((XI2MASKSIZE + 3)/4) * 4); buffer = xcalloc(MAXDEVICES, sizeof(xXIEventMask) + pad_to_int32(XI2MASKSIZE));
if (!buffer) if (!buffer)
return BadAlloc; return BadAlloc;