summaryrefslogtreecommitdiff
path: root/pjmedia
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2008-01-11 08:52:18 +0000
committerBenny Prijono <bennylp@teluu.com>2008-01-11 08:52:18 +0000
commit4aa48aaf92d711ba6d99086e9f808c790814d491 (patch)
tree98604ca559e467ebaf1d023c94919e2ca042aa0a /pjmedia
parent74979b76df1d1ab40cc3c0d5fc3e5ac95ab357b6 (diff)
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
Diffstat (limited to 'pjmedia')
-rw-r--r--pjmedia/src/pjmedia-codec/speex_codec.c7
1 files changed, 4 insertions, 3 deletions
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;