- Fixed dangerous playlist parsingel8
parent
2b7bd92231
commit
48c1538de5
@ -0,0 +1,111 @@
|
||||
Index: asxparser.c
|
||||
===================================================================
|
||||
--- asxparser.c (wersja 36241)
|
||||
+++ asxparser.c (wersja 36242)
|
||||
@@ -388,7 +388,7 @@
|
||||
|
||||
static void
|
||||
asx_parse_param(ASX_Parser_t* parser, char** attribs, play_tree_t* pt) {
|
||||
- char *name,*val;
|
||||
+ char *name = NULL,*val = NULL;
|
||||
|
||||
name = asx_get_attrib("NAME",attribs);
|
||||
if(!name) {
|
||||
@@ -402,9 +402,11 @@
|
||||
mp_msg(MSGT_PLAYTREE,MSGL_WARN,"=%s\n",val);
|
||||
else
|
||||
mp_msg(MSGT_PLAYTREE,MSGL_WARN,"\n");
|
||||
- return;
|
||||
+ goto err_out;
|
||||
}
|
||||
- play_tree_set_param(pt,name,val);
|
||||
+ mp_msg(MSGT_PLAYTREE, MSGL_ERR, "Support for specifying parameters in playlists has been disabled.\n");
|
||||
+// play_tree_set_param(pt,name,val);
|
||||
+err_out:
|
||||
free(name);
|
||||
free(val);
|
||||
}
|
||||
Index: DOCS/man/en/mplayer.1
|
||||
===================================================================
|
||||
--- DOCS/man/en/mplayer.1 (wersja 36241)
|
||||
+++ DOCS/man/en/mplayer.1 (wersja 36242)
|
||||
@@ -1259,6 +1259,15 @@
|
||||
Play files according to a playlist file (ASX, Winamp, SMIL, or
|
||||
one-file-per-line format).
|
||||
.br
|
||||
+.I WARNING:
|
||||
+The way MPlayer parses and uses playlist files is not safe against
|
||||
+maliciously constructed files.
|
||||
+Such files may trigger harmful actions.
|
||||
+This has been the case for all MPlayer versions, but unfortunately this
|
||||
+fact was not well documented earlier, and some people have even misguidedly
|
||||
+recommended use of -playlist with untrusted sources.
|
||||
+Do NOT use -playlist with random internet sources or files you don't trust!
|
||||
+.br
|
||||
.I NOTE:
|
||||
This option is considered an entry so options found after it will apply
|
||||
only to the elements of this playlist.
|
||||
@@ -1266,6 +1275,13 @@
|
||||
FIXME: This needs to be clarified and documented thoroughly.
|
||||
.
|
||||
.TP
|
||||
+.B \-allow-dangerous-playlist-parsing
|
||||
+This enables parsing any file as a playlist if e.g. a server advertises
|
||||
+a file as playlist.
|
||||
+Only enable if you know all servers involved are trustworthy.
|
||||
+MPlayer's playlist code is not designed to handle malicious playlist files.
|
||||
+.
|
||||
+.TP
|
||||
.B \-rtc\-device <device>
|
||||
Use the specified device for RTC timing.
|
||||
.
|
||||
Index: mplayer.c
|
||||
===================================================================
|
||||
--- mplayer.c (wersja 36241)
|
||||
+++ mplayer.c (wersja 36242)
|
||||
@@ -328,6 +328,8 @@
|
||||
static int crash_debug;
|
||||
#endif
|
||||
|
||||
+static int allow_playlist_parsing;
|
||||
+
|
||||
/* This header requires all the global variable declarations. */
|
||||
#include "cfg-mplayer.h"
|
||||
|
||||
@@ -3234,8 +3236,12 @@
|
||||
current_module = "handle_playlist";
|
||||
mp_msg(MSGT_CPLAYER, MSGL_V, "Parsing playlist %s...\n",
|
||||
filename_recode(filename));
|
||||
- entry = parse_playtree(mpctx->stream, use_gui);
|
||||
- mpctx->eof = playtree_add_playlist(entry);
|
||||
+ if (allow_playlist_parsing) {
|
||||
+ entry = parse_playtree(mpctx->stream, use_gui);
|
||||
+ mpctx->eof = playtree_add_playlist(entry);
|
||||
+ } else {
|
||||
+ mp_msg(MSGT_CPLAYER, MSGL_ERR, "Playlist parsing disabled for security reasons. Ignoring file.\n");
|
||||
+ }
|
||||
goto goto_next_file;
|
||||
}
|
||||
mpctx->stream->start_pos += seek_to_byte;
|
||||
Index: cfg-mplayer.h
|
||||
===================================================================
|
||||
--- cfg-mplayer.h (wersja 36241)
|
||||
+++ cfg-mplayer.h (wersja 36242)
|
||||
@@ -306,6 +306,8 @@
|
||||
|
||||
{"noloop", &mpctx_s.loop_times, CONF_TYPE_FLAG, 0, 0, -1, NULL},
|
||||
{"loop", &mpctx_s.loop_times, CONF_TYPE_INT, CONF_RANGE, -1, 10000, NULL},
|
||||
+ {"allow-dangerous-playlist-parsing", &allow_playlist_parsing, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
+ {"noallow-dangerous-playlist-parsing", &allow_playlist_parsing, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"playlist", NULL, CONF_TYPE_STRING, CONF_NOCFG, 0, 0, NULL},
|
||||
{"shuffle", NULL, CONF_TYPE_FLAG, CONF_NOCFG, 0, 0, NULL},
|
||||
{"noshuffle", NULL, CONF_TYPE_FLAG, CONF_NOCFG, 0, 0, NULL},
|
||||
Index: .
|
||||
===================================================================
|
||||
--- . (wersja 36241)
|
||||
+++ . (wersja 36242)
|
||||
|
||||
Zmiany atrybutów dla: .
|
||||
___________________________________________________________________
|
||||
Added: svn:mergeinfo
|
||||
Połączono zmiany /trunk:r36238-36241
|
Loading…
Reference in new issue