aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordvossel <dvossel@f38db490-d61c-443f-a65b-d21fe96a405b>2009-11-06 17:10:42 +0000
committerdvossel <dvossel@f38db490-d61c-443f-a65b-d21fe96a405b>2009-11-06 17:10:42 +0000
commit7418fa27f251c2ad1b44cf2f186462651295553a (patch)
tree6ff354175c729462a58b6052920eee515ebe61fc
parent200c0b5636015b0bb4846939633d14b42e710301 (diff)
Merged revisions 228420 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk ................ r228420 | dvossel | 2009-11-06 11:09:01 -0600 (Fri, 06 Nov 2009) | 19 lines 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: http://svn.digium.com/svn/asterisk/branches/1.6.0@228423 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r--codecs/codec_ilbc.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/codecs/codec_ilbc.c b/codecs/codec_ilbc.c
index dcef62dff..afa6b63f3 100644
--- a/codecs/codec_ilbc.c
+++ b/codecs/codec_ilbc.c
@@ -117,6 +117,11 @@ static int ilbctolin_framein(struct ast_trans_pvt *pvt, struct ast_frame *f)
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;