lavf/id3v2: seek back to previous offset if header size is not matched
Makes ff_id3v2_read reset stream position at the end of ID3 data if the
header size is not matched (caused by an EOF for example).
Current behaviour (without the patch):
    filesize = 400
    id3 data size = 399
    file offset after ff_id3v2_read is 400 instead of 399
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
			
			
This commit is contained in:
		
							parent
							
								
									0c6b0409af
								
							
						
					
					
						commit
						b3b456b258
					
				@ -788,8 +788,10 @@ void ff_id3v2_read(AVFormatContext *s, const char *magic, ID3v2ExtraMeta **extra
 | 
			
		||||
        /* save the current offset in case there's nothing to read/skip */
 | 
			
		||||
        off = avio_tell(s->pb);
 | 
			
		||||
        ret = avio_read(s->pb, buf, ID3v2_HEADER_SIZE);
 | 
			
		||||
        if (ret != ID3v2_HEADER_SIZE)
 | 
			
		||||
        if (ret != ID3v2_HEADER_SIZE) {
 | 
			
		||||
            avio_seek(s->pb, off, SEEK_SET);
 | 
			
		||||
            break;
 | 
			
		||||
        }
 | 
			
		||||
        found_header = ff_id3v2_match(buf, magic);
 | 
			
		||||
        if (found_header) {
 | 
			
		||||
            /* parse ID3v2 header */
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user