summaryrefslogtreecommitdiffstats
path: root/libmpdemux/demux_mkv.cpp
diff options
context:
space:
mode:
authorattila <attila@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-10-26 21:09:37 +0000
committerattila <attila@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-10-26 21:09:37 +0000
commitbcfd5430908d309f80e35fbb1209d696b190178e (patch)
tree1db6f5751c52d8c686f1641bec990f1577b7dce2 /libmpdemux/demux_mkv.cpp
parenta904b9ba31ff857c615c870baf778a83a7072abc (diff)
downloadmpv-bcfd5430908d309f80e35fbb1209d696b190178e.tar.bz2
mpv-bcfd5430908d309f80e35fbb1209d696b190178e.tar.xz
* fix my 100l from before
* SSA is also ASS * avoid multiple segfaults when there are more then SUB_MAX_TEXT-1 lines at the same time git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@11277 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux/demux_mkv.cpp')
-rw-r--r--libmpdemux/demux_mkv.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/libmpdemux/demux_mkv.cpp b/libmpdemux/demux_mkv.cpp
index dd3d7fac6f..e4b462ba00 100644
--- a/libmpdemux/demux_mkv.cpp
+++ b/libmpdemux/demux_mkv.cpp
@@ -491,6 +491,12 @@ static void handle_subtitles(demuxer_t *d, KaxBlock *block, int64_t duration) {
line = 0;
mkv_d->subs.lines++;
+ if (mkv_d->subs.lines> SUB_MAX_TEXT - 1 )
+ {
+ mp_msg(MSGT_DEMUX, MSGL_WARN,"[mkv] Warning: too many sublines to render, skipping\n");
+ mkv_d->subs.lines--;
+ return;
+ }
s2 = mkv_d->subs.text[mkv_d->subs.lines - 1];
state = 0;
@@ -2357,10 +2363,11 @@ extern "C" int demux_mkv_open(demuxer_t *demuxer) {
sizeof(mkv_sh_sub_t));
demuxer->sub->id = track->xid;
- } else if (!(strcmp(track->codec_id, MKV_S_TEXTASCII) &&
+ } else if (strcmp(track->codec_id, MKV_S_TEXTASCII) &&
strcmp(track->codec_id, MKV_S_TEXTUTF8) &&
strcmp(track->codec_id, MKV_S_TEXTSSA) &&
- strcmp(track->codec_id, "S_SSA")))
+ strcmp(track->codec_id, "S_SSA") &&
+ strcmp(track->codec_id, "S_TEXT/ASS"))
mp_msg(MSGT_DEMUX, MSGL_ERR, "[mkv] Subtitle type '%s' is not "
"supported. Track will not be displayed.\n", track->codec_id);
else {
@@ -2374,7 +2381,8 @@ extern "C" int demux_mkv_open(demuxer_t *demuxer) {
if (!strcmp(track->codec_id, MKV_S_TEXTUTF8))
sub_utf8 = 1; // Force UTF-8 conversion.
if (!strcmp(track->codec_id, MKV_S_TEXTSSA) ||
- !strcmp(track->codec_id, "S_SSA")) {
+ !strcmp(track->codec_id, "S_SSA") ||
+ !strcmp(track->codec_id, "S_TEXT/ASS")) {
mkv_d->subtitle_type = MKV_SUBTYPE_SSA;
sub_utf8 = 1;
} else