[svn-commits] dvossel: branch 1.4 r228418 - /branches/1.4/codecs/codec_ilbc.c

SVN commits to the Digium repositories svn-commits at lists.digium.com
Fri Nov 6 11:07:17 CST 2009


Author: dvossel
Date: Fri Nov  6 11:07:13 2009
New Revision: 228418

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=228418
Log:
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)


Modified:
    branches/1.4/codecs/codec_ilbc.c

Modified: branches/1.4/codecs/codec_ilbc.c
URL: http://svnview.digium.com/svn/asterisk/branches/1.4/codecs/codec_ilbc.c?view=diff&rev=228418&r1=228417&r2=228418
==============================================================================
--- branches/1.4/codecs/codec_ilbc.c (original)
+++ branches/1.4/codecs/codec_ilbc.c Fri Nov  6 11:07:13 2009
@@ -127,6 +127,11 @@
 	int16_t *dst = (int16_t *)pvt->outbuf;
 	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 */
 		f->datalen = ILBC_FRAME_LEN;
 		f->samples = ILBC_SAMPLES;




More information about the svn-commits mailing list