xkb: Extra sanity checks to prevent dev->key == NULL dereferencing.

This commit is contained in:
Peter Hutterer 2008-11-28 14:55:15 +10:00
parent b983c4fa1e
commit 41471afa77

View File

@ -110,7 +110,7 @@ Time time;
register CARD16 changed,bState; register CARD16 changed,bState;
interest = kbd->xkb_interest; interest = kbd->xkb_interest;
if (!interest) if (!interest || !kbd->key || !kbd->key->xkbInfo)
return; return;
xkbi = kbd->key->xkbInfo; xkbi = kbd->key->xkbInfo;
state= &xkbi->state; state= &xkbi->state;
@ -169,6 +169,9 @@ XkbSrvInfoPtr xkbi;
unsigned time = 0,initialized; unsigned time = 0,initialized;
CARD16 changed; CARD16 changed;
if (!kbd->key || !kbd->key->xkbInfo)
return;
xkbi = kbd->key->xkbInfo; xkbi = kbd->key->xkbInfo;
initialized= 0; initialized= 0;
@ -292,7 +295,7 @@ XkbInterestPtr interest;
Time time = 0; Time time = 0;
interest = kbd->xkb_interest; interest = kbd->xkb_interest;
if (!interest) if (!interest || !kbd->key || !kbd->key->xkbInfo)
return; return;
xkbi = kbd->key->xkbInfo; xkbi = kbd->key->xkbInfo;
@ -402,6 +405,9 @@ CARD16 pitch,duration;
Time time = 0; Time time = 0;
XID winID = 0; XID winID = 0;
if (!kbd->key || !kbd->key->xkbInfo)
return;
xkbi = kbd->key->xkbInfo; xkbi = kbd->key->xkbInfo;
if ((force||(xkbi->desc->ctrls->enabled_ctrls&XkbAudibleBellMask))&& if ((force||(xkbi->desc->ctrls->enabled_ctrls&XkbAudibleBellMask))&&
@ -617,11 +623,12 @@ XkbSrvInfoPtr xkbi;
XkbInterestPtr interest; XkbInterestPtr interest;
Time time = 0; Time time = 0;
xkbi = kbd->key->xkbInfo;
interest = kbd->xkb_interest; interest = kbd->xkb_interest;
if (!interest) if (!interest || !kbd->key || !kbd->key->xkbInfo)
return; return;
xkbi = kbd->key->xkbInfo;
initialized = 0; initialized = 0;
pEv->mods= xkbi->state.mods; pEv->mods= xkbi->state.mods;
pEv->group= xkbi->state.group; pEv->group= xkbi->state.group;
@ -1004,6 +1011,10 @@ unsigned long autoCtrls,autoValues;
ClientPtr client = NULL; ClientPtr client = NULL;
found= False; found= False;
if (!dev->key || !dev->key->xkbInfo)
return found;
autoCtrls= autoValues= 0; autoCtrls= autoValues= 0;
if ( dev->xkb_interest ) { if ( dev->xkb_interest ) {
interest = dev->xkb_interest; interest = dev->xkb_interest;