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 stream/audio: fix unchecked strdups 2015-10-30 15:51:26 +01:00
ai_oss.c build: simplify OSS checks and remove changes by "bugmen0t" 2017-06-22 13:17:14 +02:00
ai_sndio.c stream/audio: fix unchecked strdups 2015-10-30 15:51:26 +01:00
audio_in.c stream/audio: fix unchecked strdups 2015-10-30 15:51:26 +01:00
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 Relicense some non-MPlayer source files to LGPL 2.1 or later 2016-01-19 18:36:06 +01:00
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 mpv_talloc.h: rename from talloc.h 2016-01-11 21:05:55 +01:00
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: get rid of streamtype enum 2017-02-02 18:26:58 +01:00
stream_bluray.c stream_bluray: change license to LGPL 2017-06-26 19:25:22 +02:00
stream_cb.c stream_cb: don't add "*://" to protocol list 2016-09-10 15:35:22 +02:00
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: fix subs/audio detection on DVDs containing multi-PGC titles 2017-03-15 02:54:18 +01:00
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: get rid of streamtype enum 2017-02-02 18:26:58 +01:00
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_null: change license to LGPL 2017-05-08 12:45:50 +02:00
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 stream: get rid of streamtype enum 2017-02-02 18:26:58 +01:00
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