summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNanang Izzuddin <nanang@teluu.com>2008-05-13 19:24:45 +0000
committerNanang Izzuddin <nanang@teluu.com>2008-05-13 19:24:45 +0000
commitc1121e3755df307a83b3e562beafc20b069b19f0 (patch)
tree4d2d6b536d779a4f0f3f7620097baee8fe5c0e2e
parent7056ed05759237312c35a6a42706959f94a63b76 (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.c6
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;
}