diff options
author | Nanang Izzuddin <nanang@teluu.com> | 2008-05-13 19:24:45 +0000 |
---|---|---|
committer | Nanang Izzuddin <nanang@teluu.com> | 2008-05-13 19:24:45 +0000 |
commit | c1121e3755df307a83b3e562beafc20b069b19f0 (patch) | |
tree | 4d2d6b536d779a4f0f3f7620097baee8fe5c0e2e | |
parent | 7056ed05759237312c35a6a42706959f94a63b76 (diff) |
Resample port get frame may cause buffer overflow when downport returns non-audio frame
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1955 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r-- | pjmedia/src/pjmedia/resample_port.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/pjmedia/src/pjmedia/resample_port.c b/pjmedia/src/pjmedia/resample_port.c index 8898d6c8..44f7e39b 100644 --- a/pjmedia/src/pjmedia/resample_port.c +++ b/pjmedia/src/pjmedia/resample_port.c @@ -185,9 +185,11 @@ static pj_status_t resample_get_frame(pjmedia_port *this_port, if (tmp_frame.type != PJMEDIA_FRAME_TYPE_AUDIO) { frame->type = tmp_frame.type; frame->timestamp = tmp_frame.timestamp; - frame->size = tmp_frame.size; + /* Copy whatever returned as long as the buffer size is enough */ + frame->size = tmp_frame.size < rport->base.info.bytes_per_frame ? + tmp_frame.size : rport->base.info.bytes_per_frame; if (tmp_frame.size) - pj_memcpy(frame->buf, tmp_frame.buf, tmp_frame.size); + pjmedia_copy_samples(frame->buf, tmp_frame.buf, frame->size >> 1); return PJ_SUCCESS; } |