mpv/stream
wm4 bf111f9c3c stream_libarchive: fix seeking fallback
In commit 1199c1e3, we added checks to every libarchive API call to make
sure the archive was closed on ARCHIVE_FATAL - otherwise, libarchive
could endow us with free CVEs (such as it apparently happens when you
continue reading a rar archive that uses features not yet supported by
libarchive).

This broke the fallback for seeking in unseekable archive formats. Of
course libarchive won't tell us directly whether a format implementation
has seek support or not - and OF COURSE it returns ARCHIVE_FATAL if it
has no seek support. (The error string, which you can retrieve via API,
is actually more detailed, and also claims it's an "internal error". I
don't think so, libarchive.) Returning ARCHIVE_FATAL means we have to
assume free CVEs are ahead, and we have to close the archive. Which
breaks the fallback in a dumb way (we have no way of telling which of
those cases happened anyway).

Fix this by assuming that all seek errors are potentially due to lack of
seek support. If the seek call fails, reopen the archive, and set a flag
so the seek API is never tried again. (This means we can still skip
ahead for forward seeks, which is more efficient than skipping from the
start of the archive entry.)

Also fix an old typo in an error message.
2017-12-24 21:33:16 +01:00
..
ai_alsa1x.c
ai_oss.c build: simplify OSS checks and remove changes by "bugmen0t" 2017-06-22 13:17:14 +02:00
ai_sndio.c
audio_in.c
audio_in.h Add checks for HAVE_GPL to various GPL-only source files 2017-10-10 15:51:16 +02:00
cache.c cache: propagate underlying stream seek errors in some cases 2017-12-24 21:33:16 +01:00
cache_file.c
cookies.c cookies: change license to LGPL 2017-05-11 07:29:01 +02:00
cookies.h cookies: change license to LGPL 2017-05-11 07:29:01 +02:00
dvb_tune.c dvb: Add multiple frontends support: MAX_FRONTENDS now 8. 2017-12-16 23:24:55 -08:00
dvb_tune.h dvb: Add multiple frontends support: MAX_FRONTENDS now 8. 2017-12-16 23:24:55 -08:00
dvbin.h dvb: Add multiple frontends support: MAX_FRONTENDS now 8. 2017-12-16 23:24:55 -08:00
frequencies.c
frequencies.h Add checks for HAVE_GPL to various GPL-only source files 2017-10-10 15:51:16 +02:00
rar.c
rar.h
stream.c msg: reinterpret a bunch of message levels 2017-12-15 22:28:47 -08:00
stream.h stream: change license to LGPL 2017-06-19 16:10:10 +02:00
stream_avdevice.c
stream_bluray.c stream_bluray: change license to LGPL 2017-06-26 19:25:22 +02:00
stream_cb.c
stream_cdda.c Add checks for HAVE_GPL to various GPL-only source files 2017-10-10 15:51:16 +02:00
stream_dvb.c dvb: Add multiple frontends support: MAX_FRONTENDS now 8. 2017-12-16 23:24:55 -08:00
stream_dvd.c
stream_dvd_common.c
stream_dvd_common.h Add checks for HAVE_GPL to various GPL-only source files 2017-10-10 15:51:16 +02:00
stream_dvdnav.c Add checks for HAVE_GPL to various GPL-only source files 2017-10-10 15:51:16 +02:00
stream_edl.c
stream_file.c stream_file: option to close fd after use -> fdclose:// 2017-06-16 22:48:44 +02:00
stream_lavf.c stream_lavf: use avio_read_partial() 2017-09-01 17:59:03 +02:00
stream_libarchive.c stream_libarchive: fix seeking fallback 2017-12-24 21:33:16 +01:00
stream_libarchive.h stream_libarchive: Fix locale includes on macOS 2017-12-03 21:54:12 +01:00
stream_memory.c vo_opengl: support loading custom user textures 2017-07-27 23:51:05 +02:00
stream_mf.c demux_mf, stream_mf: change license to LGPL 2017-06-24 13:28:01 +02:00
stream_null.c
stream_rar.c
stream_smb.c Add checks for HAVE_GPL to various GPL-only source files 2017-10-10 15:51:16 +02:00
stream_tv.c
tv.c Drop/move img_fourcc.h 2017-06-18 15:13:45 +02:00
tv.h Add checks for HAVE_GPL to various GPL-only source files 2017-10-10 15:51:16 +02:00
tvi_def.h Drop/move img_fourcc.h 2017-06-18 15:13:45 +02:00
tvi_dummy.c Drop/move img_fourcc.h 2017-06-18 15:13:45 +02:00
tvi_v4l2.c Drop/move img_fourcc.h 2017-06-18 15:13:45 +02:00