From efcad39f778276296ef45e2f14427154841e911f Mon Sep 17 00:00:00 2001 From: "sprang@webrtc.org" Date: Tue, 25 Mar 2014 16:51:35 +0000 Subject: [PATCH] Fix race condition in RTPSEnder. In RTPSender::SendPayloadType(), payload_type_ should not be read without owning send_critsect_. BUG= R=pbos@webrtc.org, stefan@webrtc.org Review URL: https://webrtc-codereview.appspot.com/8199004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@5778 4adac7df-926f-26a2-2b94-8c16560cd09d --- webrtc/modules/rtp_rtcp/source/rtp_sender.cc | 5 ++++- webrtc/modules/rtp_rtcp/source/rtp_sender.h | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/webrtc/modules/rtp_rtcp/source/rtp_sender.cc b/webrtc/modules/rtp_rtcp/source/rtp_sender.cc index 747e9faa16..5027e738d4 100644 --- a/webrtc/modules/rtp_rtcp/source/rtp_sender.cc +++ b/webrtc/modules/rtp_rtcp/source/rtp_sender.cc @@ -275,7 +275,10 @@ int32_t RTPSender::DeRegisterSendPayload( return 0; } -int8_t RTPSender::SendPayloadType() const { return payload_type_; } +int8_t RTPSender::SendPayloadType() const { + CriticalSectionScoped cs(send_critsect_); + return payload_type_; +} int RTPSender::SendPayloadFrequency() const { return audio_ != NULL ? audio_->AudioFrequency() : kVideoPayloadTypeFrequency; diff --git a/webrtc/modules/rtp_rtcp/source/rtp_sender.h b/webrtc/modules/rtp_rtcp/source/rtp_sender.h index 665dbd7292..5cd21be609 100644 --- a/webrtc/modules/rtp_rtcp/source/rtp_sender.h +++ b/webrtc/modules/rtp_rtcp/source/rtp_sender.h @@ -344,7 +344,7 @@ class RTPSender : public RTPSenderInterface, public Bitrate::Observer { uint16_t target_send_bitrate_; uint16_t packet_over_head_; - int8_t payload_type_; + int8_t payload_type_ GUARDED_BY(send_critsect_); std::map payload_type_map_; RtpHeaderExtensionMap rtp_header_extension_map_;