From 4aa48aaf92d711ba6d99086e9f808c790814d491 Mon Sep 17 00:00:00 2001 From: Benny Prijono Date: Fri, 11 Jan 2008 08:52:18 +0000 Subject: Fixed what looks like a bug in pjmedia's Speex decoder: decoder may return invalid PCM frame length git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1677 74dad513-b988-da41-8d7b-12977e46ad98 --- pjmedia/src/pjmedia-codec/speex_codec.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'pjmedia') diff --git a/pjmedia/src/pjmedia-codec/speex_codec.c b/pjmedia/src/pjmedia-codec/speex_codec.c index 955377bc..a01ccb06 100644 --- a/pjmedia/src/pjmedia-codec/speex_codec.c +++ b/pjmedia/src/pjmedia-codec/speex_codec.c @@ -772,8 +772,10 @@ static pj_status_t spx_codec_decode( pjmedia_codec *codec, spx = (struct spx_private*) codec->codec_data; + PJ_ASSERT_RETURN(output_buf_len >= 320, PJMEDIA_CODEC_EPCMTOOSHORT); + if (input->type != PJMEDIA_FRAME_TYPE_AUDIO) { - pj_bzero(output->buf, output_buf_len); + pjmedia_zero_samples((pj_int16_t*)output->buf, 160); output->size = 320; output->timestamp.u64 = input->timestamp.u64; output->type = PJMEDIA_FRAME_TYPE_AUDIO; @@ -787,8 +789,7 @@ static pj_status_t spx_codec_decode( pjmedia_codec *codec, speex_decode_int(spx->dec, &spx->dec_bits, (spx_int16_t*)output->buf); output->type = PJMEDIA_FRAME_TYPE_AUDIO; - output->size = speex_bits_nbytes(&spx->dec_bits); - pj_assert(output->size <= (unsigned)output_buf_len); + output->size = 320; output->timestamp.u64 = input->timestamp.u64; -- cgit v1.2.3