forked from mirrors/linux
		
	ALSA: usb-audio: Fix potential out-of-bounds shift
syzbot spotted a potential out-of-bounds shift in the USB-audio format parser that receives the arbitrary shift value from the USB descriptor. Add a range check for avoiding the undefined behavior. Reported-by: syzbot+df7dc146ebdd6435eea3@syzkaller.appspotmail.com Cc: <stable@vger.kernel.org> Link: https://lore.kernel.org/r/20201209084552.17109-1-tiwai@suse.de Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
		
							parent
							
								
									e5fab13a7c
								
							
						
					
					
						commit
						43d5ca88df
					
				
					 1 changed files with 2 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -39,6 +39,8 @@ static u64 parse_audio_format_i_type(struct snd_usb_audio *chip,
 | 
			
		|||
	case UAC_VERSION_1:
 | 
			
		||||
	default: {
 | 
			
		||||
		struct uac_format_type_i_discrete_descriptor *fmt = _fmt;
 | 
			
		||||
		if (format >= 64)
 | 
			
		||||
			return 0; /* invalid format */
 | 
			
		||||
		sample_width = fmt->bBitResolution;
 | 
			
		||||
		sample_bytes = fmt->bSubframeSize;
 | 
			
		||||
		format = 1ULL << format;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue