mirror of https://github.com/mpv-player/mpv
e74ffab36e
This happened with a .flac file inside an archive. It tried to seek
beyond the end of the archive entry in a format where seeking isn't
supported. stream_libarchive handles these situations by skipping data.
But when the end of the archive is reached, archive_read_data() returns
0. While libarchive didn't bother to fucking document this, they do say
it's supposed to work like read(), so I guess a return value of 0 really
means EOF. So change the "< 0" to "<= 0". Also add some error logging.
The same file actually worked without out of bounds reads when
extracted, so there still might be something very wrong.
(cherry picked from commit
|
||
---|---|---|
.. | ||
ai_alsa1x.c | ||
ai_oss.c | ||
ai_sndio.c | ||
audio_in.c | ||
audio_in.h | ||
cache.c | ||
cache_file.c | ||
cookies.c | ||
cookies.h | ||
dvb_tune.c | ||
dvb_tune.h | ||
dvbin.h | ||
frequencies.c | ||
frequencies.h | ||
rar.c | ||
rar.h | ||
stream.c | ||
stream.h | ||
stream_avdevice.c | ||
stream_bluray.c | ||
stream_cb.c | ||
stream_cdda.c | ||
stream_dvb.c | ||
stream_dvd.c | ||
stream_dvd_common.c | ||
stream_dvd_common.h | ||
stream_dvdnav.c | ||
stream_edl.c | ||
stream_file.c | ||
stream_lavf.c | ||
stream_libarchive.c | ||
stream_libarchive.h | ||
stream_memory.c | ||
stream_mf.c | ||
stream_null.c | ||
stream_rar.c | ||
stream_smb.c | ||
stream_tv.c | ||
tv.c | ||
tv.h | ||
tvi_def.h | ||
tvi_dummy.c | ||
tvi_v4l2.c |