Use loader-based binding of GetInstallDetailsPayload for install_static.
The previous strategy of using GetModuleHandle + GetProcAddress was
overly complex and was causing some 3rd party software to tip renderers
over.
BUG=674541
Review-Url: https://codereview.chromium.org/2635953002
Cr-Commit-Position: refs/heads/master@{#444547}
diff --git a/chrome/install_static/install_details.cc b/chrome/install_static/install_details.cc
index b0fda62..688b079 100644
--- a/chrome/install_static/install_details.cc
+++ b/chrome/install_static/install_details.cc
@@ -67,16 +67,11 @@
}
// static
-void InstallDetails::InitializeFromPrimaryModule(
- const wchar_t* primary_module_name) {
+void InstallDetails::InitializeFromPayload(
+ const InstallDetails::Payload* payload) {
assert(!g_module_details);
- using GetInstallDetailsPayloadFunction = const Payload*(__cdecl*)();
- GetInstallDetailsPayloadFunction payload_getter =
- reinterpret_cast<GetInstallDetailsPayloadFunction>(::GetProcAddress(
- ::GetModuleHandle(primary_module_name), "GetInstallDetailsPayload"));
- assert(payload_getter);
// Intentionally leaked at shutdown.
- g_module_details = new InstallDetails(payload_getter());
+ g_module_details = new InstallDetails(payload);
}
PrimaryInstallDetails::PrimaryInstallDetails() : InstallDetails(&payload_) {