SCTP: Stopped accepting SSRCs higher than max.

Seems to fix asan-related crash.

BUG=https://code.google.com/p/chromium/issues/detail?id=570261

Review URL: https://codereview.webrtc.org/1571853002

Cr-Commit-Position: refs/heads/master@{#11205}
This commit is contained in:
lally
2016-01-11 10:24:33 -08:00
committed by Commit bot
parent a9a1d2acaf
commit 27ed3cc28c
2 changed files with 20 additions and 6 deletions

View File

@ -729,7 +729,13 @@ bool SctpDataMediaChannel::AddStream(const StreamParams& stream) {
}
const uint32_t ssrc = stream.first_ssrc();
if (open_streams_.find(ssrc) != open_streams_.end()) {
if (ssrc >= cricket::kMaxSctpSid) {
LOG(LS_WARNING) << debug_name_ << "->Add(Send|Recv)Stream(...): "
<< "Not adding data stream '" << stream.id
<< "' with ssrc=" << ssrc
<< " because stream ssrc is too high.";
return false;
} else if (open_streams_.find(ssrc) != open_streams_.end()) {
LOG(LS_WARNING) << debug_name_ << "->Add(Send|Recv)Stream(...): "
<< "Not adding data stream '" << stream.id
<< "' with ssrc=" << ssrc

View File

@ -270,12 +270,14 @@ class SctpDataMediaChannelTest : public testing::Test,
ProcessMessagesUntilIdle();
}
void AddStream(int ssrc) {
bool AddStream(int ssrc) {
bool ret = true;
cricket::StreamParams p(cricket::StreamParams::CreateLegacy(ssrc));
chan1_->AddSendStream(p);
chan1_->AddRecvStream(p);
chan2_->AddSendStream(p);
chan2_->AddRecvStream(p);
ret = ret && chan1_->AddSendStream(p);
ret = ret && chan1_->AddRecvStream(p);
ret = ret && chan2_->AddSendStream(p);
ret = ret && chan2_->AddRecvStream(p);
return ret;
}
cricket::SctpDataMediaChannel* CreateChannel(
@ -504,6 +506,12 @@ TEST_F(SctpDataMediaChannelTest, EngineSignalsRightChannel) {
EXPECT_GT(channel1_ready_to_send_count(), prior_count);
}
TEST_F(SctpDataMediaChannelTest, RefusesHighNumberedChannels) {
SetupConnectedChannels();
EXPECT_TRUE(AddStream(1022));
EXPECT_FALSE(AddStream(1023));
}
// Flaky on Linux and Windows. See webrtc:4453.
#if defined(WEBRTC_WIN) || defined(WEBRTC_LINUX)
#define MAYBE_ReusesAStream DISABLED_ReusesAStream