libavformat/oggdec.c: Check return value from avio_read()
If the buffer doesn't contain enough bytes when reading a stream, fail rather than continuing on with unitialized data. Caught by Chromium fuzzers (crbug.com/1054229). Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> (cherry picked from commit b7c67b1ae3657058b32b9235119d07529ad5cce1) Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
		
							parent
							
								
									12a53bf673
								
							
						
					
					
						commit
						cd655e4c0d
					
				| @ -216,7 +216,8 @@ static int ogg_replace_stream(AVFormatContext *s, uint32_t serial, int nsegs) | ||||
|         uint8_t magic[8]; | ||||
|         int64_t pos = avio_tell(s->pb); | ||||
|         avio_skip(s->pb, nsegs); | ||||
|         avio_read(s->pb, magic, sizeof(magic)); | ||||
|         if (avio_read(s->pb, magic, sizeof(magic)) != sizeof(magic)) | ||||
|             return AVERROR_INVALIDDATA; | ||||
|         avio_seek(s->pb, pos, SEEK_SET); | ||||
|         codec = ogg_find_codec(magic, sizeof(magic)); | ||||
|         if (!codec) { | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user