Skip to content
Snippets Groups Projects
Commit ee5ecf3c authored by David Vossel's avatar David Vossel
Browse files

Merged revisions 228418 via svnmerge from

https://origsvn.digium.com/svn/asterisk/branches/1.4

........
  r228418 | dvossel | 2009-11-06 11:07:13 -0600 (Fri, 06 Nov 2009) | 13 lines
  
  fixes segfault in iLBC
  
  For reasons not yet known, it appears possible for an ast_frame
  to have a datalen greater than zero while the actual data is NULL
  during Packet Loss Concealment.  Most codecs don't support PLC so
  this doesn't affect them.  This patch catches the malformed frame
  and prevents the crash from occuring.  Additional efforts to determine
  why it is possible for a frame to look like this are still being
  investigated.
  
  (issue #16979)
........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@228420 65c4cc65-6c06-0410-ace0-fbb531ad65f3
parent 3f4328ed
Branches
Tags
No related merge requests found
...@@ -88,6 +88,11 @@ static int ilbctolin_framein(struct ast_trans_pvt *pvt, struct ast_frame *f) ...@@ -88,6 +88,11 @@ static int ilbctolin_framein(struct ast_trans_pvt *pvt, struct ast_frame *f)
int16_t *dst = pvt->outbuf.i16; int16_t *dst = pvt->outbuf.i16;
float tmpf[ILBC_SAMPLES]; float tmpf[ILBC_SAMPLES];
if (!f->data && f->datalen) {
ast_log(LOG_DEBUG, "issue 16070, ILIB ERROR. data = NULL datalen = %d src = %s\n", f->datalen, f->src ? f->src : "no src set");
f->datalen = 0;
}
if (f->datalen == 0) { /* native PLC, set fake f->datalen and clear plc_mode */ if (f->datalen == 0) { /* native PLC, set fake f->datalen and clear plc_mode */
f->datalen = ILBC_FRAME_LEN; f->datalen = ILBC_FRAME_LEN;
f->samples = ILBC_SAMPLES; f->samples = ILBC_SAMPLES;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment