From 5bfe2bac676592656c7c8645daf57b03803f7b4a Mon Sep 17 00:00:00 2001 From: Tristan Matthews <tristan.matthews@savoirfairelinux.com> Date: Fri, 27 Apr 2012 13:44:47 -0400 Subject: [PATCH] * 100016: don't double free crypto contexts, and don't improperly copy CryptoSuiteDefinitions --- daemon/src/audio/audiortp/audio_rtp_factory.cpp | 4 ---- daemon/src/audio/audiortp/audio_srtp_session.cpp | 11 ++--------- daemon/src/audio/audiortp/audio_srtp_session.h | 4 ---- 3 files changed, 2 insertions(+), 17 deletions(-) diff --git a/daemon/src/audio/audiortp/audio_rtp_factory.cpp b/daemon/src/audio/audiortp/audio_rtp_factory.cpp index 0eb046abe9..4747834738 100644 --- a/daemon/src/audio/audiortp/audio_rtp_factory.cpp +++ b/daemon/src/audio/audiortp/audio_rtp_factory.cpp @@ -50,10 +50,6 @@ AudioRtpFactory::AudioRtpFactory(SIPCall *ca) : rtpSession_(NULL), AudioRtpFactory::~AudioRtpFactory() { - AudioSrtpSession* srtpSession = dynamic_cast<AudioSrtpSession*>(rtpSession_); - if (srtpSession) - srtpSession->deleteCryptoContexts(); - delete rtpSession_; } diff --git a/daemon/src/audio/audiortp/audio_srtp_session.cpp b/daemon/src/audio/audiortp/audio_srtp_session.cpp index 630d3ce94c..b6c3d94df8 100644 --- a/daemon/src/audio/audiortp/audio_srtp_session.cpp +++ b/daemon/src/audio/audiortp/audio_srtp_session.cpp @@ -262,7 +262,7 @@ void AudioSrtpSession::initializeRemoteCryptoContext() { DEBUG("AudioSrtp: Initialize remote crypto context"); - CryptoSuiteDefinition crypto = sfl::CryptoSuites[remoteCryptoSuite_]; + const CryptoSuiteDefinition &crypto = sfl::CryptoSuites[remoteCryptoSuite_]; delete remoteCryptoCtx_; remoteCryptoCtx_ = new ost::CryptoContext(0x0, @@ -285,7 +285,7 @@ void AudioSrtpSession::initializeLocalCryptoContext() { DEBUG("AudioSrtp: Initialize local crypto context"); - CryptoSuiteDefinition crypto = sfl::CryptoSuites[localCryptoSuite_]; + const CryptoSuiteDefinition &crypto = sfl::CryptoSuites[localCryptoSuite_]; delete localCryptoCtx_; localCryptoCtx_ = new ost::CryptoContext(OutgoingDataQueue::getLocalSSRC(), @@ -318,11 +318,4 @@ void AudioSrtpSession::restoreCryptoContext(ost::CryptoContext *localContext, setOutQueueCryptoContext(localCryptoCtx_); } -void AudioSrtpSession::deleteCryptoContexts() -{ - delete remoteCryptoCtx_; - remoteCryptoCtx_ = 0; - delete localCryptoCtx_; - localCryptoCtx_ = 0; -} } diff --git a/daemon/src/audio/audiortp/audio_srtp_session.h b/daemon/src/audio/audiortp/audio_srtp_session.h index 733e0cfb22..a84cfccc84 100644 --- a/daemon/src/audio/audiortp/audio_srtp_session.h +++ b/daemon/src/audio/audiortp/audio_srtp_session.h @@ -101,10 +101,6 @@ class AudioSrtpSession : public AudioSymmetricRtpSession { */ void restoreCryptoContext(ost::CryptoContext *, ost::CryptoContext *); - /** - * Force deletion of the current crypto contexts. - */ - void deleteCryptoContexts(); private: NON_COPYABLE(AudioSrtpSession); -- GitLab