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

Unified Diff: mojo/shell/application_manager.cc

Issue 1257133003: Fix uaf in ApplicationInstance. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 5 months 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
« mojo/shell/application_instance.cc ('K') | « mojo/shell/application_manager.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/shell/application_manager.cc
diff --git a/mojo/shell/application_manager.cc b/mojo/shell/application_manager.cc
index 899439275986e3570271f8d26364aa1a4e24ddd5..345351e85b1f396d80eb94b91e32205de8ea2fdc 100644
--- a/mojo/shell/application_manager.cc
+++ b/mojo/shell/application_manager.cc
@@ -185,7 +185,7 @@ bool ApplicationManager::ConnectToRunningApplication(
CapabilityFilterPtr* filter) {
GURL application_url = GetBaseURLAndQuery(resolved_url, nullptr);
ApplicationInstance* instance =
- GetApplicationInstance(application_url, qualifier);
+ GetApplicationInstance(Identity(application_url, qualifier));
if (!instance)
return false;
@@ -242,8 +242,9 @@ InterfaceRequest<Application> ApplicationManager::RegisterInstance(
filter->filter.To<ApplicationInstance::CapabilityFilter>();
}
ApplicationInstance* instance = new ApplicationInstance(
- application.Pass(), this, app_identity, capability_filter,
- on_application_end);
+ application.Pass(), this,
+ originator ? originator->identity() : Identity(GURL()), app_identity,
+ capability_filter, on_application_end);
identity_to_instance_[app_identity] = instance;
instance->InitializeApplication();
instance->ConnectToClient(originator, app_url, requestor_url, services.Pass(),
@@ -252,10 +253,8 @@ InterfaceRequest<Application> ApplicationManager::RegisterInstance(
}
ApplicationInstance* ApplicationManager::GetApplicationInstance(
- const GURL& url,
- const std::string& qualifier) {
- const auto& instance_it =
- identity_to_instance_.find(Identity(url, qualifier));
+ const Identity& identity) const {
+ const auto& instance_it = identity_to_instance_.find(identity);
if (instance_it != identity_to_instance_.end())
return instance_it->second;
return nullptr;
« mojo/shell/application_instance.cc ('K') | « mojo/shell/application_manager.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698