Fix crash of ObjC SDK sLD / sRD with incorrect SDP.

There are two problems with setLocalDescription / setRemoteDescription
in ObjC SDK.
First, RTCSessionDescription.nativeDescription returns a raw
nullableSessionDescriptionInterface pointer, where sLD/sRD are calling
Clone() method unconditionally, so it might crash.
Second, unnecessary sLD/sRD calls Clone() of the raw pointer and
does not delete it, so this pointer will leak.

To solve these problems, I changed the return type of nativeDescription to
std::unique_ptr and removed the call to Clone() method.

Bug: webrtc:13022, webrtc:13035
Change-Id: Icbb87dda62d3a11af47ec74621cf64b8a6c05228
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/227380
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Byoungchan Lee <daniel.l@hpcnt.com>
Cr-Commit-Position: refs/heads/master@{#34647}
This commit is contained in:
Byoungchan Lee
2021-08-04 20:54:45 +09:00
committed by WebRTC LUCI CQ
parent 31c0cfdf7f
commit 33728152ca
5 changed files with 46 additions and 9 deletions

View File

@ -31,7 +31,7 @@
RTC_OBJC_TYPE(RTCSessionDescription) *description =
[[RTC_OBJC_TYPE(RTCSessionDescription) alloc] initWithType:RTCSdpTypeAnswer sdp:[self sdp]];
webrtc::SessionDescriptionInterface *nativeDescription =
std::unique_ptr<webrtc::SessionDescriptionInterface> nativeDescription =
description.nativeDescription;
EXPECT_EQ(RTCSdpTypeAnswer,