From d8f84e2f49b5808334448e2b42c0612154aa37df Mon Sep 17 00:00:00 2001 From: phintuka Date: Thu, 19 Nov 2009 13:24:17 +0000 Subject: Fixed overflow when there are too many SPU tracks --- xine/BluRay/demux_ts.c | 8 ++++++++ 1 file changed, 8 insertions(+) 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)); -- cgit v1.2.3