summaryrefslogtreecommitdiffstats
path: root/player/loadfile.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2015-03-02 19:09:36 +0100
committerwm4 <wm4@nowhere>2015-03-02 19:09:36 +0100
commita4b6bf8c41b54554286117b97e78412a32b5147f (patch)
treefa745bdb50a2cf0c51e99aa710b042a2e75eba08 /player/loadfile.c
parent01b87e509c292189acdd96bc7a216b50eafbce9e (diff)
downloadmpv-a4b6bf8c41b54554286117b97e78412a32b5147f.tar.bz2
mpv-a4b6bf8c41b54554286117b97e78412a32b5147f.tar.xz
player: refine rar:// playlist-safety handling
It was possible to make the player play local files by putting rar:// links into remote playlists, and some other potentially unsafe things. Redo the handling of it. Now the rar-redirector (the thing in demux_playlist.c) sets disable_safety, which makes the player open any playlist entries returned. This is fine, because it redirects to the same file anyway (just with different selection/interpretation of the contents). On the other hand, rar:// itself is now considered fully unsafe, which means that it is ignored if found in normal playlists.
Diffstat (limited to 'player/loadfile.c')
-rw-r--r--player/loadfile.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/player/loadfile.c b/player/loadfile.c
index 36d0e4e786..5e78ed430c 100644
--- a/player/loadfile.c
+++ b/player/loadfile.c
@@ -1112,10 +1112,13 @@ goto_reopen_demuxer: ;
load_timeline(mpctx);
if (mpctx->demuxer->playlist) {
- int entry_stream_flags =
- (mpctx->demuxer->stream->safe_origin ? 0 : STREAM_SAFE_ONLY) |
- (mpctx->demuxer->stream->is_network ? STREAM_NETWORK_ONLY : 0);
struct playlist *pl = mpctx->demuxer->playlist;
+ int entry_stream_flags = 0;
+ if (!pl->disable_safety) {
+ entry_stream_flags = STREAM_SAFE_ONLY;
+ if (mpctx->demuxer->stream->is_network)
+ entry_stream_flags |= STREAM_NETWORK_ONLY;
+ }
for (struct playlist_entry *e = pl->first; e; e = e->next)
e->stream_flags |= entry_stream_flags;
transfer_playlist(mpctx, pl);