res_srtp: Prevent a crash from occurring due to srtp_create failures in srtp_create
authorJonathan Rose <jrose@digium.com>
Fri, 4 Jan 2013 23:14:54 +0000 (23:14 +0000)
committerJonathan Rose <jrose@digium.com>
Fri, 4 Jan 2013 23:14:54 +0000 (23:14 +0000)
commit9d5f6e050ef1a262cbac2ae88bf2b9e212c7dc14
tree85e6d82c30acd3368277be7242f540e1b330c8f6
parent9e814816cbeb3612da39b8096d69e42477cc7b5a
res_srtp: Prevent a crash from occurring due to srtp_create failures in srtp_create

Under some circumstances, libsrtp's srtp_create function deallocates memory that
it wasn't initially responsible for allocating. Because we weren't initially
aware of this behavior, this memory was still used in spite of being unallocated
during the course of the srtp_unprotect function. A while back I made a patch
which would set this value to NULL, but that exposed a possible condition where
we would then try to check a member of the struct which would cause a segfault.
In order to address these problems, ast_srtp_unprotect will now set an error value
when it ends without a valid SRTP session which will result in the caller of
srtp_unprotect observing this error and hanging up the relevant channel instead of
trying to keep using the invalid session address.

(closes issue ASTERISK-20499)
Reported by: Tootai
Review: https://reviewboard.asterisk.org/r/2228/diff/#index_header
........

Merged revisions 378591 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 378592 from http://svn.asterisk.org/svn/asterisk/branches/11

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@378593 65c4cc65-6c06-0410-ace0-fbb531ad65f3
res/res_srtp.c