summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorphintuka <phintuka>2009-11-19 13:24:17 +0000
committerphintuka <phintuka>2009-11-19 13:24:17 +0000
commitd8f84e2f49b5808334448e2b42c0612154aa37df (patch)
treefe4e343285be4ee7e99a51eac9590569957e47ec
parent9e977bf8650766873edc51e6330766b2af9da8d0 (diff)
downloadxineliboutput-d8f84e2f49b5808334448e2b42c0612154aa37df.tar.gz
xineliboutput-d8f84e2f49b5808334448e2b42c0612154aa37df.tar.bz2
Fixed overflow when there are too many SPU tracks
-rw-r--r--xine/BluRay/demux_ts.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/xine/BluRay/demux_ts.c b/xine/BluRay/demux_ts.c
index f346fcf1..1d2e2bba 100644
--- a/xine/BluRay/demux_ts.c
+++ b/xine/BluRay/demux_ts.c
@@ -1491,6 +1491,14 @@ printf("Program Number is %i, looking for %i\n",program_number,this->program_num
if (this->hdmv > 0) {
if (pid >= 0x1200 && pid < 0x1300) {
/* HDMV Presentation Graphics / SPU */
+
+ if (this->spu_langs_count >= MAX_SPU_LANGS) {
+ xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG,
+ "demux_ts: too many SPU tracks ! ignoring pid 0x%.4x\n",
+ pid);
+ break;
+ }
+
demux_ts_spu_lang *lang = &this->spu_langs[this->spu_langs_count];
memset(lang->desc.lang, 0, sizeof(lang->desc.lang));