Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • xorg/xserver
  • avolkov/xserver
  • keithp/xserver
  • aplattner/xserver
  • ajax/xserver
  • ofourdan/xserver
  • anholt/xserver
  • abono/xserver
  • airlied/xserver
  • romangg/xserver
  • ross/xserver
  • mupuf/xserver
  • jturney/xserver
  • CendioOssman/xserver
  • kamarul6401/xserver
  • daenzer/xserver
  • afett/xserver
  • coypoop/xserver
  • 3v1n0/xserver
  • llandwerlin/xserver
  • alanc/xserver
  • lyudess/xserver
  • twaik/xserver
  • shadeslayer/xserver
  • djlucas/xserver
  • aditj/xserver
  • dbn/xserver
  • awilfox/xserver
  • rmader/xserver
  • peterh/xserver
  • dk/xserver
  • dslater38/xserver
  • yshui/xserver
  • PaulKocialkowski/xserver
  • dixler/xserver
  • bentiss/xserver
  • mbiebl/xserver
  • rarbab/xserver
  • causztic/xserver
  • agoins/xserver
  • kbrenneman/xserver
  • Hi-Angel/xserver
  • mlankhorst/xserver
  • rgfernandes/xserver
  • topimiettinen/xserver
  • bphaslett/xserver
  • adamjrichter/xserver
  • karolherbst/xserver
  • carlosg/xserver
  • jwrdegoede/xserver
  • mattrope/xserver
  • sthibaul/xserver
  • J-Bu/xserver
  • nacho.resa/xserver
  • emersion/xserver
  • xexaxo/xserver
  • 1480c1/xserver
  • knisht/xserver
  • mattst88/xserver
  • goosen78/xserver
  • zubzub/xserver
  • vsyrjala/xserver
  • gerddie/xserver
  • JeffyCN/xserver
  • gtrentalancia/xserver
  • lostgoat/xserver
  • headrush/xserver
  • jadahl/xserver
  • webi123/xserver
  • zeising/xserver
  • marv/xserver
  • puleglot/xserver
  • zwenna/xserver
  • TAAPArthur/xserver
  • doraskayo/xserver
  • maos20008/xserver
  • tjbp/xserver
  • pq/xserver
  • yarivb/xserver
  • miztake/xserver
  • lynxeye/xserver
  • zboszor/xserver
  • kwg/xserver
  • Gorg/xserver
  • lkundrak/xserver
  • justazarsky/xserver
  • HermannSW/xserver
  • E5ten/xserver
  • bbrezillon/xserver
  • manu/xserver
  • lucyllewy/xserver
  • marvinjr35/xserver
  • jbeich/xserver
  • dirbaio/xserver
  • strassek/xserver
  • mntmn/xserver
  • uvas/xserver
  • azhadchenko/xserver
  • anarsoul/xserver
  • stapelberg/xserver
  • peigongdsd/xserver
  • sjoerd/xserver
  • Ma/xserver
  • mherrb/xserver
  • pichika/xserver
  • qarmin/xserver
  • cooperch/xserver
  • davidriley/xserver
  • lucmann/xserver
  • chema/xserver
  • whot/xserver
  • xdandys/xserver
  • Spintzyk/xserver
  • mikeroyal/xserver
  • ydirson/xserver
  • SimonPilkington/xserver
  • daniels/xserver
  • andrebsguedes/xserver
  • chenhuacai/xserver
  • Vivek/xserver
  • meMuszr/xserver
  • MisterDA/xserver
  • linkmauve/xserver
  • starnight/xserver
  • ekurzinger/xserver
  • DPA/xserver
  • hmazlan/xserver
  • alagner/xserver
  • tagr/xserver
  • alex-tu-cc/xserver
  • kaniini/xserver
  • p12tic/xserver
  • valpackett/xserver
  • Kishore409/xserver
  • bernhardu/xserver
  • kaichuan.hsieh/xserver
  • icenowy/xserver
  • rilian-la-te/xserver
  • smelenius/xserver
  • vfjpl/xserver
  • mvlad/xserver
  • vliaskov/xserver
  • hitong602/xserver
  • haagch/xserver
  • freemangordon/xserver
  • tmlind/xserver
  • vitoux.pascal/xserver
  • luporl/xserver
  • hassoon1986/xserver
  • chengbo7135/xserver
  • sri-ka1ki/xserver
  • kaocher82/xserver
  • heymiaoO/xserver
  • xry111/xserver
  • jcristau/xserver
  • lanodan/xserver
  • jcourreges/xserver
  • dottedmag/xserver
  • jeremyhu/xserver
  • jcherry/xserver
  • Zamundaaa/xserver
  • gsittyz/xserver
  • OlCe/xserver
  • manuelcrack642/xserver
  • kupper.pa/xserver
  • ZhiJie.Zhang/xserver
  • Michaelypk/xserver
  • msizanoen1/xserver
  • andreyknyazev077/xserver
  • christian-rauch/xserver
  • karlosrangel337/xserver
  • niveditharau/xserver
  • antonovitch/xserver
  • galaxytgtabiday/xserver
  • ryanneph/xserver
  • ismailsiege/xserver
  • orbea/xserver
  • FeepingCreature/xserver
  • ydc-dadada/xserver
  • davidedmundson/xserver
  • arichardson/xserver
  • 1740301466jxz/xserver
  • DemiMarie/xserver
  • kennylevinsen/xserver
  • mrisaacb/xserver
  • robclark/xserver
  • JoseExposito/xserver
  • refi_64/xserver
  • kleinerm/xserver
  • Acidburn0zzz/xserver
  • vinilokorlok/xserver
  • cubanismo/xserver
  • n3rdopolis/xserver
  • mwyraz/xserver
  • halfline/xserver
  • cpmichael/modesetting
  • sherrodejjohnson/xserver
  • eschwartz/xserver
  • oreaus/xserver
  • jocelyn/xserver
  • ernstp/xserver
  • LickmeDown/xserver
  • Daasin/xserver
  • huxd1532/xserver
  • cgzones/xserver
  • davidre/xserver
  • jsg/xserver
  • zagursky/xserver
  • thesamesam/xserver
  • ashafer/xserver
  • dengbo/xserver
  • josch/xserver
  • denisfa/xserver
  • benpicco/xserver
  • Tuetuopay/xserver
  • tholin/xserver
  • tzimmermann/xserver
  • Sjecai2/xserver
  • tintou/xserver
  • zaps166/xserver
  • schreibemirhalt/xserver
  • tomty89/xserver
  • contactshashanksharma/xserver-fork-shashank
  • os369510/xserver
  • liyi42/xserver
  • Kyawswat/xserver
  • psyruss85/xserver
  • akihiko.odaki/xserver
  • StarsGreen/xserver
  • klniu/xserver
  • pekdon/xserver
  • pkubaj/xserver
  • kerneltoast/xserver
  • wengxt/xserver
  • vanvugt/xserver
  • cbur201592/xserver
  • bkylerussell/xserver
  • wujiangGitHub/xserver
  • frog/xserver
  • bafanahub/xserver
  • Ivaniku/x-taylan
  • bigon/xserver
  • jrtc27/xserver
  • djacewicz/xserver
  • kylin0061/xserver
  • Fatton1/xserver
  • gmbr3/xserver
  • devin11911191/xserver
  • guillem/xserver
  • mahkoh/xserver
  • acelan/xserver
  • dkorkmazturk/xserver
  • olv/xserver
  • SpikyCaterpillar1/xserver
  • lihongtao/xserver
  • luke-jr/xserver
  • karamjameelmoore/xserver
  • mehdigh419/xserver
  • wiz/xserver
  • ecurtin/xserver
  • muesli4/xserver
  • iv-m/xserver
  • ForTheReallys/xserver
  • BBaoVanC/xserver
  • ccullumbine2018/xserver
  • mgorse1/xserver
  • road2react/xserver
  • mwei/xserver
  • Rui511/xserver
  • ThatMG393/xserver
  • haihao/xserver
  • ipominov/xserver
  • tsutsui/xserver
  • fweimer/xserver
  • gilvbp/xserver
  • themaister/xserver
  • bbeckett/xserver
  • TMR5454/xserver
  • erwinou/xserver
  • aarondill/xserver
  • peng.jin/xserver
  • russellcnv/xserver
  • yangxiaojuan-loongson/xserver
  • LiChenG-P/xserver
  • looi/xserver
  • NSUTanghaixiang/xserver
  • XDXTHX/xserver
  • City-busz/xserver
  • arrowd/xserver
  • zzyiwei/xserver
  • dongwonk/xserver
  • EXtremeExploit/xserver
  • luyn/xserver
  • hexiaodong/xserver
  • sewn/xserver
  • cl91/xserver
  • rnpnr/xserver
  • adamdruppe/xserver
  • RyzenDew/xserver
  • jexposit/xserver
  • svalaskevicius/xserver
  • floppym/xserver
  • metux/xserver
  • YusufKhan-gamedev/xserver
  • Drakulix/xserver
  • wjp/xserver
  • dawnhan/xserver
  • noblock/xserver
  • zzag/xserver
  • catap/xserver
  • trevdave/xserver
  • ids1024/xserver
  • gabifalk/xserver
  • Emantor/xserver
  • sknsean/xserver
  • hongaoo/xserver
  • penguin42/xserver
  • heitbaum/xserver
  • fvalasiad/xserver
  • AkiSakurai/xserver
  • chenx_dust/xserver
  • jmonteiro/xserver
  • gldrk/xserver
  • dougg3/xserver
  • pepp/xserver
  • Julia/xserver
  • nathankidd/xserver
  • jannau/xserver
  • zhangyaning/xserver
  • xinbowang/xserver
  • sergiomb/xserver
  • andy-zetier/xserver
  • jayantpranjal0/xserver
  • zzxyb/xserver
  • dkg/xserver
  • GermanAizek/xserver
  • dougvj/xserver
  • volkanorhan/xserver
  • rbernon/xserver
  • matt335672/xserver
  • gfxstrand/xorg-xserver
  • nicolas-guichard/xserver
  • rc_05/xserver
343 results
Show changes
Commits on Source (6)
...@@ -779,9 +779,6 @@ extern _X_EXPORT void XkbDeleteRulesDflts(void ...@@ -779,9 +779,6 @@ extern _X_EXPORT void XkbDeleteRulesDflts(void
extern _X_EXPORT void XkbDeleteRulesUsed(void extern _X_EXPORT void XkbDeleteRulesUsed(void
); );
extern _X_EXPORT int SProcXkbDispatch(ClientPtr /* client */
);
extern _X_EXPORT XkbGeometryPtr XkbLookupNamedGeometry(DeviceIntPtr /* dev */ , extern _X_EXPORT XkbGeometryPtr XkbLookupNamedGeometry(DeviceIntPtr /* dev */ ,
Atom /* name */ , Atom /* name */ ,
Bool * /* shouldFree */ Bool * /* shouldFree */
......
...@@ -48,7 +48,6 @@ ...@@ -48,7 +48,6 @@
#include "../xkb/xkbgeom.h" #include "../xkb/xkbgeom.h"
#include <X11/extensions/XKMformat.h> #include <X11/extensions/XKMformat.h>
#include "xkbfile.h" #include "xkbfile.h"
#include "../xkb/xkb.h"
#include <assert.h> #include <assert.h>
#include "tests-common.h" #include "tests-common.h"
......
...@@ -43,7 +43,6 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. ...@@ -43,7 +43,6 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
#define XKBSRV_NEED_FILE_FUNCS #define XKBSRV_NEED_FILE_FUNCS
#include <xkbsrv.h> #include <xkbsrv.h>
#include <X11/extensions/XI.h> #include <X11/extensions/XI.h>
#include "xkb.h"
#define PRE_ERROR_MSG "\"The XKEYBOARD keymap compiler (xkbcomp) reports:\"" #define PRE_ERROR_MSG "\"The XKEYBOARD keymap compiler (xkbcomp) reports:\""
#define ERROR_PREFIX "\"> \"" #define ERROR_PREFIX "\"> \""
......
...@@ -27,4 +27,7 @@ extern int ProcXkbGetKbdByName(ClientPtr client); ...@@ -27,4 +27,7 @@ extern int ProcXkbGetKbdByName(ClientPtr client);
extern int ProcXkbGetDeviceInfo(ClientPtr client); extern int ProcXkbGetDeviceInfo(ClientPtr client);
extern int ProcXkbSetDeviceInfo(ClientPtr client); extern int ProcXkbSetDeviceInfo(ClientPtr client);
extern int ProcXkbSetDebuggingFlags(ClientPtr client); extern int ProcXkbSetDebuggingFlags(ClientPtr client);
extern int SProcXkbDispatch(ClientPtr client);
#endif #endif
...@@ -38,7 +38,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. ...@@ -38,7 +38,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "extnsionst.h" #include "extnsionst.h"
#include "extinit.h" #include "extinit.h"
#include "xace.h" #include "xace.h"
#include "xkb.h" #include "xkb-procs.h"
#include "protocol-versions.h" #include "protocol-versions.h"
#include <X11/extensions/XI.h> #include <X11/extensions/XI.h>
...@@ -2433,7 +2433,7 @@ _XkbSetMapCheckLength(xkbSetMapReq *req) ...@@ -2433,7 +2433,7 @@ _XkbSetMapCheckLength(xkbSetMapReq *req)
} }
/* actions */ /* actions */
if (req->present & XkbKeyActionsMask) { if (req->present & XkbKeyActionsMask) {
_add_check_len(req->totalActs * sz_xkbActionWireDesc _add_check_len(req->totalActs * sz_xkbActionWireDesc
+ XkbPaddedSize(req->nKeyActs)); + XkbPaddedSize(req->nKeyActs));
} }
/* behaviours */ /* behaviours */
...@@ -5156,7 +5156,7 @@ _GetCountedString(char **wire_inout, ClientPtr client, char **str) ...@@ -5156,7 +5156,7 @@ _GetCountedString(char **wire_inout, ClientPtr client, char **str)
} }
static Status static Status
_CheckSetDoodad(char **wire_inout, _CheckSetDoodad(char **wire_inout, xkbSetGeometryReq *req,
XkbGeometryPtr geom, XkbSectionPtr section, ClientPtr client) XkbGeometryPtr geom, XkbSectionPtr section, ClientPtr client)
{ {
char *wire; char *wire;
...@@ -5167,6 +5167,9 @@ _CheckSetDoodad(char **wire_inout, ...@@ -5167,6 +5167,9 @@ _CheckSetDoodad(char **wire_inout,
Status status; Status status;
dWire = (xkbDoodadWireDesc *) (*wire_inout); dWire = (xkbDoodadWireDesc *) (*wire_inout);
if (!_XkbCheckRequestBounds(client, req, dWire, dWire + 1))
return BadLength;
any = dWire->any; any = dWire->any;
wire = (char *) &dWire[1]; wire = (char *) &dWire[1];
if (client->swapped) { if (client->swapped) {
...@@ -5269,7 +5272,7 @@ _CheckSetDoodad(char **wire_inout, ...@@ -5269,7 +5272,7 @@ _CheckSetDoodad(char **wire_inout,
} }
static Status static Status
_CheckSetOverlay(char **wire_inout, _CheckSetOverlay(char **wire_inout, xkbSetGeometryReq *req,
XkbGeometryPtr geom, XkbSectionPtr section, ClientPtr client) XkbGeometryPtr geom, XkbSectionPtr section, ClientPtr client)
{ {
register int r; register int r;
...@@ -5280,6 +5283,9 @@ _CheckSetOverlay(char **wire_inout, ...@@ -5280,6 +5283,9 @@ _CheckSetOverlay(char **wire_inout,
wire = *wire_inout; wire = *wire_inout;
olWire = (xkbOverlayWireDesc *) wire; olWire = (xkbOverlayWireDesc *) wire;
if (!_XkbCheckRequestBounds(client, req, olWire, olWire + 1))
return BadLength;
if (client->swapped) { if (client->swapped) {
swapl(&olWire->name); swapl(&olWire->name);
} }
...@@ -5291,6 +5297,9 @@ _CheckSetOverlay(char **wire_inout, ...@@ -5291,6 +5297,9 @@ _CheckSetOverlay(char **wire_inout,
xkbOverlayKeyWireDesc *kWire; xkbOverlayKeyWireDesc *kWire;
XkbOverlayRowPtr row; XkbOverlayRowPtr row;
if (!_XkbCheckRequestBounds(client, req, rWire, rWire + 1))
return BadLength;
if (rWire->rowUnder > section->num_rows) { if (rWire->rowUnder > section->num_rows) {
client->errorValue = _XkbErrCode4(0x20, r, section->num_rows, client->errorValue = _XkbErrCode4(0x20, r, section->num_rows,
rWire->rowUnder); rWire->rowUnder);
...@@ -5299,6 +5308,9 @@ _CheckSetOverlay(char **wire_inout, ...@@ -5299,6 +5308,9 @@ _CheckSetOverlay(char **wire_inout,
row = XkbAddGeomOverlayRow(ol, rWire->rowUnder, rWire->nKeys); row = XkbAddGeomOverlayRow(ol, rWire->rowUnder, rWire->nKeys);
kWire = (xkbOverlayKeyWireDesc *) &rWire[1]; kWire = (xkbOverlayKeyWireDesc *) &rWire[1];
for (k = 0; k < rWire->nKeys; k++, kWire++) { for (k = 0; k < rWire->nKeys; k++, kWire++) {
if (!_XkbCheckRequestBounds(client, req, kWire, kWire + 1))
return BadLength;
if (XkbAddGeomOverlayKey(ol, row, if (XkbAddGeomOverlayKey(ol, row,
(char *) kWire->over, (char *) kWire->over,
(char *) kWire->under) == NULL) { (char *) kWire->under) == NULL) {
...@@ -5332,6 +5344,9 @@ _CheckSetSections(XkbGeometryPtr geom, ...@@ -5332,6 +5344,9 @@ _CheckSetSections(XkbGeometryPtr geom,
register int r; register int r;
xkbRowWireDesc *rWire; xkbRowWireDesc *rWire;
if (!_XkbCheckRequestBounds(client, req, sWire, sWire + 1))
return BadLength;
if (client->swapped) { if (client->swapped) {
swapl(&sWire->name); swapl(&sWire->name);
swaps(&sWire->top); swaps(&sWire->top);
...@@ -5357,6 +5372,9 @@ _CheckSetSections(XkbGeometryPtr geom, ...@@ -5357,6 +5372,9 @@ _CheckSetSections(XkbGeometryPtr geom,
XkbRowPtr row; XkbRowPtr row;
xkbKeyWireDesc *kWire; xkbKeyWireDesc *kWire;
if (!_XkbCheckRequestBounds(client, req, rWire, rWire + 1))
return BadLength;
if (client->swapped) { if (client->swapped) {
swaps(&rWire->top); swaps(&rWire->top);
swaps(&rWire->left); swaps(&rWire->left);
...@@ -5368,16 +5386,19 @@ _CheckSetSections(XkbGeometryPtr geom, ...@@ -5368,16 +5386,19 @@ _CheckSetSections(XkbGeometryPtr geom,
row->left = rWire->left; row->left = rWire->left;
row->vertical = rWire->vertical; row->vertical = rWire->vertical;
kWire = (xkbKeyWireDesc *) &rWire[1]; kWire = (xkbKeyWireDesc *) &rWire[1];
for (k = 0; k < rWire->nKeys; k++) { for (k = 0; k < rWire->nKeys; k++, kWire++) {
XkbKeyPtr key; XkbKeyPtr key;
if (!_XkbCheckRequestBounds(client, req, kWire, kWire + 1))
return BadLength;
key = XkbAddGeomKey(row); key = XkbAddGeomKey(row);
if (!key) if (!key)
return BadAlloc; return BadAlloc;
memcpy(key->name.name, kWire[k].name, XkbKeyNameLength); memcpy(key->name.name, kWire->name, XkbKeyNameLength);
key->gap = kWire[k].gap; key->gap = kWire->gap;
key->shape_ndx = kWire[k].shapeNdx; key->shape_ndx = kWire->shapeNdx;
key->color_ndx = kWire[k].colorNdx; key->color_ndx = kWire->colorNdx;
if (key->shape_ndx >= geom->num_shapes) { if (key->shape_ndx >= geom->num_shapes) {
client->errorValue = _XkbErrCode3(0x10, key->shape_ndx, client->errorValue = _XkbErrCode3(0x10, key->shape_ndx,
geom->num_shapes); geom->num_shapes);
...@@ -5389,14 +5410,14 @@ _CheckSetSections(XkbGeometryPtr geom, ...@@ -5389,14 +5410,14 @@ _CheckSetSections(XkbGeometryPtr geom,
return BadMatch; return BadMatch;
} }
} }
rWire = (xkbRowWireDesc *) &kWire[rWire->nKeys]; rWire = (xkbRowWireDesc *)kWire;
} }
wire = (char *) rWire; wire = (char *) rWire;
if (sWire->nDoodads > 0) { if (sWire->nDoodads > 0) {
register int d; register int d;
for (d = 0; d < sWire->nDoodads; d++) { for (d = 0; d < sWire->nDoodads; d++) {
status = _CheckSetDoodad(&wire, geom, section, client); status = _CheckSetDoodad(&wire, req, geom, section, client);
if (status != Success) if (status != Success)
return status; return status;
} }
...@@ -5405,7 +5426,7 @@ _CheckSetSections(XkbGeometryPtr geom, ...@@ -5405,7 +5426,7 @@ _CheckSetSections(XkbGeometryPtr geom,
register int o; register int o;
for (o = 0; o < sWire->nOverlays; o++) { for (o = 0; o < sWire->nOverlays; o++) {
status = _CheckSetOverlay(&wire, geom, section, client); status = _CheckSetOverlay(&wire, req, geom, section, client);
if (status != Success) if (status != Success)
return status; return status;
} }
...@@ -5439,6 +5460,9 @@ _CheckSetShapes(XkbGeometryPtr geom, ...@@ -5439,6 +5460,9 @@ _CheckSetShapes(XkbGeometryPtr geom,
xkbOutlineWireDesc *olWire; xkbOutlineWireDesc *olWire;
XkbOutlinePtr ol; XkbOutlinePtr ol;
if (!_XkbCheckRequestBounds(client, req, shapeWire, shapeWire + 1))
return BadLength;
shape = shape =
XkbAddGeomShape(geom, shapeWire->name, shapeWire->nOutlines); XkbAddGeomShape(geom, shapeWire->name, shapeWire->nOutlines);
if (!shape) if (!shape)
...@@ -5449,21 +5473,27 @@ _CheckSetShapes(XkbGeometryPtr geom, ...@@ -5449,21 +5473,27 @@ _CheckSetShapes(XkbGeometryPtr geom,
XkbPointPtr pt; XkbPointPtr pt;
xkbPointWireDesc *ptWire; xkbPointWireDesc *ptWire;
if (!_XkbCheckRequestBounds(client, req, olWire, olWire + 1))
return BadLength;
ol = XkbAddGeomOutline(shape, olWire->nPoints); ol = XkbAddGeomOutline(shape, olWire->nPoints);
if (!ol) if (!ol)
return BadAlloc; return BadAlloc;
ol->corner_radius = olWire->cornerRadius; ol->corner_radius = olWire->cornerRadius;
ptWire = (xkbPointWireDesc *) &olWire[1]; ptWire = (xkbPointWireDesc *) &olWire[1];
for (p = 0, pt = ol->points; p < olWire->nPoints; p++, pt++) { for (p = 0, pt = ol->points; p < olWire->nPoints; p++, pt++, ptWire++) {
pt->x = ptWire[p].x; if (!_XkbCheckRequestBounds(client, req, ptWire, ptWire + 1))
pt->y = ptWire[p].y; return BadLength;
pt->x = ptWire->x;
pt->y = ptWire->y;
if (client->swapped) { if (client->swapped) {
swaps(&pt->x); swaps(&pt->x);
swaps(&pt->y); swaps(&pt->y);
} }
} }
ol->num_points = olWire->nPoints; ol->num_points = olWire->nPoints;
olWire = (xkbOutlineWireDesc *) (&ptWire[olWire->nPoints]); olWire = (xkbOutlineWireDesc *)ptWire;
} }
if (shapeWire->primaryNdx != XkbNoShape) if (shapeWire->primaryNdx != XkbNoShape)
shape->primary = &shape->outlines[shapeWire->primaryNdx]; shape->primary = &shape->outlines[shapeWire->primaryNdx];
...@@ -5560,12 +5590,15 @@ _CheckSetGeom(XkbGeometryPtr geom, xkbSetGeometryReq * req, ClientPtr client) ...@@ -5560,12 +5590,15 @@ _CheckSetGeom(XkbGeometryPtr geom, xkbSetGeometryReq * req, ClientPtr client)
return status; return status;
for (i = 0; i < req->nDoodads; i++) { for (i = 0; i < req->nDoodads; i++) {
status = _CheckSetDoodad(&wire, geom, NULL, client); status = _CheckSetDoodad(&wire, req, geom, NULL, client);
if (status != Success) if (status != Success)
return status; return status;
} }
for (i = 0; i < req->nKeyAliases; i++) { for (i = 0; i < req->nKeyAliases; i++) {
if (!_XkbCheckRequestBounds(client, req, wire, wire + XkbKeyNameLength))
return BadLength;
if (XkbAddGeomKeyAlias(geom, &wire[XkbKeyNameLength], wire) == NULL) if (XkbAddGeomKeyAlias(geom, &wire[XkbKeyNameLength], wire) == NULL)
return BadAlloc; return BadAlloc;
wire += 2 * XkbKeyNameLength; wire += 2 * XkbKeyNameLength;
...@@ -6550,7 +6583,8 @@ ProcXkbGetDeviceInfo(ClientPtr client) ...@@ -6550,7 +6583,8 @@ ProcXkbGetDeviceInfo(ClientPtr client)
static char * static char *
CheckSetDeviceIndicators(char *wire, CheckSetDeviceIndicators(char *wire,
DeviceIntPtr dev, DeviceIntPtr dev,
int num, int *status_rtrn, ClientPtr client) int num, int *status_rtrn, ClientPtr client,
xkbSetDeviceInfoReq * stuff)
{ {
xkbDeviceLedsWireDesc *ledWire; xkbDeviceLedsWireDesc *ledWire;
int i; int i;
...@@ -6558,6 +6592,11 @@ CheckSetDeviceIndicators(char *wire, ...@@ -6558,6 +6592,11 @@ CheckSetDeviceIndicators(char *wire,
ledWire = (xkbDeviceLedsWireDesc *) wire; ledWire = (xkbDeviceLedsWireDesc *) wire;
for (i = 0; i < num; i++) { for (i = 0; i < num; i++) {
if (!_XkbCheckRequestBounds(client, stuff, ledWire, ledWire + 1)) {
*status_rtrn = BadLength;
return (char *) ledWire;
}
if (client->swapped) { if (client->swapped) {
swaps(&ledWire->ledClass); swaps(&ledWire->ledClass);
swaps(&ledWire->ledID); swaps(&ledWire->ledID);
...@@ -6585,6 +6624,11 @@ CheckSetDeviceIndicators(char *wire, ...@@ -6585,6 +6624,11 @@ CheckSetDeviceIndicators(char *wire,
atomWire = (CARD32 *) &ledWire[1]; atomWire = (CARD32 *) &ledWire[1];
if (nNames > 0) { if (nNames > 0) {
for (n = 0; n < nNames; n++) { for (n = 0; n < nNames; n++) {
if (!_XkbCheckRequestBounds(client, stuff, atomWire, atomWire + 1)) {
*status_rtrn = BadLength;
return (char *) atomWire;
}
if (client->swapped) { if (client->swapped) {
swapl(atomWire); swapl(atomWire);
} }
...@@ -6596,6 +6640,10 @@ CheckSetDeviceIndicators(char *wire, ...@@ -6596,6 +6640,10 @@ CheckSetDeviceIndicators(char *wire,
mapWire = (xkbIndicatorMapWireDesc *) atomWire; mapWire = (xkbIndicatorMapWireDesc *) atomWire;
if (nMaps > 0) { if (nMaps > 0) {
for (n = 0; n < nMaps; n++) { for (n = 0; n < nMaps; n++) {
if (!_XkbCheckRequestBounds(client, stuff, mapWire, mapWire + 1)) {
*status_rtrn = BadLength;
return (char *) mapWire;
}
if (client->swapped) { if (client->swapped) {
swaps(&mapWire->virtualMods); swaps(&mapWire->virtualMods);
swapl(&mapWire->ctrls); swapl(&mapWire->ctrls);
...@@ -6647,11 +6695,6 @@ SetDeviceIndicators(char *wire, ...@@ -6647,11 +6695,6 @@ SetDeviceIndicators(char *wire,
xkbIndicatorMapWireDesc *mapWire; xkbIndicatorMapWireDesc *mapWire;
XkbSrvLedInfoPtr sli; XkbSrvLedInfoPtr sli;
if (!_XkbCheckRequestBounds(client, stuff, ledWire, ledWire + 1)) {
*status_rtrn = BadLength;
return (char *) ledWire;
}
namec = mapc = statec = 0; namec = mapc = statec = 0;
sli = XkbFindSrvLedInfo(dev, ledWire->ledClass, ledWire->ledID, sli = XkbFindSrvLedInfo(dev, ledWire->ledClass, ledWire->ledID,
XkbXI_IndicatorMapsMask); XkbXI_IndicatorMapsMask);
...@@ -6670,10 +6713,6 @@ SetDeviceIndicators(char *wire, ...@@ -6670,10 +6713,6 @@ SetDeviceIndicators(char *wire,
memset((char *) sli->names, 0, XkbNumIndicators * sizeof(Atom)); memset((char *) sli->names, 0, XkbNumIndicators * sizeof(Atom));
for (n = 0, bit = 1; n < XkbNumIndicators; n++, bit <<= 1) { for (n = 0, bit = 1; n < XkbNumIndicators; n++, bit <<= 1) {
if (ledWire->namesPresent & bit) { if (ledWire->namesPresent & bit) {
if (!_XkbCheckRequestBounds(client, stuff, atomWire, atomWire + 1)) {
*status_rtrn = BadLength;
return (char *) atomWire;
}
sli->names[n] = (Atom) *atomWire; sli->names[n] = (Atom) *atomWire;
if (sli->names[n] == None) if (sli->names[n] == None)
ledWire->namesPresent &= ~bit; ledWire->namesPresent &= ~bit;
...@@ -6691,10 +6730,6 @@ SetDeviceIndicators(char *wire, ...@@ -6691,10 +6730,6 @@ SetDeviceIndicators(char *wire,
if (ledWire->mapsPresent) { if (ledWire->mapsPresent) {
for (n = 0, bit = 1; n < XkbNumIndicators; n++, bit <<= 1) { for (n = 0, bit = 1; n < XkbNumIndicators; n++, bit <<= 1) {
if (ledWire->mapsPresent & bit) { if (ledWire->mapsPresent & bit) {
if (!_XkbCheckRequestBounds(client, stuff, mapWire, mapWire + 1)) {
*status_rtrn = BadLength;
return (char *) mapWire;
}
sli->maps[n].flags = mapWire->flags; sli->maps[n].flags = mapWire->flags;
sli->maps[n].which_groups = mapWire->whichGroups; sli->maps[n].which_groups = mapWire->whichGroups;
sli->maps[n].groups = mapWire->groups; sli->maps[n].groups = mapWire->groups;
...@@ -6730,13 +6765,17 @@ SetDeviceIndicators(char *wire, ...@@ -6730,13 +6765,17 @@ SetDeviceIndicators(char *wire,
} }
static int static int
_XkbSetDeviceInfo(ClientPtr client, DeviceIntPtr dev, _XkbSetDeviceInfoCheck(ClientPtr client, DeviceIntPtr dev,
xkbSetDeviceInfoReq * stuff) xkbSetDeviceInfoReq * stuff)
{ {
char *wire; char *wire;
wire = (char *) &stuff[1]; wire = (char *) &stuff[1];
if (stuff->change & XkbXI_ButtonActionsMask) { if (stuff->change & XkbXI_ButtonActionsMask) {
int sz = stuff->nBtns * SIZEOF(xkbActionWireDesc);
if (!_XkbCheckRequestBounds(client, stuff, wire, (char *) wire + sz))
return BadLength;
if (!dev->button) { if (!dev->button) {
client->errorValue = _XkbErrCode2(XkbErr_BadClass, ButtonClass); client->errorValue = _XkbErrCode2(XkbErr_BadClass, ButtonClass);
return XkbKeyboardErrorCode; return XkbKeyboardErrorCode;
...@@ -6747,13 +6786,13 @@ _XkbSetDeviceInfo(ClientPtr client, DeviceIntPtr dev, ...@@ -6747,13 +6786,13 @@ _XkbSetDeviceInfo(ClientPtr client, DeviceIntPtr dev,
dev->button->numButtons); dev->button->numButtons);
return BadMatch; return BadMatch;
} }
wire += (stuff->nBtns * SIZEOF(xkbActionWireDesc)); wire += sz;
} }
if (stuff->change & XkbXI_IndicatorsMask) { if (stuff->change & XkbXI_IndicatorsMask) {
int status = Success; int status = Success;
wire = CheckSetDeviceIndicators(wire, dev, stuff->nDeviceLedFBs, wire = CheckSetDeviceIndicators(wire, dev, stuff->nDeviceLedFBs,
&status, client); &status, client, stuff);
if (status != Success) if (status != Success)
return status; return status;
} }
...@@ -6764,8 +6803,8 @@ _XkbSetDeviceInfo(ClientPtr client, DeviceIntPtr dev, ...@@ -6764,8 +6803,8 @@ _XkbSetDeviceInfo(ClientPtr client, DeviceIntPtr dev,
} }
static int static int
_XkbSetDeviceInfoCheck(ClientPtr client, DeviceIntPtr dev, _XkbSetDeviceInfo(ClientPtr client, DeviceIntPtr dev,
xkbSetDeviceInfoReq * stuff) xkbSetDeviceInfoReq * stuff)
{ {
char *wire; char *wire;
xkbExtensionDeviceNotify ed; xkbExtensionDeviceNotify ed;
...@@ -6774,7 +6813,7 @@ _XkbSetDeviceInfoCheck(ClientPtr client, DeviceIntPtr dev, ...@@ -6774,7 +6813,7 @@ _XkbSetDeviceInfoCheck(ClientPtr client, DeviceIntPtr dev,
ed.deviceID = dev->id; ed.deviceID = dev->id;
wire = (char *) &stuff[1]; wire = (char *) &stuff[1];
if (stuff->change & XkbXI_ButtonActionsMask) { if (stuff->change & XkbXI_ButtonActionsMask) {
int nBtns, sz, i; int nBtns, sz, i;
XkbAction *acts; XkbAction *acts;
DeviceIntPtr kbd; DeviceIntPtr kbd;
...@@ -6789,8 +6828,6 @@ _XkbSetDeviceInfoCheck(ClientPtr client, DeviceIntPtr dev, ...@@ -6789,8 +6828,6 @@ _XkbSetDeviceInfoCheck(ClientPtr client, DeviceIntPtr dev,
if (stuff->firstBtn + stuff->nBtns > nBtns) if (stuff->firstBtn + stuff->nBtns > nBtns)
return BadValue; return BadValue;
sz = stuff->nBtns * SIZEOF(xkbActionWireDesc); sz = stuff->nBtns * SIZEOF(xkbActionWireDesc);
if (!_XkbCheckRequestBounds(client, stuff, wire, (char *) wire + sz))
return BadLength;
memcpy((char *) &acts[stuff->firstBtn], (char *) wire, sz); memcpy((char *) &acts[stuff->firstBtn], (char *) wire, sz);
wire += sz; wire += sz;
ed.reason |= XkbXI_ButtonActionsMask; ed.reason |= XkbXI_ButtonActionsMask;
......
...@@ -38,7 +38,6 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. ...@@ -38,7 +38,6 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "exevents.h" #include "exevents.h"
#include "eventstr.h" #include "eventstr.h"
#include <xkbsrv.h> #include <xkbsrv.h>
#include "xkb.h"
#include <ctype.h> #include <ctype.h>
#include "mi.h" #include "mi.h"
#include "mipointer.h" #include "mipointer.h"
......
...@@ -39,7 +39,6 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. ...@@ -39,7 +39,6 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "exglobals.h" #include "exglobals.h"
#include "windowstr.h" #include "windowstr.h"
#include <xkbsrv.h> #include <xkbsrv.h>
#include "xkb.h"
/***====================================================================***/ /***====================================================================***/
......
...@@ -49,7 +49,6 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. ...@@ -49,7 +49,6 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "xkbgeom.h" #include "xkbgeom.h"
#include <X11/extensions/XKMformat.h> #include <X11/extensions/XKMformat.h>
#include "xkbfile.h" #include "xkbfile.h"
#include "xkb.h"
#define CREATE_ATOM(s) MakeAtom(s,sizeof(s)-1,1) #define CREATE_ATOM(s) MakeAtom(s,sizeof(s)-1,1)
......
...@@ -38,7 +38,6 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. ...@@ -38,7 +38,6 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include <X11/extensions/XI.h> #include <X11/extensions/XI.h>
#include <xkbsrv.h> #include <xkbsrv.h>
#include "xkb.h"
/***====================================================================***/ /***====================================================================***/
......
...@@ -36,7 +36,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. ...@@ -36,7 +36,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include <xkbsrv.h> #include <xkbsrv.h>
#include "xkbstr.h" #include "xkbstr.h"
#include "extnsionst.h" #include "extnsionst.h"
#include "xkb.h" #include "xkb-procs.h"
/* /*
* REQUEST SWAPPING * REQUEST SWAPPING
......
...@@ -67,7 +67,6 @@ DEALINGS IN THE SOFTWARE. ...@@ -67,7 +67,6 @@ DEALINGS IN THE SOFTWARE.
#define XKBSRV_NEED_FILE_FUNCS #define XKBSRV_NEED_FILE_FUNCS
#include <xkbsrv.h> #include <xkbsrv.h>
#include "xkbgeom.h" #include "xkbgeom.h"
#include "xkb.h"
/***====================================================================***/ /***====================================================================***/
......
...@@ -46,7 +46,6 @@ ...@@ -46,7 +46,6 @@
#define XKBSRV_NEED_FILE_FUNCS 1 #define XKBSRV_NEED_FILE_FUNCS 1
#include <xkbsrv.h> #include <xkbsrv.h>
#include "xkbgeom.h" #include "xkbgeom.h"
#include "xkb.h"
unsigned unsigned
_XkbKSCheckCase(KeySym ks) _XkbKSCheckCase(KeySym ks)
......