diff --git a/main/channel.c b/main/channel.c index 61a5a36088..dfd1062aca 100644 --- a/main/channel.c +++ b/main/channel.c @@ -2513,6 +2513,17 @@ static struct ast_frame *__ast_read(struct ast_channel *chan, int dropaudio) ast_frame_dump(chan->name, f, "<<"); chan->fin = FRAMECOUNT_INC(chan->fin); + if (f && f->datalen == 0 && f->data) { + /* fix invalid pointer */ + f->data = NULL; +#ifdef AST_DEVMODE + ast_log(LOG_ERROR, "Found frame with src '%s' with datalen zero, but non-null data pointer!\n", f->src); + ast_frame_dump(chan->name, f, "<<"); +#else + ast_debug(3, "Found frame with src '%s' on channel '%s' with datalen zero, but non-null data pointer!\n", f->src, chan->name); +#endif + } + done: ast_channel_unlock(chan); return f;