xkb: Extra sanity checks to prevent dev->key == NULL dereferencing.
This commit is contained in:
		
							parent
							
								
									a425abf0ea
								
							
						
					
					
						commit
						95fc59a199
					
				| 
						 | 
					@ -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;
 | 
				
			||||||
| 
						 | 
					@ -1016,6 +1023,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;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue