From: Richard Mudgett Date: Wed, 29 Jul 2015 22:00:05 +0000 (-0500) Subject: res_rtp_asterisk.c: Fix off-nominal crash potential. X-Git-Tag: 14.0.0-beta1~761^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=33a465249b4688b83684e182c4bb26c6fcd7d2a3;p=thirdparty%2Fasterisk.git res_rtp_asterisk.c: Fix off-nominal crash potential. ASTERISK-25296 Reported by: Richard Mudgett Change-Id: I08549fb7c3ab40a559f41a3940f3732a4059b55b --- diff --git a/res/res_rtp_asterisk.c b/res/res_rtp_asterisk.c index 53e9b29c23..e5005b34f8 100644 --- a/res/res_rtp_asterisk.c +++ b/res/res_rtp_asterisk.c @@ -4504,6 +4504,10 @@ static struct ast_frame *ast_rtp_read(struct ast_rtp_instance *instance, int rtc } payload = ast_rtp_codecs_get_payload(ast_rtp_instance_get_codecs(instance), payloadtype); + if (!payload) { + /* Unknown payload type. */ + return AST_LIST_FIRST(&frames) ? AST_LIST_FIRST(&frames) : &ast_null_frame; + } /* If the payload is not actually an Asterisk one but a special one pass it off to the respective handler */ if (!payload->asterisk_format) { @@ -4530,10 +4534,7 @@ static struct ast_frame *ast_rtp_read(struct ast_rtp_instance *instance, int rtc /* Even if no frame was returned by one of the above methods, * we may have a frame to return in our frame list */ - if (!AST_LIST_EMPTY(&frames)) { - return AST_LIST_FIRST(&frames); - } - return &ast_null_frame; + return AST_LIST_FIRST(&frames) ? AST_LIST_FIRST(&frames) : &ast_null_frame; } ao2_replace(rtp->lastrxformat, payload->format);