oggparsevorbis: check channels
Fixes out of array accesses Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
		
							parent
							
								
									2f7465b5bf
								
							
						
					
					
						commit
						1d29624c73
					
				| @ -230,6 +230,7 @@ vorbis_header (AVFormatContext * s, int idx) | |||||||
|         const uint8_t *p = os->buf + os->pstart + 7; /* skip "\001vorbis" tag */ |         const uint8_t *p = os->buf + os->pstart + 7; /* skip "\001vorbis" tag */ | ||||||
|         unsigned blocksize, bs0, bs1; |         unsigned blocksize, bs0, bs1; | ||||||
|         int srate; |         int srate; | ||||||
|  |         int channels; | ||||||
| 
 | 
 | ||||||
|         if (os->psize != 30) |         if (os->psize != 30) | ||||||
|             return -1; |             return -1; | ||||||
| @ -237,7 +238,12 @@ vorbis_header (AVFormatContext * s, int idx) | |||||||
|         if (bytestream_get_le32(&p) != 0) /* vorbis_version */ |         if (bytestream_get_le32(&p) != 0) /* vorbis_version */ | ||||||
|             return -1; |             return -1; | ||||||
| 
 | 
 | ||||||
|         st->codec->channels = bytestream_get_byte(&p); |         channels= bytestream_get_byte(&p); | ||||||
|  |         if (st->codec->channels && channels != st->codec->channels) { | ||||||
|  |             av_log(s, AV_LOG_ERROR, "Channel change is not supported\n"); | ||||||
|  |             return AVERROR_PATCHWELCOME; | ||||||
|  |         } | ||||||
|  |         st->codec->channels = channels; | ||||||
|         srate = bytestream_get_le32(&p); |         srate = bytestream_get_le32(&p); | ||||||
|         p += 4; // skip maximum bitrate
 |         p += 4; // skip maximum bitrate
 | ||||||
|         st->codec->bit_rate = bytestream_get_le32(&p); // nominal bitrate
 |         st->codec->bit_rate = bytestream_get_le32(&p); // nominal bitrate
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user