diff options
author | Peter Hutterer <peter.hutterer@redhat.com> | 2008-11-28 14:55:15 +1000 |
---|---|---|
committer | Adam Jackson <ajax@redhat.com> | 2008-12-16 14:19:00 -0500 |
commit | 4970d757a7364c1d2fb4db4e404e88e8ad989ddb (patch) | |
tree | 89827332570f87b00291e9222692519092929fe5 | |
parent | 336df75f12ff9ba1d210f24285a8d5f54341001d (diff) |
xkb: Extra sanity checks to prevent dev->key == NULL dereferencing.
(cherry picked from commit 95fc59a199f99bf167fbb09297a9bb0e33e31869)
-rw-r--r-- | xkb/xkbEvents.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/xkb/xkbEvents.c b/xkb/xkbEvents.c index 49725d065..36084cc02 100644 --- a/xkb/xkbEvents.c +++ b/xkb/xkbEvents.c @@ -109,7 +109,7 @@ Time time; register CARD16 changed,bState; interest = kbd->xkb_interest; - if (!interest) + if (!interest || !kbd->key || !kbd->key->xkbInfo) return; xkbi = kbd->key->xkbInfo; state= &xkbi->state; @@ -168,6 +168,9 @@ XkbSrvInfoPtr xkbi; unsigned time = 0,initialized; CARD16 changed; + if (!kbd->key || !kbd->key->xkbInfo) + return; + xkbi = kbd->key->xkbInfo; initialized= 0; @@ -291,7 +294,7 @@ XkbInterestPtr interest; Time time = 0; interest = kbd->xkb_interest; - if (!interest) + if (!interest || !kbd->key || !kbd->key->xkbInfo) return; xkbi = kbd->key->xkbInfo; @@ -401,6 +404,9 @@ CARD16 pitch,duration; Time time = 0; XID winID = 0; + if (!kbd->key || !kbd->key->xkbInfo) + return; + xkbi = kbd->key->xkbInfo; if ((force||(xkbi->desc->ctrls->enabled_ctrls&XkbAudibleBellMask))&& @@ -616,11 +622,12 @@ XkbSrvInfoPtr xkbi; XkbInterestPtr interest; Time time = 0; - xkbi = kbd->key->xkbInfo; interest = kbd->xkb_interest; - if (!interest) + if (!interest || !kbd->key || !kbd->key->xkbInfo) return; + xkbi = kbd->key->xkbInfo; + initialized = 0; pEv->mods= xkbi->state.mods; pEv->group= xkbi->state.group; @@ -996,6 +1003,10 @@ unsigned long autoCtrls,autoValues; ClientPtr client = NULL; found= False; + + if (!dev->key || !dev->key->xkbInfo) + return found; + autoCtrls= autoValues= 0; if ( dev->xkb_interest ) { interest = dev->xkb_interest; |