Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(298)

Unified Diff: extensions/browser/api/display_source/wifi_display/wifi_display_media_service_impl.cc

Issue 2513053003: Fix double-free in displaySource API (Closed)
Patch Set: . Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: extensions/browser/api/display_source/wifi_display/wifi_display_media_service_impl.cc
diff --git a/extensions/browser/api/display_source/wifi_display/wifi_display_media_service_impl.cc b/extensions/browser/api/display_source/wifi_display/wifi_display_media_service_impl.cc
index c7e3eb5a0444c54333bd318ee5f7f96a79b5bac8..c90e81557bead453e6d6a9d11130cb088065f685 100644
--- a/extensions/browser/api/display_source/wifi_display/wifi_display_media_service_impl.cc
+++ b/extensions/browser/api/display_source/wifi_display/wifi_display_media_service_impl.cc
@@ -43,9 +43,9 @@ WiFiDisplayMediaServiceImpl::PacketIOBuffer::~PacketIOBuffer() {
void WiFiDisplayMediaServiceImpl::Create(
WiFiDisplayMediaServiceRequest request) {
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
- mojo::MakeStrongBinding(std::unique_ptr<WiFiDisplayMediaServiceImpl>(
- new WiFiDisplayMediaServiceImpl),
- std::move(request));
+ auto* impl = new WiFiDisplayMediaServiceImpl();
+ impl->binding_ =
+ mojo::MakeStrongBinding(base::WrapUnique(impl), std::move(request));
}
// static
@@ -123,7 +123,7 @@ void WiFiDisplayMediaServiceImpl::OnSent(int code) {
last_send_code_ = code;
if (code < 0) {
VLOG(1) << "Unrepairable UDP socket error.";
- delete this;
+ binding_.Close();
return;
}
DCHECK(!write_buffers_.empty());

Powered by Google App Engine
This is Rietveld 408576698