diff options
author | Diego 'Flameeyes' Pettenò <flameeyes@gmail.com> | 2008-04-14 22:38:03 +0200 |
---|---|---|
committer | Diego 'Flameeyes' Pettenò <flameeyes@gmail.com> | 2008-04-14 22:38:03 +0200 |
commit | 035a78427ad774878e168f35e515d5d7417501fd (patch) | |
tree | 88ccf0d066e5122cf050708ecdca313a06bc8fff /src/libxineadec/xine_speex_decoder.c | |
parent | a13815e68127caa42c0f1040506755ba18f83f4c (diff) | |
download | xine-lib-1.1.12.tar.gz xine-lib-1.1.12.tar.bz2 |
Add boundary check on speex mode, see bug #83.xine-lib-1_1_12-release1.1.12
--HG--
extra : transplant_source : %80%19%15%EAL%B3%1EAl%11RF%E7%BB%7FHa%2A%C5%1A
Diffstat (limited to 'src/libxineadec/xine_speex_decoder.c')
-rw-r--r-- | src/libxineadec/xine_speex_decoder.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/libxineadec/xine_speex_decoder.c b/src/libxineadec/xine_speex_decoder.c index aa8234385..2804b1308 100644 --- a/src/libxineadec/xine_speex_decoder.c +++ b/src/libxineadec/xine_speex_decoder.c @@ -204,7 +204,7 @@ static void speex_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) { if (!this->st) { SpeexMode * spx_mode; SpeexHeader * spx_header; - int modeID; + unsigned int modeID; int bitrate; speex_bits_init (&this->bits); @@ -216,7 +216,12 @@ static void speex_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) { return; } - modeID = spx_header->mode; + modeID = (unsigned int)spx_header->mode; + if (modeID >= SPEEX_NB_MODES) { + xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, LOG_MODULE ": invalid mode ID %u\n", modeID); + return; + } + spx_mode = (SpeexMode *) speex_mode_list[modeID]; if (spx_mode->bitstream_version != spx_header->mode_bitstream_version) { |