From 6b6e79f8709074c61d8d3ac6c7691cbb225d0197 Mon Sep 17 00:00:00 2001 From: Pat Mancuso <32553150+patmanpm@users.noreply.github.com> Date: Wed, 7 Feb 2018 11:50:06 -0500 Subject: [PATCH 001/151] Update DeveloperSetupGuide.md Corrected registry path for UpdateDev for 32-bit process usage --- doc/DeveloperSetupGuide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/DeveloperSetupGuide.md b/doc/DeveloperSetupGuide.md index fb69926..1ca1d8f 100644 --- a/doc/DeveloperSetupGuide.md +++ b/doc/DeveloperSetupGuide.md @@ -87,7 +87,7 @@ A larger suite of unit tests is also included in the Omaha source. The Omaha build proces includes building an automated unit test suite, based on the [GTest](https://github.com/google/googletest) framework. In order to run it, there are two pieces of preparation you must do: -* Create the following registry key: `HKEY_LOCAL_MACHINE\SOFTWARE\OmahaCompanyName\UpdateDev`. Then, add a string value named `TestSource` with the value `ossdev`. (Note: If you are on 64 bit Windows and are using `regedit` to create the value then you need to place it in `HKEY_LOCAL_MACHINE\Wow6432Node\SOFTWARE\OmahaCompanyName\UpdateDev`. [This allows 32 bit processes to read it.](https://support.microsoft.com/en-us/kb/305097)). +* Create the following registry key: `HKEY_LOCAL_MACHINE\SOFTWARE\OmahaCompanyName\UpdateDev`. Then, add a string value named `TestSource` with the value `ossdev`. (Note: If you are on 64 bit Windows and are using `regedit` to create the value then you need to place it in `HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\OmahaCompanyName\UpdateDev`. [This allows 32 bit processes to read it.](https://support.microsoft.com/en-us/kb/305097)). * Download the Windows Sysinternals PSTools suite (available [here](http://technet.microsoft.com/en-us/sysinternals/bb897553)) and save `psexec.exe` somewhere. Then, set an environment variable named `OMAHA_PSEXEC_DIR` to the directory containing `psexec.exe`. When running unit tests: From 62d5459522624fc83bbc07d541a25df49c31387a Mon Sep 17 00:00:00 2001 From: Jimmy Casey Date: Thu, 26 Jul 2018 19:44:14 +0000 Subject: [PATCH 002/151] Fixed Spelling. --- CHANGELOG.txt | 4 ++-- omaha/base/commands.h | 2 +- omaha/base/proc_utils.cc | 2 +- omaha/base/process.cc | 2 +- omaha/base/reg_key.cc | 2 +- omaha/base/reg_key.h | 2 +- omaha/base/store_watcher.h | 2 +- omaha/base/string.h | 2 +- omaha/base/synchronized.cc | 2 +- omaha/base/synchronized.h | 2 +- omaha/base/type_utils.h | 2 +- omaha/common/ping.h | 2 +- omaha/crashhandler/crash_analyzer.h | 2 +- omaha/net/simple_request_unittest.cc | 2 +- omaha/ui/owner_draw_title_bar.cc | 2 +- omaha/ui/progress_wnd_unittest.cc | 2 +- 16 files changed, 17 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 286249b..f17a434 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1020,7 +1020,7 @@ non-localized resources over to goopdate.dll to fix this issue. -------------------------------------------------------------------------------- Implement sandbox for omaha crash handler. This adds the plumbing to deal with all the needed files and handles by opening handles ahead of time. It then -creates seperate worker process to perform the crash dump and (after opening all +creates separate worker process to perform the crash dump and (after opening all needed handles) locks down the process by setting the untrusted label on the processes access token. -------------------------------------------------------------------------------- @@ -1095,7 +1095,7 @@ The event log source for Omaha crashes event 2 shows as Update2. -------------------------------------------------------------------------------- Turn on crash analysis for non-system crash handlers. -------------------------------------------------------------------------------- -Adjust the height of the installer state text box to accomodate longer messages +Adjust the height of the installer state text box to accommodate longer messages and product names. Also adjusted a couple of other boxes that are not used currently but may be used in the future. -------------------------------------------------------------------------------- diff --git a/omaha/base/commands.h b/omaha/base/commands.h index 78d8b1b..d18cec7 100644 --- a/omaha/base/commands.h +++ b/omaha/base/commands.h @@ -72,7 +72,7 @@ class CommandParsingSimple { // in quotes. For instance, earlier versions of Google Desktop // used to have an "Uninstall" string of the form: // C:\Program Files\Google\Google Toolbar\GoogleToolbarSetup.exe -uninstall - // This function is meant to accomodate such cases. + // This function is meant to accommodate such cases. static HRESULT SplitExeAndArgsGuess(const TCHAR* cmd_line, CString* exe, CString* args); diff --git a/omaha/base/proc_utils.cc b/omaha/base/proc_utils.cc index 6f82422..b9b22d0 100644 --- a/omaha/base/proc_utils.cc +++ b/omaha/base/proc_utils.cc @@ -266,7 +266,7 @@ bool ProcessTerminator::PrepareToKill(uint32 method_mask) { } // We already handled the case when we don't have enough privileges to open // the process. So if we have less handles than process ids -> some of the - // processes have died since we made a snapshot untill the time we tried to + // processes have died since we made a snapshot until the time we tried to // open handles. We need to do another snapshot and try to open handles one // more time. We need number of handles and number of ids to be equal. // We can do it with recursion. The idea is: make the next snapshot and open diff --git a/omaha/base/process.cc b/omaha/base/process.cc index e3a723c..82fdabc 100644 --- a/omaha/base/process.cc +++ b/omaha/base/process.cc @@ -593,7 +593,7 @@ HRESULT Process::GetAllDescendantProcesses( ASSERT1(descendant_processes); // Take a snapshot - // Note that we do not have a seperate scoped_* type defined to wrap the + // Note that we do not have a separate scoped_* type defined to wrap the // handle returned by CreateToolhelp32Snapshot. So scoped_hfile with similar // behavior is used. scoped_hfile process_snap(::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)); diff --git a/omaha/base/reg_key.cc b/omaha/base/reg_key.cc index 5560110..6b0854c 100644 --- a/omaha/base/reg_key.cc +++ b/omaha/base/reg_key.cc @@ -1240,7 +1240,7 @@ HRESULT RegKeyWithChangeEvent::SetupEvent(bool watch_subtree, return HRESULT_FROM_WIN32(res); } -// Indicates if any changes (that are being monitored have occured) +// Indicates if any changes (that are being monitored have occurred) bool RegKeyWithChangeEvent::HasChangeOccurred() const { return IsHandleSignaled(get(change_event_)); } diff --git a/omaha/base/reg_key.h b/omaha/base/reg_key.h index 18a4a77..c577d9b 100644 --- a/omaha/base/reg_key.h +++ b/omaha/base/reg_key.h @@ -439,7 +439,7 @@ class RegKeyWithChangeEvent : public RegKey { // for values for notify_filter. HRESULT SetupEvent(bool watch_subtree, DWORD notify_filter); - // Indicates if any changes (that are being monitored) have occured + // Indicates if any changes (that are being monitored) have occurred bool HasChangeOccurred() const; // Get the event that is signaled on registry changes. diff --git a/omaha/base/store_watcher.h b/omaha/base/store_watcher.h index fb55e24..63562c5 100644 --- a/omaha/base/store_watcher.h +++ b/omaha/base/store_watcher.h @@ -36,7 +36,7 @@ class StoreWatcher { // event using change_event(). virtual HRESULT EnsureEventSetup() = 0; - // Indicates if any changes have occured + // Indicates if any changes have occurred bool HasChangeOccurred() const { return IsHandleSignaled(change_event()); } diff --git a/omaha/base/string.h b/omaha/base/string.h index 23caa73..ad3f438 100644 --- a/omaha/base/string.h +++ b/omaha/base/string.h @@ -63,7 +63,7 @@ CString ElideIfNeeded (const CString & input_string, int max_len, int min_len); // XML is the HTML replacements, and a few more #define kSanXml (kSanHtml | 0x2) -// Javascript has a seperate set of encodings [which is a superset of HTML replacements] +// Javascript has a separate set of encodings [which is a superset of HTML replacements] #define kSanJs (kSanHtml | 0x4) // For input fields on HTML documents diff --git a/omaha/base/synchronized.cc b/omaha/base/synchronized.cc index ac61762..215cd61 100644 --- a/omaha/base/synchronized.cc +++ b/omaha/base/synchronized.cc @@ -258,7 +258,7 @@ bool Gate::Wait(DWORD msec) { // Returns S_OK, and sets selected_gate to zero based index of the gate that // was opened -// Returns E_FAIL if timeout occured or gate was abandoned. +// Returns E_FAIL if timeout occurred or gate was abandoned. HRESULT Gate::WaitAny(Gate const * const *gates, int num_gates, DWORD msec, diff --git a/omaha/base/synchronized.h b/omaha/base/synchronized.h index 0e40dd4..5499761 100644 --- a/omaha/base/synchronized.h +++ b/omaha/base/synchronized.h @@ -195,7 +195,7 @@ class Gate { // Returns S_OK, and sets selected_gate to zero based index of the gate that // was opened. - // Returns E_FAIL if timeout occured or gate was abandoned. + // Returns E_FAIL if timeout occurred or gate was abandoned. static HRESULT WaitAny(Gate const * const *gates, int num_gates, DWORD msec, diff --git a/omaha/base/type_utils.h b/omaha/base/type_utils.h index edbd286..7112ffb 100644 --- a/omaha/base/type_utils.h +++ b/omaha/base/type_utils.h @@ -23,7 +23,7 @@ namespace omaha { // (Extracted from: Modern C++ Design) // -// Evaluates true if U inherites from T publically, or if T and U are same type +// Evaluates true if U inherites from T publicly, or if T and U are same type #define SUPERSUBCLASS(T, U) \ (ConversionUtil::exists && \ !ConversionUtil::same_type) diff --git a/omaha/common/ping.h b/omaha/common/ping.h index a79b25f..f834269 100644 --- a/omaha/common/ping.h +++ b/omaha/common/ping.h @@ -34,7 +34,7 @@ // elevated /install process if elevation was successful. The pings will be // split in two different http transactions in the case setup completed // successfully but it failed to handoff. -// * if the /handoff process launched but an error occured in the handoff +// * if the /handoff process launched but an error occurred in the handoff // process itself, then the Omaha "2" ping is sent from the /install process // and the apps "2" ping is sent from the /handoff process. // The apps ping is only sent if the handoff code did not proceed far enough diff --git a/omaha/crashhandler/crash_analyzer.h b/omaha/crashhandler/crash_analyzer.h index 5b06c0e..bbc1854 100644 --- a/omaha/crashhandler/crash_analyzer.h +++ b/omaha/crashhandler/crash_analyzer.h @@ -39,7 +39,7 @@ enum CrashAnalysisResult { // The process has a suspicious number of executable memory mappings. // This is likely the result of a spray. ANALYSIS_EXCESSIVE_EXEC_MEM, - // Crash occured near an instruction sequence that modifies the stack + // Crash occurred near an instruction sequence that modifies the stack // pointer. ANALYSIS_STACK_PIVOT, // The crashing instruction sequence looks like a bad dereference of diff --git a/omaha/net/simple_request_unittest.cc b/omaha/net/simple_request_unittest.cc index c26e494..08cab51 100644 --- a/omaha/net/simple_request_unittest.cc +++ b/omaha/net/simple_request_unittest.cc @@ -278,7 +278,7 @@ void SimpleRequestTest::SimpleGetHostNotFound(const CString& url, // proxy auto detect. // // When a proxy is detected, the proxy server can return some html content - // indicating an error has occured. The status codes will be different, + // indicating an error has occurred. The status codes will be different, // depending on how each proxy is configured. This may be a flaky unit test. if (FAILED(hr)) { if (IsWpadFailureError(hr)) { diff --git a/omaha/ui/owner_draw_title_bar.cc b/omaha/ui/owner_draw_title_bar.cc index 87e195c..f78343b 100644 --- a/omaha/ui/owner_draw_title_bar.cc +++ b/omaha/ui/owner_draw_title_bar.cc @@ -700,7 +700,7 @@ LRESULT CustomProgressBarCtrl::OnPaint(UINT, left_highlight_rect.right = left_highlight_rect.left + 1; dc.FillSolidRect(left_highlight_rect, kProgressLeftHighlightColor); - // Adjust progress bar rectangle to accomodate the highlight and shadow. + // Adjust progress bar rectangle to accommodate the highlight and shadow. // Then draw the outer and inner frames. // Then fill in the bar. progress_bar_rect.DeflateRect(1, 0, 0, 2); diff --git a/omaha/ui/progress_wnd_unittest.cc b/omaha/ui/progress_wnd_unittest.cc index ed3f1d2..4f8cde5 100644 --- a/omaha/ui/progress_wnd_unittest.cc +++ b/omaha/ui/progress_wnd_unittest.cc @@ -233,7 +233,7 @@ TEST_F(UITest, OnCompleteError) { FormatWindowTitle(_T("Complete error")); progress_wnd_.OnComplete( COMPLETION_CODE_ERROR, - _T("An error occured while installing Gears: an existing copy of ") + _T("An error occurred while installing Gears: an existing copy of ") _T("Gears is currently running. Please exit the software and ") _T("retry installation. For more information visit the ") _T("Gears web site."), From a924f48c88873156aff3acdd275f65ab95c6b557 Mon Sep 17 00:00:00 2001 From: Jimmy Casey Date: Sun, 29 Jul 2018 18:40:04 +0000 Subject: [PATCH 003/151] Fixed Spelling. --- omaha/base/type_utils.h | 2 +- omaha/ui/progress_wnd_unittest.cc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/omaha/base/type_utils.h b/omaha/base/type_utils.h index 7112ffb..9881c75 100644 --- a/omaha/base/type_utils.h +++ b/omaha/base/type_utils.h @@ -28,7 +28,7 @@ namespace omaha { (ConversionUtil::exists && \ !ConversionUtil::same_type) -// Evaluates true only if U inherites from T publically +// Evaluates true only if U inherites from T publicly #define SUPERSUBCLASS_STRICT(T, U) \ (SUPERSUBCLASS(T, U) && \ !ConversionUtil::same_type) diff --git a/omaha/ui/progress_wnd_unittest.cc b/omaha/ui/progress_wnd_unittest.cc index 4f8cde5..9d0d5e2 100644 --- a/omaha/ui/progress_wnd_unittest.cc +++ b/omaha/ui/progress_wnd_unittest.cc @@ -294,7 +294,7 @@ TEST_F(UITest, OnMultipleCompletes) { FormatWindowTitle(_T("Complete error")); progress_wnd_.OnComplete( COMPLETION_CODE_ERROR, - _T("An error occured while installing Gears: an existing copy of ") + _T("An error occurred while installing Gears: an existing copy of ") _T("Gears is currently running. Please exit the software and ") _T("retry installation. For more information visit the ") _T("Gears web site."), From b05f7b442b3da9939eb764b5fe66cae38c36b351 Mon Sep 17 00:00:00 2001 From: David Arnold Date: Thu, 4 Oct 2018 23:37:42 +1000 Subject: [PATCH 004/151] Trivial tyop fix. --- doc/DeveloperSetupGuide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/DeveloperSetupGuide.md b/doc/DeveloperSetupGuide.md index fb69926..a78beca 100644 --- a/doc/DeveloperSetupGuide.md +++ b/doc/DeveloperSetupGuide.md @@ -10,7 +10,7 @@ We are striving to make the code build with the latest Windows toolchain from Mi The following packages are required to build Omaha: * A copy of the Omaha source code. This can be done by cloning this repository. - * Microsoft Visual Studio 2015 Update 3. The free Visual Studion Community edition is sufficient to build. + * Microsoft Visual Studio 2015 Update 3. The free Visual Studio Community edition is sufficient to build. * The Express Editions are not sufficient - they do not include ATL/MFC headers or libraries, which Omaha requires. * ATL Server headers * Download [here](http://atlserver.codeplex.com). Omaha needs this library for regular expression support. From 349504f98397effa2713154d82ab0d7f9c67f6a9 Mon Sep 17 00:00:00 2001 From: Joshua Pawlicki Date: Wed, 5 Dec 2018 09:09:03 -0800 Subject: [PATCH 005/151] =?UTF-8?q?fingerprint=E2=86=92fp=20in=20SeverProt?= =?UTF-8?q?ocolDocV3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/ServerProtocolV3.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/ServerProtocolV3.md b/doc/ServerProtocolV3.md index 9d06bdd..379dfa4 100644 --- a/doc/ServerProtocolV3.md +++ b/doc/ServerProtocolV3.md @@ -167,7 +167,7 @@ Each product that is contained in the request is represented by exactly one `` level. See [#Packages\_&\_Fingerprints](#packages--fingerprints). Default: "". + * `fp`: If there is only one package, the fingerprint for that package may be transmitted at the `` level. See [#Packages\_&\_Fingerprints](#packages--fingerprints). Default: "". * `cohort`: A machine-readable string identifying the release cohort (channel) that the app belongs to. Limited to ASCII characters 32 to 127 (inclusive) and a maximum length of 1024 characters. Default: "". * `cohorthint`: An machine-readable enum indicating that the client has a desire to switch to a different release cohort. The exact legal values are app-specific and should be shared between the server and app implementations. Limited to ASCII characters 32 to 127 (inclusive) and a maximum length of 1024 characters. Default: "". * `cohortname`: A stable non-localized human-readable enum indicating which (if any) set of messages the app should display to the user. For example, an app with a cohortname of "beta" might display beta-specific branding to the user. Limited to ASCII characters 32 to 127 (inclusive) and a maximum length of 1024 characters. Default: "". @@ -219,7 +219,7 @@ None. #### `` (Request) #### A `` tag gives information about an installed package. ##### Attributes ##### - * `fingerprint`: The fingerprint identifying the installed package. See [#Packages\_&\_Fingerprints](#pacakges--fingerprints). Default: "". + * `fp`: The fingerprint identifying the installed package. See [#Packages\_&\_Fingerprints](#pacakges--fingerprints). Default: "". ##### Legal Child Elements ##### None. From 441e20999427f0af9f1aabb35ac98682bdd7c49f Mon Sep 17 00:00:00 2001 From: Sorin Jianu Date: Thu, 20 Dec 2018 18:34:13 -0800 Subject: [PATCH 006/151] Integrate from Omaha mainline up to 226393814. --- omaha/base/build.scons | 29 ++-- omaha/base/const_code_signing.h | 20 ++- omaha/base/const_object_names.h | 5 + omaha/base/constants.h | 14 +- omaha/base/error.h | 2 + omaha/base/logging.cc | 20 +-- omaha/base/logging.h | 4 +- omaha/base/proc_utils.cc | 16 +- omaha/base/process.cc | 12 +- omaha/base/process_unittest.cc | 10 +- omaha/base/reactor_unittest.cc | 2 +- omaha/base/reg_key.h | 2 +- omaha/base/registry_monitor_manager.cc | 10 +- omaha/base/security/hash-internal.h | 2 +- omaha/base/security/hmac.c | 2 +- omaha/base/security/hmac_unittest.cc | 150 ++++++++---------- omaha/base/security/md5.c | 2 +- omaha/base/security/md5.h | 2 +- omaha/base/security/p256.c | 1 - omaha/base/security/p256.h | 1 - omaha/base/security/p256_ecdsa.c | 2 +- omaha/base/security/p256_prng.c | 2 +- omaha/base/security/p256_prng.h | 6 +- omaha/base/security/p256_unittest.c | 2 +- omaha/base/security/sha.c | 2 +- omaha/base/security/sha256.c | 1 + omaha/base/security/sha256.h | 2 +- omaha/base/security/util.c | 16 ++ omaha/base/security/util.h | 13 ++ omaha/base/shell.h | 2 +- omaha/base/signatures.cc | 1 - omaha/base/signaturevalidator.cc | 64 +++++--- omaha/base/signaturevalidator.h | 4 +- omaha/base/signaturevalidator_unittest.cc | 36 ++++- omaha/base/synchronized.h | 2 +- omaha/base/system_info.h | 2 +- omaha/base/thread.cc | 2 +- omaha/base/thread.h | 2 +- omaha/base/timer.h | 11 +- omaha/base/utils.h | 3 +- omaha/client/bundle_installer.cc | 4 +- omaha/common/const_goopdate.h | 5 - omaha/common/google_signaturevalidator.cc | 6 +- .../google_signaturevalidator_unittest.cc | 26 ++- omaha/common/omaha_customization_unittest.cc | 4 +- omaha/common/ping.cc | 2 +- omaha/common/ping.h | 3 + omaha/common/protocol_definition.h | 5 +- omaha/common/update_request.cc | 2 + omaha/common/web_services_client.cc | 27 +++- omaha/common/web_services_client.h | 18 ++- omaha/common/web_services_client_unittest.cc | 53 +++++-- omaha/common/xml_const.cc | 6 +- omaha/common/xml_const.h | 6 +- omaha/common/xml_parser.cc | 19 ++- omaha/common/xml_parser_unittest.cc | 63 +++++++- omaha/core/resource.rc | 4 +- omaha/crashhandler/resource.rc | 4 +- .../generate_group_policy_template_admx.py | 5 +- .../enterprise_standalone_installer.wxs.xml | 2 +- omaha/enterprise/installer/utils.py | 6 + omaha/goopdate/app.cc | 6 +- omaha/goopdate/app.h | 10 +- omaha/goopdate/app_command_unittest.cc | 4 +- omaha/goopdate/app_manager.cc | 2 +- .../goopdate/app_state_checking_for_update.cc | 1 + omaha/goopdate/app_unittest.cc | 65 ++++++-- omaha/goopdate/build.scons | 1 - omaha/goopdate/crash.cc | 8 +- omaha/goopdate/google_update.cc | 5 - omaha/goopdate/google_update.h | 2 +- omaha/goopdate/omaha3_idl.idl | 31 +--- ...ha_customization_goopdate_apis_unittest.cc | 38 +---- omaha/goopdate/oneclick_process_launcher.cc | 90 ----------- omaha/goopdate/oneclick_process_launcher.h | 86 ---------- omaha/goopdate/resources/chrome.bmp | Bin 6678 -> 6678 bytes omaha/goopdate/worker.cc | 4 +- omaha/goopdate/worker_unittest.cc | 17 +- omaha/hammer.bat | 6 + omaha/installers/tagged_installer.py | 13 +- omaha/main.scons | 28 ++-- omaha/net/bind_status_callback.cc | 3 +- omaha/net/bits_request.cc | 4 +- omaha/net/cup_ecdsa_pubkey.8.h | 31 ++++ omaha/net/cup_ecdsa_request.cc | 2 +- omaha/net/cup_ecdsa_utils_unittest.cc | 2 +- omaha/net/network_request_impl.cc | 34 ++-- omaha/net/proxy_auth.h | 4 +- omaha/net/simple_request.cc | 14 +- omaha/omaha_version_utils.py | 1 + .../update/activex/oneclick_control.cc | 31 +--- .../update/activex/update3web_control.cc | 27 +--- omaha/plugins/update/build.scons | 1 + omaha/precompile/precompile.h | 4 +- .../recovery/repair_exe/msp/legacy/patch.wxs | 6 +- .../msp/legacy/patchableinstaller.wxs | 6 +- omaha/recovery/repair_exe/msp/patch.wxs | 6 +- .../repair_exe/msp/patchableinstaller.wxs | 6 +- omaha/site_scons/site_tools/atlmfc_vc14_1.py | 46 ++++++ omaha/site_scons/site_tools/omaha_builders.py | 74 +++++++-- omaha/site_scons/site_tools/windows_vc14_1.py | 122 ++++++++++++++ omaha/test/test_foo.rc | 4 +- omaha/testing/build.scons | 13 +- omaha/testing/unittest_debug_helper.h | 2 +- .../unittest_support/SaveArguments.exe | Bin 125520 -> 129320 bytes .../testing/unittest_support/chrome_setup.exe | Bin 0 -> 2508032 bytes .../sha2_0c15be4a15bb0903c901b1d6c265302f.msi | Bin 0 -> 40960 bytes omaha/third_party/build.scons | 13 +- omaha/tools/MsiTagger.exe | Bin 0 -> 206336 bytes omaha/tools/eckeytool/eckeytool.c | 2 +- omaha/tools/goopdump/resource.rc | 4 +- omaha/ui/owner_draw_title_bar.cc | 8 +- omaha/ui/splash_screen.cc | 4 +- 113 files changed, 934 insertions(+), 708 deletions(-) delete mode 100644 omaha/goopdate/oneclick_process_launcher.cc delete mode 100644 omaha/goopdate/oneclick_process_launcher.h create mode 100644 omaha/net/cup_ecdsa_pubkey.8.h create mode 100644 omaha/site_scons/site_tools/atlmfc_vc14_1.py create mode 100644 omaha/site_scons/site_tools/windows_vc14_1.py create mode 100644 omaha/testing/unittest_support/chrome_setup.exe create mode 100644 omaha/testing/unittest_support/sha2_0c15be4a15bb0903c901b1d6c265302f.msi create mode 100644 omaha/tools/MsiTagger.exe diff --git a/omaha/base/build.scons b/omaha/base/build.scons index 72311df..f5aff0e 100644 --- a/omaha/base/build.scons +++ b/omaha/base/build.scons @@ -116,15 +116,12 @@ Import('env') local_env = env.Clone() crx_file_path = '/third_party/chrome/files/src/components/crx_file/' -proto_input = [ - '$MAIN_DIR' + crx_file_path + 'crx3.proto', +local_env.Append(PROTO_PATH = '$MAIN_DIR' + crx_file_path) +local_env.Append(CPP_OUT = '$TARGET_ROOT/proto_files' + crx_file_path) +proto_sources = [ + '$MAIN_DIR' + crx_file_path + 'crx3.proto' ] -proto_target_path = '$TARGET_ROOT/proto_files' + crx_file_path -proto_target = [ - proto_target_path + 'crx3.pb.cc', - proto_target_path + 'crx3.pb.h', -] -proto_output = local_env.CompileProtoBuf(proto_target, proto_input) +proto_output = local_env.CompileProtoBuf(proto_sources) default_protobuf_src_dir = '$GOOGLE3/third_party/protobuf/src' protobuf_src_dir = os.getenv('OMAHA_PROTOBUF_SRC_DIR', default_protobuf_src_dir) @@ -142,6 +139,7 @@ local_env.Append( '/wd4996', ], CPPPATH=[ + '$GOOGLE3', protobuf_src_dir, '$TARGET_ROOT/proto_files/', ], @@ -149,11 +147,10 @@ local_env.Append( local_inputs = [ '../third_party/chrome/files/src/components/crx_file/crx_verifier.cc', - '$TARGET_ROOT/proto_files/third_party/chrome/files/src/components/crx_file/crx3.pb.cc', '../third_party/chrome/files/src/components/crx_file/id_util.cc', '../third_party/chrome/files/src/crypto/signature_verifier.cc', '../third_party/chrome/files/src/crypto/secure_util.cc', -] +] + proto_output obj_files = [] for cc_file in local_inputs: @@ -186,6 +183,7 @@ local_env.Append( '/wd4996', ], CPPPATH=[ + '$GOOGLE3', protobuf_src_dir, protobuf_src_path, ], @@ -204,6 +202,7 @@ cc_files = [ 'protobuf/extension_set_heavy.cc', 'protobuf/generated_message_reflection.cc', 'protobuf/generated_message_util.cc', + 'protobuf/implicit_weak_message.cc', 'protobuf/io/coded_stream.cc', 'protobuf/io/printer.cc', 'protobuf/io/tokenizer.cc', @@ -216,10 +215,8 @@ cc_files = [ 'protobuf/reflection_ops.cc', 'protobuf/repeated_field.cc', 'protobuf/service.cc', - 'protobuf/stubs/atomicops_internals_x86_msvc.cc', 'protobuf/stubs/common.cc', 'protobuf/stubs/int128.cc', - 'protobuf/stubs/once.cc', 'protobuf/stubs/status.cc', 'protobuf/stubs/stringprintf.cc', 'protobuf/stubs/stringpiece.cc', @@ -232,9 +229,5 @@ cc_files = [ 'protobuf/wire_format_lite.cc', ] -obj_files = [] -for cc_file in cc_files: - obj_files.append(local_env.Object(cc_file)) - -local_env.ComponentLibrary('libprotobuf', obj_files, COMPONENT_STATIC=True) - +local_env.ComponentStaticLibraryMultiarch( + 'libprotobuf', cc_files, COMPONENT_STATIC=True, use_pch_default=False) diff --git a/omaha/base/const_code_signing.h b/omaha/base/const_code_signing.h index c5a62f5..cff2aab 100644 --- a/omaha/base/const_code_signing.h +++ b/omaha/base/const_code_signing.h @@ -30,19 +30,19 @@ namespace omaha { // The company and organization names expected in the code // signing certificates which are trusted. const TCHAR* const kCertificateSubjectName = _T("Google Inc"); -const TCHAR* const kSha256CertificateSubjectName = _T("Google Inc"); +const TCHAR* const kSha256CertificateSubjectName = _T("Google LLC"); // The Omaha certificate thumbprint. Used by unit tests. const TCHAR* const kCertificateThumbprint = _T("1a6ac0549a4a44264deb6ff003391da2f285b19f"); const TCHAR* const kSha256CertificateThumbprint = - _T("5a9272ce76a9415a4a3a5002a2589a049312aa40"); + _T("cb7e84887f3c6015fe7edfb4f8f36df7dc10590e"); // The SHA256 hash of the Omaha certificate RSA public key. const TCHAR* const kCertificatePublicKeyHash = _T("d49de35a2e9fdbed09e2b9a6c1243df414d6aac13690ab221b0017a5cbe1351f"); const TCHAR* const kSha256CertificatePublicKeyHash = - _T("cd623b2bf2c06940bd480b6bcf4a5c9e1cbe94626fbfa127d001bf19ae5ba9fe"); + _T("03e27c19d222043a8f0c64181c23c9339cc84a7ec4ebff8a19adb7caefb0c709"); // The hash of public keys that we pin the code signing certificates to. // For quick identification, the date and thumbprint of the certificates are @@ -71,16 +71,22 @@ _T("4365c47f17727f2da65892b1f34c0cf418b0138b519b6864dd17300f21aa3144"), // SHA1 Fingerprint=26:4E:38:57:0F:88:2E:5A:02:72:42:37:57:74:12:33:A6:61:B5:53 _T("309bae1b466c4235e1daea9fe0e373b3415807ac667202f704d030ef33b519d6"), +// Omaha and Chrome certificate: sha256 (12/15/2015 to 12/16/2018). +// thumbprint=5a9272ce76a9415a4a3a5002a2589a049312aa40 +// serial=2a9c21acaaa63a3c58a7b9322bee948d +// SHA1 Fingerprint=5A:92:72:CE:76:A9:41:5A:4A:3A:50:02:A2:58:9A:04:93:12:AA:40 +_T("cd623b2bf2c06940bd480b6bcf4a5c9e1cbe94626fbfa127d001bf19ae5ba9fe"), + // Omaha and Chrome certificate: sha1 (11/28/2016 to 11/21/2019). // thumbprint=1a6ac0549a4a44264deb6ff003391da2f285b19f // serial=14F8FDD167F92402B1570B5DC495C815 // SHA1 Fingerprint=1A:6A:C0:54:9A:4A:44:26:4D:EB:6F:F0:03:39:1D:A2:F2:85:B1:9F kCertificatePublicKeyHash, -// Omaha and Chrome certificate: sha256 (12/15/2015 to 12/16/2018). -// thumbprint=5a9272ce76a9415a4a3a5002a2589a049312aa40 -// serial=2a9c21acaaa63a3c58a7b9322bee948d -// SHA1 Fingerprint=5A:92:72:CE:76:A9:41:5A:4A:3A:50:02:A2:58:9A:04:93:12:AA:40 +// Omaha and Chrome certificate: sha256 (11/06/2018 to 11/17/2021). +// thumbprint=cb7e84887f3c6015fe7edfb4f8f36df7dc10590e +// serial=0c15be4a15bb0903c901b1d6c265302f +// SHA1 Fingerprint=CB:7E:84:88:7F:3C:60:15:FE:7E:DF:B4:F8:F3:6D:F7:DC:10:59:0E kSha256CertificatePublicKeyHash, }; diff --git a/omaha/base/const_object_names.h b/omaha/base/const_object_names.h index a9822a7..9ff1d92 100644 --- a/omaha/base/const_object_names.h +++ b/omaha/base/const_object_names.h @@ -76,6 +76,11 @@ const TCHAR* const kInstallAppSingleInstance = const TCHAR* const kGoogleUpdate3SingleInstance = _T("{6885AE8E-C070-458d-9711-37B9BEAB65F6}"); +// Ensures the recovery probe only runs one instance per machine and one +// instance per each user session. +const TCHAR* const kRecoveryProbeSingleInstance = + _T("{223EEFB7-D9D4-45C7-99AC-47C0B52B411E}"); + // TODO(omaha): Delete Job Object code. // Base name of job object for Setup phase 1 processes except self updates. diff --git a/omaha/base/constants.h b/omaha/base/constants.h index 0719cfe..bd14b3a 100644 --- a/omaha/base/constants.h +++ b/omaha/base/constants.h @@ -45,7 +45,7 @@ namespace omaha { // not build values in other source files by concatenating preprocessor defines. // Full company name. -// FULL_COMPANY_NAME == "Google Inc." +// FULL_COMPANY_NAME == "Google LLC" const TCHAR* const kFullCompanyName = _T(FULL_COMPANY_NAME_ANSI); // Short company name (for use in paths and messages and to combine with product @@ -537,21 +537,21 @@ const TCHAR kHeaderXHTTPAttempts[] = _T("X-HTTP-Attempts"); // previous UID. const TCHAR kHeaderXOldUserId[] = _T("X-Old-UID"); -// The client sends a X-GoogleUpdate-Interactivity header to indicate whether +// The client sends a X-Goog-Update-Interactivity header to indicate whether // the current request is foreground or background. // A value of "fg" ("foreground") indicates foreground install or on-demand // updates. "bg" ("background") indicates silent update traffic. -const TCHAR kHeaderXInteractive[] = _T("X-GoogleUpdate-Interactivity"); +const TCHAR kHeaderXInteractive[] = _T("X-Goog-Update-Interactivity"); -// The client sends a X-GoogleUpdate-AppId header to indicate the apps +// The client sends a X-Goog-Update-AppId header to indicate the apps // associated with the request. When updating multiple apps, the client // specifies a comma-separated list of app ids. -const TCHAR kHeaderXAppId[] = _T("X-GoogleUpdate-AppId"); +const TCHAR kHeaderXAppId[] = _T("X-Goog-Update-AppId"); -// The client sends a X-GoogleUpdate-Updater header to indicate the identity of +// The client sends a X-Goog-Update-Updater header to indicate the identity of // the updater. This is the "updater" version string also present in the // request. In the case of Omaha, prepend "Omaha-" to the version string. -const TCHAR kHeaderXUpdater[] = _T("X-GoogleUpdate-Updater"); +const TCHAR kHeaderXUpdater[] = _T("X-Goog-Update-Updater"); // *** *** // *** Custom HTTP request headers that may be in an Omaha server response. *** diff --git a/omaha/base/error.h b/omaha/base/error.h index d54887d..71c7b78 100644 --- a/omaha/base/error.h +++ b/omaha/base/error.h @@ -209,6 +209,8 @@ const ULONG kFacilityOmaha = 67; MAKE_OMAHA_HRESULT(SEVERITY_ERROR, 0x606) #define GOOPDATE_E_SHUTDOWN_SIGNALED \ MAKE_OMAHA_HRESULT(SEVERITY_ERROR, 0x607) +#define GOOPDATE_E_PROBE_ALREADY_RUNNING \ + MAKE_OMAHA_HRESULT(SEVERITY_ERROR, 0x608) // Setup and metainstaller custom error codes. #define GOOPDATE_E_NONADMIN_INSTALL_ADMIN_APP \ diff --git a/omaha/base/logging.cc b/omaha/base/logging.cc index 2025622..696f334 100644 --- a/omaha/base/logging.cc +++ b/omaha/base/logging.cc @@ -176,20 +176,20 @@ Logging* GetLogging() { Logging::Logging() : logging_initialized_(false), + is_initializing_(false), logging_enabled_(true), force_show_time_(false), show_time_(true), log_to_file_(true), + log_file_name_(kDefaultLogFileName), log_to_debug_out_(true), append_to_file_(true), logging_shutdown_(false), + config_file_path_(GetConfigurationFilePath()), num_writers_(0), file_log_writer_(NULL), debug_out_writer_(NULL), - etw_log_writer_(NULL), - is_initializing_(false), - log_file_name_(kDefaultLogFileName), - config_file_path_(GetConfigurationFilePath()) { + etw_log_writer_(NULL) { g_last_category_check_time = 0; for (int i = 0; i < max_writers; ++i) { writers_[i] = NULL; @@ -954,14 +954,14 @@ FileLogWriter* FileLogWriter::Create(const wchar_t* file_name, bool append) { } FileLogWriter::FileLogWriter(const wchar_t* file_name, bool append) - : initialized_(false), + : max_file_size_(kDefaultMaxLogFileSize), + initialized_(false), valid_(false), - file_name_(file_name), - log_file_mutex_(NULL), - log_file_(NULL), append_(append), - max_file_size_(kDefaultMaxLogFileSize), - log_file_wide_(kDefaultLogFileWide) { + log_file_wide_(kDefaultLogFileWide), + log_file_mutex_(NULL), + file_name_(file_name), + log_file_(NULL) { Logging* logger = GetLogging(); if (logger) { CString config_file_path = logger->GetCurrentConfigurationFilePath(); diff --git a/omaha/base/logging.h b/omaha/base/logging.h index e4f0cf1..6f31d05 100644 --- a/omaha/base/logging.h +++ b/omaha/base/logging.h @@ -511,9 +511,9 @@ class LoggingHelper { private: Logging* logger_; - DWORD writer_mask_; - LogLevel level_; LogCategory category_; + LogLevel level_; + DWORD writer_mask_; DISALLOW_EVIL_CONSTRUCTORS(LoggingHelper); }; diff --git a/omaha/base/proc_utils.cc b/omaha/base/proc_utils.cc index 6f82422..08a59f0 100644 --- a/omaha/base/proc_utils.cc +++ b/omaha/base/proc_utils.cc @@ -38,8 +38,8 @@ namespace omaha { ProcessTerminator::ProcessTerminator(const CString& process_name) - : recursion_level_(0), - process_name_(process_name), + : process_name_(process_name), + recursion_level_(0), flash_window_(false), session_id_(INVALID_SESSION_ID) { MakeLowerCString(process_name_); @@ -47,9 +47,9 @@ ProcessTerminator::ProcessTerminator(const CString& process_name) ProcessTerminator::ProcessTerminator(const CString& process_name, const CString& user_sid) - : recursion_level_(0), + : process_name_(process_name), + recursion_level_(0), user_sid_(user_sid), - process_name_(process_name), flash_window_(false), session_id_(INVALID_SESSION_ID) { MakeLowerCString(process_name_); @@ -58,11 +58,11 @@ ProcessTerminator::ProcessTerminator(const CString& process_name, ProcessTerminator::ProcessTerminator(const CString& process_name, const CString& user_sid, int session_id) - : recursion_level_(0), + : process_name_(process_name), + recursion_level_(0), user_sid_(user_sid), - session_id_(session_id), - process_name_(process_name), - flash_window_(false) { + flash_window_(false), + session_id_(session_id) { MakeLowerCString(process_name_); } diff --git a/omaha/base/process.cc b/omaha/base/process.cc index e3a723c..8a2bce6 100644 --- a/omaha/base/process.cc +++ b/omaha/base/process.cc @@ -51,10 +51,10 @@ const int kMaxCmdLineLengthBytes = 4096; // Constructor Process::Process(const TCHAR* name, const TCHAR* window_class_name) - : process_id_(0), - exit_code_(0), - number_of_restarts_(static_cast(-1)), + : number_of_restarts_(static_cast(-1)), name_(name), + process_id_(0), + exit_code_(0), shutdown_event_(NULL) { ASSERT1(name); command_line_ = name; @@ -63,10 +63,10 @@ Process::Process(const TCHAR* name, // Constructor Process::Process(uint32 process_id) - : process_id_(process_id), - exit_code_(0), - number_of_restarts_(static_cast(-1)), + : number_of_restarts_(static_cast(-1)), name_(itostr(static_cast(process_id))), + process_id_(process_id), + exit_code_(0), shutdown_event_(NULL) { reset(process_, ::OpenProcess(PROCESS_QUERY_INFORMATION | SYNCHRONIZE, false, diff --git a/omaha/base/process_unittest.cc b/omaha/base/process_unittest.cc index b4fe76e..fdc2b5c 100644 --- a/omaha/base/process_unittest.cc +++ b/omaha/base/process_unittest.cc @@ -59,11 +59,11 @@ TEST(ProcessTest, StartOneProcess) { // Dummy process to spin off and then find. The numeric argument will make // ping.exe run until it's killed by the ScopedProcess destructor. const TCHAR kTestExecutable[] = _T("ping.exe"); -const TCHAR kTestArguments[] = _T("-w 10000 1.1.1.1"); -const TCHAR kTestExcludeArguments[] = _T("-n 5 -w 20000 1.1.1.1"); -const TCHAR kTestExcludeString[] = _T("20000 1.1.1.1"); -const TCHAR kTestIncludeArguments[] = _T("-n 6 -w 30000 1.1.1.1"); -const TCHAR kTestIncludeString[] = _T("-w 30000 1.1.1.1"); +const TCHAR kTestArguments[] = _T("-w 10000 2.2.2.2"); +const TCHAR kTestExcludeArguments[] = _T("-n 5 -w 20000 2.2.2.2"); +const TCHAR kTestExcludeString[] = _T("20000 2.2.2.2"); +const TCHAR kTestIncludeArguments[] = _T("-n 6 -w 30000 2.2.2.2"); +const TCHAR kTestIncludeString[] = _T("-w 30000 2.2.2.2"); const int kWaitForProcessStartMs = 500; const int kMaxWaitIterations = 10; diff --git a/omaha/base/reactor_unittest.cc b/omaha/base/reactor_unittest.cc index f5d0456..6ec4b0f 100644 --- a/omaha/base/reactor_unittest.cc +++ b/omaha/base/reactor_unittest.cc @@ -76,7 +76,7 @@ class ReactorTest scoped_handle main_thread_; LONG cnt_; - static const LONG ReactorTest::kMaxCount = 10; + static const LONG kMaxCount = 10; }; const LONG ReactorTest::kMaxCount; diff --git a/omaha/base/reg_key.h b/omaha/base/reg_key.h index 18a4a77..d387148 100644 --- a/omaha/base/reg_key.h +++ b/omaha/base/reg_key.h @@ -487,8 +487,8 @@ class RegKeyWatcher : public StoreWatcher { CString reg_key_string_; bool watch_subtree_; - bool allow_creation_; DWORD notify_filter_; + bool allow_creation_; DISALLOW_EVIL_CONSTRUCTORS(RegKeyWatcher); }; diff --git a/omaha/base/registry_monitor_manager.cc b/omaha/base/registry_monitor_manager.cc index 9057fc0..d325281 100644 --- a/omaha/base/registry_monitor_manager.cc +++ b/omaha/base/registry_monitor_manager.cc @@ -93,15 +93,15 @@ class ValueWatcher { CString GetCurrentValueString(); DWORD GetCurrentValueDword(); - CString last_known_value_string_; - DWORD last_known_value_dword_; + KeyWatcher* key_watcher_; bool value_is_valid_; RegistryChangeType change_type_; - CString value_name_; - int value_type_; - KeyWatcher* key_watcher_; RegistryValueChangeCallback callback_; void* callback_param_; + CString value_name_; + int value_type_; + DWORD last_known_value_dword_; + CString last_known_value_string_; }; diff --git a/omaha/base/security/hash-internal.h b/omaha/base/security/hash-internal.h index ce6522a..501e199 100644 --- a/omaha/base/security/hash-internal.h +++ b/omaha/base/security/hash-internal.h @@ -16,8 +16,8 @@ #ifndef OMAHA_BASE_SECURITY_HASH_INTERNAL_H_ #define OMAHA_BASE_SECURITY_HASH_INTERNAL_H_ -#include #include +#include #ifdef LITE_EMULATED_64BIT_OPS #define LITE_LShiftU64(a, b) LShiftU64((a), (b)) diff --git a/omaha/base/security/hmac.c b/omaha/base/security/hmac.c index 87e0166..bac29e7 100644 --- a/omaha/base/security/hmac.c +++ b/omaha/base/security/hmac.c @@ -19,8 +19,8 @@ #include "util.h" #include -#include "sha.h" #include "md5.h" +#include "sha.h" #include "sha256.h" static void HMAC_init(LITE_HMAC_CTX* ctx, const void* key, unsigned int len) { diff --git a/omaha/base/security/hmac_unittest.cc b/omaha/base/security/hmac_unittest.cc index 0a5abd5..8421554 100644 --- a/omaha/base/security/hmac_unittest.cc +++ b/omaha/base/security/hmac_unittest.cc @@ -35,88 +35,74 @@ static const struct KAT { const char* sha1; const char* sha256; } KATS[] = { - { -"x0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b", 16, -"Hi There", -"9294727a3638bb1c13f48ef8158bfc9d", -"b617318655057264e28bc0b6fb378c8ef146be00", -"b0344c61d8db38535ca8afceaf0bf12b881dc200c9833da726e9376c2e32cff7" - }, { -"Jefe", 4, -"what do ya want for nothing?", -"750c783e6ab0b503eaa86e310a5db738", -"effcdf6ae5eb2fa2d27416d5f184df9c259a7c79", -"5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843" - }, { -"xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 16, -"xdddddddddddddddddddddddddddddddddddddddddddddddddd" -"dddddddddddddddddddddddddddddddddddddddddddddddddd", -"56be34521d144c88dbb8c733f0e8b3f6", -"125d7342b9ac11cd91a39af48aa17b4f63f175d3", -"773ea91e36800e46854db8ebd09181a72959098b3ef8c122d9635514ced565fe" - }, { -"x0102030405060708090a0b0c0d0e0f10111213141516171819", 25, -"xcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd" -"cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd", -"697eaf0aca3a3aea3a75164746ffaa79", -"4c9007f4026250c6bc8414f9bf50c86c2d7235da", -"82558a389a443c0ea4cc819899f2083a85f0faa3e578f8077a2e3ff46729665b" - }, { -"x0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c", 16, -"Test With Truncation", -"56461ef2342edc00f9bab995690efd4c", -"4c1a03424b55e07fe7f27be1d58bb9324a9a5a04", -"a3b6167473100ee06e0c796c2955552bfa6f7c0a6a8aef8b93f860aab0cd20c5" - }, { -"xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 80, -"Test Using Larger Than Block-Size Key - Hash Key First", -"6b1ab7fe4bd7bf8f0b62e6ce61b9d0cd", -"aa4ae5e15272d00e95705637ce8a3b55ed402112", -NULL }, { -"xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" -"aaaaaa", 8 * 16 + 3, -"Test Using Larger Than Block-Size Key - Hash Key First", -NULL, -NULL, -"60e431591ee0b67f0d8a26aacbf5b77f8e0bc6213728c5140546040f0ee37f54" - }, { -"xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 80, -"Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data", -"6f630fad67cda0ee1fb1f562db3aa53e", -"e8e99d0f45237d786d6bbaa7965c7808bbff1a91", -NULL - } , { -"xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" -"aaaaaa", 8 * 16 + 3, -"This is a test using a larger than block-size key and a larger t" -"han block-size data. The key needs to be hashed before being use" -"d by the HMAC algorithm.", -NULL, -NULL, -"9b09ffa71b942fcb27635fbcd5b0e944bfdc63644f0713938a7f51535c3a35e2" - }, - { 0 } -}; + {"x0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b", 16, "Hi There", + "9294727a3638bb1c13f48ef8158bfc9d", + "b617318655057264e28bc0b6fb378c8ef146be00", + "b0344c61d8db38535ca8afceaf0bf12b881dc200c9833da726e9376c2e32cff7"}, + {"Jefe", 4, "what do ya want for nothing?", + "750c783e6ab0b503eaa86e310a5db738", + "effcdf6ae5eb2fa2d27416d5f184df9c259a7c79", + "5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843"}, + {"xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 16, + "xdddddddddddddddddddddddddddddddddddddddddddddddddd" + "dddddddddddddddddddddddddddddddddddddddddddddddddd", + "56be34521d144c88dbb8c733f0e8b3f6", + "125d7342b9ac11cd91a39af48aa17b4f63f175d3", + "773ea91e36800e46854db8ebd09181a72959098b3ef8c122d9635514ced565fe"}, + {"x0102030405060708090a0b0c0d0e0f10111213141516171819", 25, + "xcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd" + "cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd", + "697eaf0aca3a3aea3a75164746ffaa79", + "4c9007f4026250c6bc8414f9bf50c86c2d7235da", + "82558a389a443c0ea4cc819899f2083a85f0faa3e578f8077a2e3ff46729665b"}, + {"x0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c", 16, "Test With Truncation", + "56461ef2342edc00f9bab995690efd4c", + "4c1a03424b55e07fe7f27be1d58bb9324a9a5a04", + "a3b6167473100ee06e0c796c2955552bfa6f7c0a6a8aef8b93f860aab0cd20c5"}, + {"xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + 80, "Test Using Larger Than Block-Size Key - Hash Key First", + "6b1ab7fe4bd7bf8f0b62e6ce61b9d0cd", + "aa4ae5e15272d00e95705637ce8a3b55ed402112", nullptr}, + {"xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaa", + 8 * 16 + 3, "Test Using Larger Than Block-Size Key - Hash Key First", + nullptr, nullptr, + "60e431591ee0b67f0d8a26aacbf5b77f8e0bc6213728c5140546040f0ee37f54"}, + {"xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + 80, + "Test Using Larger Than Block-Size Key and Larger Than One Block-Size " + "Data", + "6f630fad67cda0ee1fb1f562db3aa53e", + "e8e99d0f45237d786d6bbaa7965c7808bbff1a91", nullptr}, + {"xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaa", + 8 * 16 + 3, + "This is a test using a larger than block-size key and a larger t" + "han block-size data. The key needs to be hashed before being use" + "d by the HMAC algorithm.", + nullptr, nullptr, + "9b09ffa71b942fcb27635fbcd5b0e944bfdc63644f0713938a7f51535c3a35e2"}, + {nullptr}}; TEST_F(HmacTest, RFC2202andRFC4131) { // This tests against the RFC2202 & RFC4131 test vectors diff --git a/omaha/base/security/md5.c b/omaha/base/security/md5.c index 940fbea..60924b4 100644 --- a/omaha/base/security/md5.c +++ b/omaha/base/security/md5.c @@ -17,8 +17,8 @@ #include "md5.h" -#include #include +#include #define rol(bits, value) (((value) << (bits)) | ((value) >> (32 - (bits)))) diff --git a/omaha/base/security/md5.h b/omaha/base/security/md5.h index c351a27..65a1363 100644 --- a/omaha/base/security/md5.h +++ b/omaha/base/security/md5.h @@ -16,8 +16,8 @@ #ifndef OMAHA_BASE_SECURITY_MD5_H_ #define OMAHA_BASE_SECURITY_MD5_H_ -#include #include +#include #include "hash-internal.h" #ifdef __cplusplus diff --git a/omaha/base/security/p256.c b/omaha/base/security/p256.c index 49a68a8..9c28f29 100644 --- a/omaha/base/security/p256.c +++ b/omaha/base/security/p256.c @@ -173,7 +173,6 @@ void p256_modmul(const p256_int* MOD, memcpy(c, tmp, P256_NBYTES); } -int p256_is_odd(const p256_int* a) { return P256_DIGIT(a, 0) & 1; } int p256_is_even(const p256_int* a) { return !(P256_DIGIT(a, 0) & 1); } p256_digit p256_shl(const p256_int* a, int n, p256_int* b) { diff --git a/omaha/base/security/p256.h b/omaha/base/security/p256.h index bb74ff8..42e1edd 100644 --- a/omaha/base/security/p256.h +++ b/omaha/base/security/p256.h @@ -98,7 +98,6 @@ p256_digit p256_shl(const p256_int* a, int n, p256_int* b); void p256_shr(const p256_int* a, int n, p256_int* b); int p256_is_zero(const p256_int* a); -int p256_is_odd(const p256_int* a); int p256_is_even(const p256_int* a); // Returns -1, 0 or 1. diff --git a/omaha/base/security/p256_ecdsa.c b/omaha/base/security/p256_ecdsa.c index fbd51b3..ba6cc74 100644 --- a/omaha/base/security/p256_ecdsa.c +++ b/omaha/base/security/p256_ecdsa.c @@ -14,8 +14,8 @@ // ======================================================================== #include "p256_ecdsa.h" -#include "p256.h" #include "hmac.h" +#include "p256.h" #include "sha256.h" // Compute k based on given {key, message} pair, 0 < k < n. diff --git a/omaha/base/security/p256_prng.c b/omaha/base/security/p256_prng.c index 581226d..82ed438 100644 --- a/omaha/base/security/p256_prng.c +++ b/omaha/base/security/p256_prng.c @@ -15,8 +15,8 @@ #include -#include "p256_prng.h" #include "hmac.h" +#include "p256_prng.h" #include "sha256.h" static void uint64tobin(uint64_t v, uint8_t* t) { diff --git a/omaha/base/security/p256_prng.h b/omaha/base/security/p256_prng.h index 1701874..98ae5c6 100644 --- a/omaha/base/security/p256_prng.h +++ b/omaha/base/security/p256_prng.h @@ -26,8 +26,8 @@ // NOTE: leakage of initial- and subsequent (if any) seed material allows for // re-generation of the psuedo random sequence and thus derived key material. -#include #include +#include #ifdef __cplusplus extern "C" { @@ -36,8 +36,8 @@ extern "C" { #define P256_PRNG_SIZE 32 typedef struct P256_PRNG_CTX { - uint32_t Key[P256_PRNG_SIZE]; - uint32_t V[P256_PRNG_SIZE]; + uint8_t Key[P256_PRNG_SIZE]; + uint8_t V[P256_PRNG_SIZE]; uint64_t instance_count; uint64_t call_count; } P256_PRNG_CTX; diff --git a/omaha/base/security/p256_unittest.c b/omaha/base/security/p256_unittest.c index 3158ffa..f454ed3 100644 --- a/omaha/base/security/p256_unittest.c +++ b/omaha/base/security/p256_unittest.c @@ -1,6 +1,6 @@ #include -#include #include +#include #include #include "p256.h" diff --git a/omaha/base/security/sha.c b/omaha/base/security/sha.c index 11cd3d7..1cd4457 100644 --- a/omaha/base/security/sha.c +++ b/omaha/base/security/sha.c @@ -17,8 +17,8 @@ #include "sha.h" -#include #include +#include #define rol(bits, value) (((value) << (bits)) | ((value) >> (32 - (bits)))) diff --git a/omaha/base/security/sha256.c b/omaha/base/security/sha256.c index 0414e6a..b95868b 100644 --- a/omaha/base/security/sha256.c +++ b/omaha/base/security/sha256.c @@ -17,6 +17,7 @@ #include "sha256.h" +#include #include #define ror(value, bits) (((value) >> (bits)) | ((value) << (32 - (bits)))) diff --git a/omaha/base/security/sha256.h b/omaha/base/security/sha256.h index 8146f43..560b6e7 100644 --- a/omaha/base/security/sha256.h +++ b/omaha/base/security/sha256.h @@ -16,8 +16,8 @@ #ifndef OMAHA_BASE_SECURITY_SHA256_H_ #define OMAHA_BASE_SECURITY_SHA256_H_ -#include #include +#include #include "hash-internal.h" #ifdef __cplusplus diff --git a/omaha/base/security/util.c b/omaha/base/security/util.c index 7fb083c..51514a0 100644 --- a/omaha/base/security/util.c +++ b/omaha/base/security/util.c @@ -9,3 +9,19 @@ void *always_memset(void *s, int c, size_t n) { always_memset_impl((char*) s, c, n); return s; } + +int ct_memeq(const void* s1, const void* s2, uint32_t n) { + uint8_t diff = 0; + const uint8_t* ps1 = s1; + const uint8_t* ps2 = s2; + + while (n--) { + diff |= *ps1 ^ *ps2; + ps1++; + ps2++; + } + + // Counter-intuitive, but we can't just return diff because we don't want to + // leak the xor of non-equal bytes + return 0 != diff; +} diff --git a/omaha/base/security/util.h b/omaha/base/security/util.h index 32edcaf..05f8bc7 100644 --- a/omaha/base/security/util.h +++ b/omaha/base/security/util.h @@ -2,9 +2,22 @@ #define SECURITY_UTIL_LITE_UTIL_H_ #include +#include + +#ifdef __cplusplus +extern "C" { +#endif // __cplusplus /* An implementation of memset that ought not to be optimized away; * useful for scrubbing security sensitive buffers. */ void *always_memset(void *s, int c, size_t n); +/* Constant-time memory equality test. Returns 0 to indicate equivalence to + * behave in a memcmp()-compatible way. */ +int ct_memeq(const void* s1, const void* s2, uint32_t n); + +#ifdef __cplusplus +} +#endif // __cplusplus + #endif // SECURITY_UTIL_LITE_UTIL_H_ diff --git a/omaha/base/shell.h b/omaha/base/shell.h index eb5ef45..d044712 100644 --- a/omaha/base/shell.h +++ b/omaha/base/shell.h @@ -61,7 +61,7 @@ class Shell { static HRESULT OpenLinkInNewWindow(const TCHAR* url, UseBrowser use_browser); // Execute a file - static HRESULT Shell::Execute(const TCHAR* file); + static HRESULT Execute(const TCHAR* file); // Get the location of a special folder. The special folders are identified // by a unique integer - see the platform SDK files shfolder.h and diff --git a/omaha/base/signatures.cc b/omaha/base/signatures.cc index a0013bb..07da515 100644 --- a/omaha/base/signatures.cc +++ b/omaha/base/signatures.cc @@ -1055,7 +1055,6 @@ HRESULT CryptoVerifySignature::Validate(const std::vector& buffer_in, L"[could not create hash], err 0x%08lx", err)); return HRESULT_FROM_WIN32(err); } - UTIL_LOG(L3, (L"CryptoVerifySignature::Validate new hash 0x%08lx", hash)); b = ::CryptHashData(get(hash), &buffer_in.front(), diff --git a/omaha/base/signaturevalidator.cc b/omaha/base/signaturevalidator.cc index 2468fa6..62e800b 100644 --- a/omaha/base/signaturevalidator.cc +++ b/omaha/base/signaturevalidator.cc @@ -347,46 +347,58 @@ bool CertInfo::ExtractPublicKeyHash(const CERT_CONTEXT* cert_context, } void CertList::FindFirstCert(const CertInfo** result_cert_info, - const CString &company_name_to_match, + const std::vector& company_name_to_match, const CString &orgn_unit_to_match, const CString &trust_authority_to_match, bool allow_test_variant, bool check_cert_is_valid_now) const { - if (!result_cert_info) + if (!result_cert_info) { return; + } + (*result_cert_info) = NULL; for (CertInfoList::const_iterator cert_iter = cert_list_.begin(); cert_iter != cert_list_.end(); ++cert_iter) { - // If any of the criteria does not match, continue on to next certificate - if (!company_name_to_match.IsEmpty()) { - const TCHAR* certificate_company_name = - (*cert_iter)->issuing_company_name_; - bool names_match = company_name_to_match == certificate_company_name; - if (!names_match && allow_test_variant) { - CString test_variant = company_name_to_match; - test_variant += _T(" (TEST)"); - names_match = test_variant == certificate_company_name; + // Find a match between the name of the certificate and one of the + // company names provided as a paramer.. + bool names_match = false; + for (size_t i = 0; i != company_name_to_match.size(); ++i) { + const TCHAR* certificate_company_name = + (*cert_iter)->issuing_company_name_; + names_match = company_name_to_match[i] == certificate_company_name; + if (!names_match && allow_test_variant) { + CString test_variant = company_name_to_match[i]; + test_variant += _T(" (TEST)"); + names_match = test_variant == certificate_company_name; + } + if (names_match) { + break; + } } - if (!names_match) + + // If any of the criteria does not match, continue on to next certificate. + if (!names_match) { continue; - } - if (!orgn_unit_to_match.IsEmpty() && - orgn_unit_to_match != (*cert_iter)->issuing_dept_name_) - continue; - if (!trust_authority_to_match.IsEmpty() && - trust_authority_to_match != (*cert_iter)->trust_authority_name_) - continue; - // All the criteria matched. But, add only if it is a valid certificate. - if (!check_cert_is_valid_now || (*cert_iter)->IsValidNow()) { - (*result_cert_info) = (*cert_iter); - return; - } + } + if (!orgn_unit_to_match.IsEmpty() && + orgn_unit_to_match != (*cert_iter)->issuing_dept_name_) { + continue; + } + if (!trust_authority_to_match.IsEmpty() && + trust_authority_to_match != (*cert_iter)->trust_authority_name_) { + continue; + } + + // All the criteria matched. But, add only if it is a valid certificate. + if (!check_cert_is_valid_now || (*cert_iter)->IsValidNow()) { + (*result_cert_info) = (*cert_iter); + return; + } } } - void ExtractAllCertificatesFromSignature(const wchar_t* signed_file, CertList* cert_list) { if ((!signed_file) || (!cert_list)) @@ -427,7 +439,7 @@ void ExtractAllCertificatesFromSignature(const wchar_t* signed_file, // TODO(omaha): implement the valid now check by adding a parameter to // VerifyAuthenticodeSignature that adds WTD_LIFETIME_SIGNING_FLAG. HRESULT VerifyCertificate(const wchar_t* signed_file, - const wchar_t* subject, + const std::vector& subject, bool allow_test_variant, bool check_cert_is_valid_now, const std::vector* expected_hashes) { diff --git a/omaha/base/signaturevalidator.h b/omaha/base/signaturevalidator.h index 61c1fb7..b850c8d 100644 --- a/omaha/base/signaturevalidator.h +++ b/omaha/base/signaturevalidator.h @@ -169,7 +169,7 @@ class CertList { // criteria. If allow_test_variant is true, the company name will also be // deemed valid if it equals company_name_to_match + " (TEST)". void FindFirstCert(const CertInfo** result_cert_info, - const CString &company_name_to_match, + const std::vector& company_name_to_match, const CString &orgn_unit_to_match, const CString &trust_authority_to_match, bool allow_test_variant, @@ -200,7 +200,7 @@ void ExtractAllCertificatesFromSignature(const wchar_t* signed_file, // The function can verify that the certificate is valid at the time of the // call. HRESULT VerifyCertificate(const wchar_t* signed_file, - const wchar_t* subject, + const std::vector& subject, bool allow_test_variant, bool check_cert_is_valid_now, const std::vector* expected_hashes); diff --git a/omaha/base/signaturevalidator_unittest.cc b/omaha/base/signaturevalidator_unittest.cc index a85bcdf..a3e363e 100644 --- a/omaha/base/signaturevalidator_unittest.cc +++ b/omaha/base/signaturevalidator_unittest.cc @@ -28,9 +28,12 @@ namespace omaha { namespace { bool VerifySigneeIsGoogle(const wchar_t* signed_file) { + std::vector subject; + subject.push_back(kSha256CertificateSubjectName); + subject.push_back(kCertificateSubjectName); return SUCCEEDED( VerifyCertificate(signed_file, - kCertificateSubjectName, + subject, true, // Allow test variant. false, // Check certificate is valid now. NULL)); @@ -38,6 +41,7 @@ bool VerifySigneeIsGoogle(const wchar_t* signed_file) { } // namespace +// Checks Omaha Thawte certificate sha1 (11/28/2016 to 11/21/2019). TEST(CertInfoTest, CertInfo) { const TCHAR kRelativePath[] = _T("unittest_support\\sha1_14F8FDD167F92402B1570B5DC495C815.sys"); @@ -64,8 +68,10 @@ TEST(CertInfoTest, CertInfo) { EXPECT_EQ(3, cert_list.size()); const CertInfo* cert_info = NULL; + std::vector subject; + subject.push_back(kCertificateSubjectName); cert_list.FindFirstCert(&cert_info, - kCertificateSubjectName, + subject, CString(), CString(), false, // Do not allow test variant. @@ -77,9 +83,10 @@ TEST(CertInfoTest, CertInfo) { EXPECT_STREQ(kCertificatePublicKeyHash, cert_info->public_key_hash_); } +// Checks Chrome certificate sha256 (11/06/2018 to 11/17/2021). TEST(CertInfoTest, CertInfo_Sha256) { const TCHAR kRelativePath[] = - _T("unittest_support\\sha2_2a9c21acaaa63a3c58a7b9322bee948d.exe"); + _T("unittest_support\\chrome_setup.exe"); CString executable_full_path(app_util::GetCurrentModuleDirectory()); ASSERT_TRUE(::PathAppend(CStrBuf(executable_full_path, MAX_PATH), @@ -89,11 +96,20 @@ TEST(CertInfoTest, CertInfo_Sha256) { CertList cert_list; ExtractAllCertificatesFromSignature(executable_full_path, &cert_list); - EXPECT_EQ(4, cert_list.size()); + // For some reason, extracting all certificates from the file only yields + // the code signing certificates but skips the time stamping certificates. + // In the case of chrome_setup.exe the following certs are picked up: + // * Dummy certificate. + // * DigiCert SHA2 Assured ID Code Signing CA + // hash 92c1588e85af2201ce7915e8538b492f605b80c6 + // * Google LLC hash cb7e84887f3c6015fe7edfb4f8f36df7dc10590e + EXPECT_EQ(3, cert_list.size()); const CertInfo* cert_info = NULL; + std::vector subject; + subject.push_back(kSha256CertificateSubjectName); cert_list.FindFirstCert(&cert_info, - kSha256CertificateSubjectName, + subject, CString(), CString(), false, // Do not allow test variant. @@ -161,6 +177,12 @@ TEST(SignatureValidatorTest, VerifySigneeIsGoogle_Sha256) { kRelativePath)); ASSERT_TRUE(File::Exists(executable_full_path)); EXPECT_TRUE(VerifySigneeIsGoogle(executable_full_path)); + + executable_full_path = app_util::GetCurrentModuleDirectory(); + ASSERT_TRUE(::PathAppend(CStrBuf(executable_full_path, MAX_PATH), + _T("unittest_support\\chrome_setup.exe"))); + ASSERT_TRUE(File::Exists(executable_full_path)); + EXPECT_TRUE(VerifySigneeIsGoogle(executable_full_path)); } TEST(SignatureValidatorTest, VerifySigneeIsGoogle_DualSigned_Sha1AndSha256) { @@ -213,12 +235,16 @@ TEST(SignatureValidatorTest, VerifyAuthenticodeSignature) { _T("GoogleUpdate_now_expired_cert.exe"), _T("GoogleUpdate_old_signature.exe"), _T("SaveArguments.exe"), + _T("chrome_setup.exe"), + _T("sha2_0c15be4a15bb0903c901b1d6c265302f.msi"), _T("SaveArguments_OmahaTestSigned.exe"), _T("Sha1_4c40dba5f988fae57a57d6457495f98b_and_sha2_2a9c21acaaa63a3c58a7b9322bee948d.exe"), // NOLINT _T("SaveArguments_unsigned_wrong_markup_value.exe"), _T("SaveArguments_wrong_cn.exe"), }; const HRESULT kExpectedResult[] = { + S_OK, + S_OK, S_OK, S_OK, S_OK, diff --git a/omaha/base/synchronized.h b/omaha/base/synchronized.h index 0e40dd4..70ae948 100644 --- a/omaha/base/synchronized.h +++ b/omaha/base/synchronized.h @@ -53,7 +53,6 @@ struct Lockable { // during destruction. Very convinient to use // with the macros __mutexScope and __mutexBlock class AutoSync { - bool first_time_; public: explicit AutoSync(const Lockable *pLock); explicit AutoSync(const Lockable &rLock); @@ -63,6 +62,7 @@ class AutoSync { bool FirstTime(); private: const Lockable * lock_; + bool first_time_; DISALLOW_EVIL_CONSTRUCTORS(AutoSync); }; diff --git a/omaha/base/system_info.h b/omaha/base/system_info.h index 4cb07ba..0757a61 100644 --- a/omaha/base/system_info.h +++ b/omaha/base/system_info.h @@ -32,7 +32,7 @@ class SystemInfo { // Find out if the OS is at least Windows 2000 // Service pack 4. If OS version is less than that // will return false, all other cases true. - static bool SystemInfo::OSWin2KSP4OrLater() { + static bool OSWin2KSP4OrLater() { return ::IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WIN2K), LOBYTE(_WIN32_WINNT_WIN2K), 4); diff --git a/omaha/base/thread.cc b/omaha/base/thread.cc index fd2aab2..0d9c44b 100644 --- a/omaha/base/thread.cc +++ b/omaha/base/thread.cc @@ -25,7 +25,7 @@ namespace omaha { // while even after the thread is dead. It can appear as a handle leak in the // unit test but in fact it is not. -Thread::Thread() : thread_id_(0), thread_(NULL) { +Thread::Thread() : runner_(NULL), thread_id_(0), thread_(NULL) { } Thread::~Thread() { diff --git a/omaha/base/thread.h b/omaha/base/thread.h index 8a1ee17..6ebc452 100644 --- a/omaha/base/thread.h +++ b/omaha/base/thread.h @@ -87,8 +87,8 @@ class Thread { static void __stdcall APCProc(ULONG_PTR dwParam); Runnable* runner_; // Interface to work with. - HANDLE thread_; DWORD thread_id_; + HANDLE thread_; Gate start_gate_; // Synchronizes the thread start. struct ApcInfo { diff --git a/omaha/base/timer.h b/omaha/base/timer.h index 15839e4..1673448 100644 --- a/omaha/base/timer.h +++ b/omaha/base/timer.h @@ -46,11 +46,10 @@ class LowResTimer { bool IsRunning() const { return running_; } private: - bool running_; - uint32 start_; - uint32 elapsed_; uint32 iterations_; + uint32 elapsed_; + uint32 start_; DISALLOW_EVIL_CONSTRUCTORS(LowResTimer); }; @@ -108,12 +107,12 @@ class Timer { #endif private: - bool running_; + uint32 iterations_; + time64 elapsed_; time64 start_; time64 split_; - time64 elapsed_; - uint32 iterations_; + static time64 count_freq_; DISALLOW_EVIL_CONSTRUCTORS(Timer); diff --git a/omaha/base/utils.h b/omaha/base/utils.h index d6d0256..7162a37 100644 --- a/omaha/base/utils.h +++ b/omaha/base/utils.h @@ -164,7 +164,8 @@ bool GPA(HMODULE module, const char* function_name, T* function_pointer) { *function_pointer = reinterpret_cast(::GetProcAddress(module, function_name)); if (NULL == *function_pointer) { - UTIL_LOG(LW, (_T("[GetProcAddress failed %s]"), CA2T(function_name))); + UTIL_LOG(LW, (_T("[GetProcAddress failed %s]"), + static_cast(CA2T(function_name)))); } return NULL != *function_pointer; } diff --git a/omaha/client/bundle_installer.cc b/omaha/client/bundle_installer.cc index 78de088..c1a768a 100644 --- a/omaha/client/bundle_installer.cc +++ b/omaha/client/bundle_installer.cc @@ -433,8 +433,8 @@ BundleInstaller::BundleInstaller(HelpUrlBuilder* help_url_builder, bool is_update_all_apps, bool is_update_check_only, bool is_browser_type_supported) - : help_url_builder_(help_url_builder), - observer_(NULL), + : observer_(NULL), + help_url_builder_(help_url_builder), parent_window_(NULL), state_(kInit), result_(E_UNEXPECTED), diff --git a/omaha/common/const_goopdate.h b/omaha/common/const_goopdate.h index 5383b86..70756c3 100644 --- a/omaha/common/const_goopdate.h +++ b/omaha/common/const_goopdate.h @@ -353,11 +353,6 @@ const TCHAR* const kProgIDGoogleUpdateCoreMachine = const TCHAR* const kProgIDProcessLauncher = APP_NAME_IDENTIFIER _T(".ProcessLauncher"); -const TCHAR* const kProgIDOneClickProcessLauncherUser = - _T(SHORT_COMPANY_NAME_ANSI) _T(".OneClickProcessLauncherUser"); -const TCHAR* const kProgIDOneClickProcessLauncherMachine = - _T(SHORT_COMPANY_NAME_ANSI) _T(".OneClickProcessLauncherMachine"); - const TCHAR* const kProgIDCoCreateAsync = APP_NAME_IDENTIFIER _T(".CoCreateAsync"); diff --git a/omaha/common/google_signaturevalidator.cc b/omaha/common/google_signaturevalidator.cc index f10814a..a5ee236 100644 --- a/omaha/common/google_signaturevalidator.cc +++ b/omaha/common/google_signaturevalidator.cc @@ -34,10 +34,14 @@ HRESULT VerifyGoogleAuthenticodeSignature(const CString& filename, expected_hashes.push_back(kPublicKeyHashes[i]); } + std::vector subject; + subject.push_back(kSha256CertificateSubjectName); + subject.push_back(kCertificateSubjectName); + const bool allow_test_variant = false; const bool check_cert_is_valid_now = false; hr = VerifyCertificate(filename, - kCertificateSubjectName, + subject, allow_test_variant, check_cert_is_valid_now, expected_hashes.empty() ? NULL : &expected_hashes); diff --git a/omaha/common/google_signaturevalidator_unittest.cc b/omaha/common/google_signaturevalidator_unittest.cc index a264406..a1ce60d 100644 --- a/omaha/common/google_signaturevalidator_unittest.cc +++ b/omaha/common/google_signaturevalidator_unittest.cc @@ -22,6 +22,10 @@ namespace omaha { +// This test uses certificate serial numbers to encode the names of the test +// files used below. This is slightly confusing since the signing tools and +// build scrips use the certificate thumbprint (the sha1 hash of +// the certificate) to choose what certificate to sign with. TEST(GoogleSignatureValidatorTest, GoogleSignatureValidator) { // Check current Omaha certificate. CString filename(app_util::GetCurrentModuleDirectory()); @@ -30,7 +34,14 @@ TEST(GoogleSignatureValidatorTest, GoogleSignatureValidator) { EXPECT_TRUE(File::Exists(filename)); EXPECT_HRESULT_SUCCEEDED(VerifyGoogleAuthenticodeSignature(filename, true)); - // Check current Chrome certificate. + // Check current Chrome setup file. + filename = app_util::GetCurrentModuleDirectory(); + EXPECT_TRUE(::PathAppend(CStrBuf(filename, MAX_PATH), + _T("unittest_support\\chrome_setup.exe"))); + EXPECT_TRUE(File::Exists(filename)); + EXPECT_HRESULT_SUCCEEDED(VerifyGoogleAuthenticodeSignature(filename, true)); + + // Check 2912C70C9A2B8A3EF6F6074662D68B8D Chrome certificate. filename = app_util::GetCurrentModuleDirectory(); EXPECT_TRUE(::PathAppend(CStrBuf(filename, MAX_PATH), _T("unittest_support\\chrome_certificate_") @@ -53,7 +64,7 @@ TEST(GoogleSignatureValidatorTest, GoogleSignatureValidator) { EXPECT_TRUE(File::Exists(filename)); EXPECT_HRESULT_FAILED(VerifyGoogleAuthenticodeSignature(filename, true)); - // Check new Omaha/Chrome certificates. + // Check Omaha/Chrome Thawte certificate sha1 (11/28/2016 to 11/21/2019). filename = app_util::GetCurrentModuleDirectory(); EXPECT_TRUE(::PathAppend(CStrBuf(filename, MAX_PATH), _T("unittest_support\\sha1_") @@ -61,6 +72,7 @@ TEST(GoogleSignatureValidatorTest, GoogleSignatureValidator) { EXPECT_TRUE(File::Exists(filename)); EXPECT_HRESULT_SUCCEEDED(VerifyGoogleAuthenticodeSignature(filename, true)); + // Check Omaha/Chrome certificate sha256 (12/15/2015 to 12/16/2018). filename = app_util::GetCurrentModuleDirectory(); EXPECT_TRUE(::PathAppend(CStrBuf(filename, MAX_PATH), _T("unittest_support\\sha2_") @@ -68,6 +80,8 @@ TEST(GoogleSignatureValidatorTest, GoogleSignatureValidator) { EXPECT_TRUE(File::Exists(filename)); EXPECT_HRESULT_SUCCEEDED(VerifyGoogleAuthenticodeSignature(filename, true)); + // Check Omaha/Chrome dual signed certificates sha1 and sha2 + // (11/28/2016 to 11/21/2019) and (12/15/2015 to 12/16/2018), respectively. filename = app_util::GetCurrentModuleDirectory(); EXPECT_TRUE(::PathAppend(CStrBuf(filename, MAX_PATH), _T("unittest_support\\Sha1_") @@ -76,6 +90,14 @@ TEST(GoogleSignatureValidatorTest, GoogleSignatureValidator) { _T("2a9c21acaaa63a3c58a7b9322bee948d.exe"))); EXPECT_TRUE(File::Exists(filename)); EXPECT_HRESULT_SUCCEEDED(VerifyGoogleAuthenticodeSignature(filename, true)); + + // Check Omaha/Chrome certificate sha256 (11/06/2018 to 11/17/2021). + filename = app_util::GetCurrentModuleDirectory(); + EXPECT_TRUE(::PathAppend(CStrBuf(filename, MAX_PATH), + _T("unittest_support\\sha2_") + _T("0c15be4a15bb0903c901b1d6c265302f.msi"))); + EXPECT_TRUE(File::Exists(filename)); + EXPECT_HRESULT_SUCCEEDED(VerifyGoogleAuthenticodeSignature(filename, true)); } } // namespace omaha diff --git a/omaha/common/omaha_customization_unittest.cc b/omaha/common/omaha_customization_unittest.cc index a1fb728..d9ad5fc 100644 --- a/omaha/common/omaha_customization_unittest.cc +++ b/omaha/common/omaha_customization_unittest.cc @@ -45,7 +45,7 @@ TEST(OmahaCustomizationTest, Constants_BuildFiles) { // haven't changed. But, unanticipated changes to most of these // would cause build breaks anyways! Consider deleting them. #ifdef GOOGLE_UPDATE_BUILD - EXPECT_STREQ("Google Inc.", FULL_COMPANY_NAME_ANSI); + EXPECT_STREQ("Google LLC", FULL_COMPANY_NAME_ANSI); EXPECT_STREQ("Google", SHORT_COMPANY_NAME_ANSI); EXPECT_STREQ("Update", PRODUCT_NAME_ANSI); @@ -97,7 +97,7 @@ TEST(OmahaCustomizationTest, Constants_Names) { // haven't changed. But, unanticipated changes to most of these // would cause build breaks anyways! Consider deleting them. #ifdef GOOGLE_UPDATE_BUILD - EXPECT_STREQ(_T("Google Inc."), kFullCompanyName); + EXPECT_STREQ(_T("Google LLC"), kFullCompanyName); EXPECT_STREQ(_T("Google"), SHORT_COMPANY_NAME); EXPECT_STREQ(_T("Google"), kShortCompanyName); EXPECT_STREQ(_T("Update"), PRODUCT_NAME); diff --git a/omaha/common/ping.cc b/omaha/common/ping.cc index 1ac43d7..5064324 100644 --- a/omaha/common/ping.cc +++ b/omaha/common/ping.cc @@ -549,7 +549,7 @@ HRESULT Ping::SendString(bool is_machine, } scoped_ptr response(xml::UpdateResponse::Create()); - hr = web_service_client.SendString(&request_string, response.get()); + hr = web_service_client.SendString(false, &request_string, response.get()); if (FAILED(hr)) { CORE_LOG(LE, (_T("[WebServicesClient::SendString failed][0x%08x]"), hr)); return hr; diff --git a/omaha/common/ping.h b/omaha/common/ping.h index a79b25f..24aac5c 100644 --- a/omaha/common/ping.h +++ b/omaha/common/ping.h @@ -144,6 +144,9 @@ class Ping { // If the caller is local system and a user is logged on, the function // impersonatates that user. // + // Pings are always sent with a background interactivity, even if they + // correspond to on-demand, foreground installs. + // // The function returns S_OK if the ping was successfully sent using either // mechanism. HRESULT Send(bool is_fire_and_forget); diff --git a/omaha/common/protocol_definition.h b/omaha/common/protocol_definition.h index 1c5b4a2..ffa9bf2 100644 --- a/omaha/common/protocol_definition.h +++ b/omaha/common/protocol_definition.h @@ -153,7 +153,7 @@ struct App { }; struct Request { - Request() : is_machine(false), check_period_sec(-1) { + Request() : is_machine(false), check_period_sec(-1), domain_joined(false) { memset(&hw, 0, sizeof(hw)); } @@ -192,6 +192,9 @@ struct Request { // The only group policy value supported so far is "cacheable". CString dlpref; + // True if this machine is part of a managed enterprise domain. + bool domain_joined; + Hw hw; OS os; diff --git a/omaha/common/update_request.cc b/omaha/common/update_request.cc index 0f3d9b1..93e894b 100644 --- a/omaha/common/update_request.cc +++ b/omaha/common/update_request.cc @@ -72,6 +72,8 @@ UpdateRequest* UpdateRequest::Create(bool is_machine, request.dlpref = cm->GetDownloadPreferenceGroupPolicy(); + request.domain_joined = IsEnrolledToDomain(); + // Hardware platform attributes. // // The amount of memory available to the operating system can be less than diff --git a/omaha/common/web_services_client.cc b/omaha/common/web_services_client.cc index f91a0a5..10e8add 100644 --- a/omaha/common/web_services_client.cc +++ b/omaha/common/web_services_client.cc @@ -15,6 +15,7 @@ #include "omaha/common/web_services_client.h" #include +#include "omaha/base/omaha_version.h" #include "omaha/base/const_addresses.h" #include "omaha/base/debug.h" #include "omaha/base/error.h" @@ -101,7 +102,8 @@ HRESULT WebServicesClient::CreateRequest() { return S_OK; } -HRESULT WebServicesClient::Send(const xml::UpdateRequest* update_request, +HRESULT WebServicesClient::Send(bool is_foreground, + const xml::UpdateRequest* update_request, xml::UpdateResponse* update_response) { CORE_LOG(L3, (_T("[WebServicesClient::Send]"))); ASSERT1(update_request); @@ -133,21 +135,31 @@ HRESULT WebServicesClient::Send(const xml::UpdateRequest* update_request, const bool use_encryption = update_request->has_tt_token(); return SendStringWithFallback(use_encryption, + is_foreground, &request_string, update_response); } -HRESULT WebServicesClient::SendString(const CString* request_string, +HRESULT WebServicesClient::SendString(bool is_foreground, + const CString* request_string, xml::UpdateResponse* update_response) { CORE_LOG(L3, (_T("[WebServicesClient::SendString]"))); ASSERT1(request_string); ASSERT1(update_response); - return SendStringWithFallback(false, request_string, update_response); + __mutexBlock(lock_) { + update_request_headers_.clear(); + } + + return SendStringWithFallback(false, + is_foreground, + request_string, + update_response); } HRESULT WebServicesClient::SendStringWithFallback( bool use_encryption, + bool is_foreground, const CString* request_string, xml::UpdateResponse* update_response) { CORE_LOG(L3, (_T("[WebServicesClient::SendStringWithFallback]"))); @@ -155,6 +167,15 @@ HRESULT WebServicesClient::SendStringWithFallback( ASSERT1(request_string); ASSERT1(update_response); + __mutexBlock(lock_) { + update_request_headers_.push_back( + std::make_pair(kHeaderXUpdater, + CString("Omaha-") + GetVersionString())); + update_request_headers_.push_back( + std::make_pair(kHeaderXInteractive, + is_foreground ? _T("fg") : _T("bg"))); + } + const CStringA utf8_request_string(WideToUtf8(*request_string)); CORE_LOG(L3, (_T("[sending web services request as UTF-8][%S]"), utf8_request_string)); diff --git a/omaha/common/web_services_client.h b/omaha/common/web_services_client.h index eba05ca..aa107e6 100644 --- a/omaha/common/web_services_client.h +++ b/omaha/common/web_services_client.h @@ -43,10 +43,14 @@ class WebServicesClientInterface { public: virtual ~WebServicesClientInterface() {} - virtual HRESULT Send(const xml::UpdateRequest* update_request, + // |is_foreground| specifies the interactivity level of this request. + // True means that the protocol request is part of a session initiated by the + // user. + virtual HRESULT Send(bool is_foreground, + const xml::UpdateRequest* update_request, xml::UpdateResponse* update_response) = 0; - - virtual HRESULT SendString(const CString* request_buffer, + virtual HRESULT SendString(bool is_foreground, + const CString* request_buffer, xml::UpdateResponse* response_buffer) = 0; virtual void Cancel() = 0; @@ -102,10 +106,11 @@ class WebServicesClient : public WebServicesClientInterface { const HeadersVector& headers, bool use_cup); - virtual HRESULT Send(const xml::UpdateRequest* update_request, + virtual HRESULT Send(bool is_foreground, + const xml::UpdateRequest* update_request, xml::UpdateResponse* update_response); - - virtual HRESULT SendString(const CString* request_string, + virtual HRESULT SendString(bool is_foreground, + const CString* request_string, xml::UpdateResponse* update_response); virtual void Cancel(); @@ -137,6 +142,7 @@ class WebServicesClient : public WebServicesClientInterface { // Returns S_OK if the request is successfully sent, otherwise it returns the // error corresponding to the first request sent. HRESULT SendStringWithFallback(bool use_encryption, + bool is_foreground, const CString* request_string, xml::UpdateResponse* update_response); diff --git a/omaha/common/web_services_client_unittest.cc b/omaha/common/web_services_client_unittest.cc index 8be4c63..fb46af9 100644 --- a/omaha/common/web_services_client_unittest.cc +++ b/omaha/common/web_services_client_unittest.cc @@ -34,7 +34,9 @@ namespace omaha { // TODO(omaha): test the machine case. -class WebServicesClientTest : public testing::Test { +// This test is parameterized for foreground/background boolean. +class WebServicesClientTest : public testing::Test, + public ::testing::WithParamInterface { protected: virtual void SetUp() { EXPECT_HRESULT_SUCCEEDED( @@ -75,13 +77,17 @@ class WebServicesClientTest : public testing::Test { DWORD ecdsa_enabled_; }; + +INSTANTIATE_TEST_CASE_P(IsForeground, WebServicesClientTest, ::testing::Bool()); + TEST_F(WebServicesClientTest, Send) { EXPECT_HRESULT_SUCCEEDED(web_service_client_->Initialize(update_check_url_, HeadersVector(), false)); // Test sending a user update check request. - EXPECT_HRESULT_SUCCEEDED(web_service_client_->Send(update_request_.get(), + EXPECT_HRESULT_SUCCEEDED(web_service_client_->Send(false, + update_request_.get(), update_response_.get())); EXPECT_TRUE(web_service_client_->is_http_success()); @@ -103,7 +109,7 @@ TEST_F(WebServicesClientTest, Send) { EXPECT_TRUE(etag.IsEmpty()); } -TEST_F(WebServicesClientTest, SendUsingCup) { +TEST_P(WebServicesClientTest, SendUsingCup) { EXPECT_HRESULT_SUCCEEDED(web_service_client_->Initialize(update_check_url_, HeadersVector(), true)); @@ -113,7 +119,8 @@ TEST_F(WebServicesClientTest, SendUsingCup) { EXPECT_EQ(-1, web_service_client_->http_xdaynum_header_value()); // Test sending a user update check request. - EXPECT_HRESULT_SUCCEEDED(web_service_client_->Send(update_request_.get(), + EXPECT_HRESULT_SUCCEEDED(web_service_client_->Send(GetParam(), + update_request_.get(), update_response_.get())); EXPECT_TRUE(web_service_client_->is_http_success()); @@ -136,7 +143,7 @@ TEST_F(WebServicesClientTest, SendUsingCup) { kHeaderXInteractive, &interactive_header); - EXPECT_STREQ(_T("fg"), interactive_header); + EXPECT_STREQ(GetParam() ? _T("fg") : _T("bg"), interactive_header); CString app_ids_header; network_request->QueryHeadersString( @@ -212,8 +219,9 @@ TEST_F(WebServicesClientTest, SendForcingHttps) { EXPECT_FALSE(update_request_->IsEmpty()); EXPECT_TRUE(update_request_->has_tt_token()); - EXPECT_HRESULT_SUCCEEDED(web_service_client_->Send(update_request_.get(), - update_response_.get())); + EXPECT_HRESULT_SUCCEEDED(web_service_client_->Send(false, + update_request_.get(), + update_response_.get())); EXPECT_TRUE(web_service_client_->is_http_success()); NetworkRequest* network_request(network_request()); @@ -244,7 +252,8 @@ TEST_F(WebServicesClientTest, SendWithCustomHeader) { headers, true)); - EXPECT_HRESULT_SUCCEEDED(web_service_client_->Send(update_request_.get(), + EXPECT_HRESULT_SUCCEEDED(web_service_client_->Send(false, + update_request_.get(), update_response_.get())); EXPECT_TRUE(web_service_client_->is_http_success()); @@ -262,7 +271,7 @@ TEST_F(WebServicesClientTest, SendWithCustomHeader) { EXPECT_STREQ(_T("200"), request_age_header); } -TEST_F(WebServicesClientTest, SendString) { +TEST_P(WebServicesClientTest, SendString) { EXPECT_HRESULT_SUCCEEDED(web_service_client_->Initialize(update_check_url_, HeadersVector(), false)); @@ -272,9 +281,30 @@ TEST_F(WebServicesClientTest, SendString) { _T("") _T(""); scoped_ptr response(xml::UpdateResponse::Create()); - EXPECT_HRESULT_SUCCEEDED(web_service_client_->SendString(&request_string, + EXPECT_HRESULT_SUCCEEDED(web_service_client_->SendString(GetParam(), + &request_string, response.get())); EXPECT_TRUE(web_service_client_->is_http_success()); + + NetworkRequest* network_request(network_request()); + + CString interactive_header; + network_request->QueryHeadersString( + WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS, + kHeaderXInteractive, + &interactive_header); + EXPECT_STREQ(GetParam() ? _T("fg") : _T("bg"), interactive_header); + + CString updater_header; + network_request->QueryHeadersString( + WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS, + kHeaderXUpdater, + &updater_header); + + CString expected_updater_header; + SafeCStringAppendFormat(&expected_updater_header, _T("Omaha-%s"), + GetVersionString()); + EXPECT_STREQ(expected_updater_header, updater_header); } TEST_F(WebServicesClientTest, SendStringWithCustomHeader) { @@ -290,7 +320,8 @@ TEST_F(WebServicesClientTest, SendStringWithCustomHeader) { _T("") _T(""); scoped_ptr response(xml::UpdateResponse::Create()); - EXPECT_HRESULT_SUCCEEDED(web_service_client_->SendString(&request_string, + EXPECT_HRESULT_SUCCEEDED(web_service_client_->SendString(false, + &request_string, response.get())); EXPECT_TRUE(web_service_client_->is_http_success()); diff --git a/omaha/common/xml_const.cc b/omaha/common/xml_const.cc index 0cb8727..100ae8a 100644 --- a/omaha/common/xml_const.cc +++ b/omaha/common/xml_const.cc @@ -78,6 +78,7 @@ const TCHAR* const kDayOfLastActivity = _T("ad"); const TCHAR* const kDayOfLastRollCall = _T("rd"); const TCHAR* const kDedup = _T("dedup"); const TCHAR* const kDlPref = _T("dlpref"); +const TCHAR* const kDomainJoined = _T("domainjoined"); const TCHAR* const kDownloaded = _T("downloaded"); const TCHAR* const kDownloader = _T("downloader"); const TCHAR* const kDownloadTime = _T("download_time_ms"); @@ -138,8 +139,10 @@ const TCHAR* const kTimeSinceUpdateAvailable = _T("time_since_update_available_ms"); const TCHAR* const kTotal = _T("total"); const TCHAR* const kTTToken = _T("tttoken"); -const TCHAR* const kUpdateDisabled = _T("updatedisabled"); const TCHAR* const kUpdateCheckTime= _T("update_check_time_ms"); +const TCHAR* const kUpdateDisabled = _T("updatedisabled"); +const TCHAR* const kUpdater = _T("updater"); +const TCHAR* const kUpdaterVersion = _T("updaterversion"); const TCHAR* const kUrl = _T("url"); const TCHAR* const kUserId = _T("userid"); const TCHAR* const kVersion = _T("version"); @@ -171,6 +174,7 @@ const TCHAR* const kSuccessActionExitSilentlyOnLaunchCmd = _T("exitsilentlyonlaunchcmd"); const TCHAR* const kTrue = _T("true"); const TCHAR* const kUid = _T("uid"); +const TCHAR* const kUpdater = _T("Omaha"); const TCHAR* const kUntrusted = _T("untrusted"); const TCHAR* const kUpdate = _T("update"); const TCHAR* const kVersion3 = _T("3.0"); diff --git a/omaha/common/xml_const.h b/omaha/common/xml_const.h index 2c9392e..7c8836f 100644 --- a/omaha/common/xml_const.h +++ b/omaha/common/xml_const.h @@ -78,6 +78,7 @@ extern const TCHAR* const kDayOfLastActivity; extern const TCHAR* const kDayOfLastRollCall; extern const TCHAR* const kDedup; extern const TCHAR* const kDlPref; +extern const TCHAR* const kDomainJoined; extern const TCHAR* const kDownloaded; extern const TCHAR* const kDownloader; extern const TCHAR* const kDownloadTime; @@ -137,8 +138,10 @@ extern const TCHAR* const kTimeSinceDownloadStart; extern const TCHAR* const kTimeSinceUpdateAvailable; extern const TCHAR* const kTotal; extern const TCHAR* const kTTToken; -extern const TCHAR* const kUpdateDisabled; extern const TCHAR* const kUpdateCheckTime; +extern const TCHAR* const kUpdateDisabled; +extern const TCHAR* const kUpdater; +extern const TCHAR* const kUpdaterVersion; extern const TCHAR* const kUrl; extern const TCHAR* const kUserId; extern const TCHAR* const kVersion; @@ -171,6 +174,7 @@ extern const TCHAR* const kSuccessActionExitSilentlyOnLaunchCmd; extern const TCHAR* const kTrue; extern const TCHAR* const kUid; extern const TCHAR* const kUntrusted; +extern const TCHAR* const kUpdater; extern const TCHAR* const kUpdate; extern const TCHAR* const kVersion3; diff --git a/omaha/common/xml_parser.cc b/omaha/common/xml_parser.cc index 365b06f..323ac28 100644 --- a/omaha/common/xml_parser.cc +++ b/omaha/common/xml_parser.cc @@ -908,7 +908,16 @@ HRESULT XmlParser::BuildRequestElement() { hr = AddXMLAttributeNode(element, kXmlNamespace, - xml::attribute::kVersion, + xml::attribute::kUpdater, + xml::value::kUpdater); + if (FAILED(hr)) { + return hr; + } + + + hr = AddXMLAttributeNode(element, + kXmlNamespace, + xml::attribute::kUpdaterVersion, request_->omaha_version); if (FAILED(hr)) { return hr; @@ -1016,6 +1025,14 @@ HRESULT XmlParser::BuildRequestElement() { } } + hr = AddXMLAttributeNode(element, + kXmlNamespace, + xml::attribute::kDomainJoined, + request_->domain_joined ? _T("1") : _T("0")); + if (FAILED(hr)) { + return hr; + } + hr = BuildHwElement(element); if (FAILED(hr)) { return hr; diff --git a/omaha/common/xml_parser_unittest.cc b/omaha/common/xml_parser_unittest.cc index c6e1527..04088fc 100644 --- a/omaha/common/xml_parser_unittest.cc +++ b/omaha/common/xml_parser_unittest.cc @@ -72,6 +72,7 @@ TEST_F(XmlParserTest, GenerateRequestWithoutUserId_MachineUpdateRequest) { xml_request.omaha_shell_version = _T("1.2.1.1"); xml_request.test_source = _T("dev"); xml_request.request_id = _T("{387E2718-B39C-4458-98CC-24B5293C8383}"); + xml_request.domain_joined = true; xml_request.hw.physmemory = 2; xml_request.hw.has_sse = true; xml_request.hw.has_sse2 = true; @@ -124,7 +125,7 @@ TEST_F(XmlParserTest, GenerateRequestWithoutUserId_MachineUpdateRequest) { app2.cohort_name = _T("Name2"); xml_request.apps.push_back(app2); - CString expected_buffer = _T("some untrusted data"); // NOLINT + CString expected_buffer = _T("some untrusted data"); // NOLINT CString actual_buffer; EXPECT_HRESULT_SUCCEEDED(XmlParser::SerializeRequest(*update_request, @@ -152,6 +153,7 @@ TEST_F(XmlParserTest, GenerateRequestWithUserId_MachineUpdateRequest) { xml_request.omaha_shell_version = _T("1.2.3.4"); xml_request.test_source = _T("dev"); xml_request.request_id = _T("{387E2718-B39C-4458-98CC-24B5293C8384}"); + xml_request.domain_joined = true; xml_request.hw.physmemory = 2; xml_request.hw.has_sse = true; xml_request.hw.has_sse2 = true; @@ -223,7 +225,7 @@ TEST_F(XmlParserTest, GenerateRequestWithUserId_MachineUpdateRequest) { xml_request.apps.push_back(app2); - CString expected_buffer = _T(""); // NOLINT + CString expected_buffer = _T(""); // NOLINT CString actual_buffer; EXPECT_HRESULT_SUCCEEDED(XmlParser::SerializeRequest(*update_request, @@ -398,6 +400,7 @@ TEST_F(XmlParserTest, Serialize_WithInvalidXmlCharacters) { xml_request.omaha_shell_version = _T("1.2.1.1"); xml_request.test_source = _T("\"malicious segement=\"&"); xml_request.request_id = _T("{387E2718-B39C-4458-98CC-24B5293C8385}"); + xml_request.domain_joined = true; xml_request.hw.physmemory = 2; xml_request.hw.has_sse = true; xml_request.hw.has_sse2 = true; @@ -426,7 +429,7 @@ TEST_F(XmlParserTest, Serialize_WithInvalidXmlCharacters) { app.data.push_back(data1); xml_request.apps.push_back(app); - const CString expected_buffer = _T(""); // NOLINT + const CString expected_buffer = _T(""); // NOLINT CString actual_buffer; EXPECT_HRESULT_SUCCEEDED(XmlParser::SerializeRequest(*update_request, @@ -444,6 +447,7 @@ TEST_F(XmlParserTest, HwAttributes) { xml_request.omaha_shell_version = _T("1.2.1.1"); xml_request.test_source = _T("dev"); xml_request.request_id = _T("{387E2718-B39C-4458-98CC-24B5293C8385}"); + xml_request.domain_joined = true; xml_request.hw.physmemory = 0; xml_request.hw.has_sse = false; xml_request.hw.has_sse2 = false; @@ -459,7 +463,7 @@ TEST_F(XmlParserTest, HwAttributes) { xml_request.check_period_sec = 120000; xml_request.uid.Empty(); - CString expected_buffer = _T(""); // NOLINT + CString expected_buffer = _T(""); // NOLINT CString actual_buffer; EXPECT_HRESULT_SUCCEEDED(XmlParser::SerializeRequest(*update_request, &actual_buffer)); @@ -474,7 +478,7 @@ TEST_F(XmlParserTest, HwAttributes) { xml_request.hw.has_sse42 = true; xml_request.hw.has_avx = true; - expected_buffer = _T(""); // NOLINT + expected_buffer = _T(""); // NOLINT EXPECT_HRESULT_SUCCEEDED(XmlParser::SerializeRequest(*update_request, &actual_buffer)); EXPECT_STREQ(expected_buffer, actual_buffer); @@ -498,6 +502,7 @@ TEST_P(XmlParserTest, DlPref) { xml_request.omaha_shell_version = _T("1.2.1.1"); xml_request.test_source = _T("dev"); xml_request.request_id = _T("{387E2718-B39C-4458-98CC-24B5293C8385}"); + xml_request.domain_joined = true; xml_request.hw.physmemory = 0; xml_request.hw.has_sse = false; xml_request.hw.has_sse2 = false; @@ -513,7 +518,7 @@ TEST_P(XmlParserTest, DlPref) { xml_request.check_period_sec = 120000; xml_request.uid.Empty(); - const TCHAR* expected_request_fmt = _T(""); // NOLINT + const TCHAR* expected_request_fmt = _T(""); // NOLINT CString expected_buffer; expected_buffer.Format(expected_request_fmt, IsDomain() ? _T(" dlpref=\"cacheable\"") : _T("")); @@ -545,6 +550,7 @@ TEST_P(XmlParserTest, DlPrefUnknownPolicy) { xml_request.omaha_shell_version = _T("1.2.1.1"); xml_request.test_source = _T("dev"); xml_request.request_id = _T("{387E2718-B39C-4458-98CC-24B5293C8385}"); + xml_request.domain_joined = true; xml_request.hw.physmemory = 0; xml_request.hw.has_sse = false; xml_request.hw.has_sse2 = false; @@ -560,7 +566,7 @@ TEST_P(XmlParserTest, DlPrefUnknownPolicy) { xml_request.check_period_sec = 120000; xml_request.uid.Empty(); - const CString expected_buffer = _T(""); // NOLINT + const CString expected_buffer = _T(""); // NOLINT CString actual_buffer; EXPECT_HRESULT_SUCCEEDED(XmlParser::SerializeRequest(*update_request, &actual_buffer)); @@ -579,6 +585,7 @@ TEST_F(XmlParserTest, PingFreshness) { xml_request.omaha_shell_version = _T("1.2.1.1"); xml_request.test_source = _T("dev"); xml_request.request_id = _T("{387E2718-B39C-4458-98CC-24B5293C8385}"); + xml_request.domain_joined = true; xml_request.hw.physmemory = 0; xml_request.hw.has_sse = false; xml_request.hw.has_sse2 = false; @@ -603,7 +610,7 @@ TEST_F(XmlParserTest, PingFreshness) { xml_request.apps[0].ping.ping_freshness = _T("{d0d8cb57-ca4a-4e82-8196-84f47c0ca085}"); - const CString expected_buffer = _T(""); // NOLINT + const CString expected_buffer = _T(""); // NOLINT CString actual_buffer; EXPECT_HRESULT_SUCCEEDED(XmlParser::SerializeRequest(*update_request, &actual_buffer)); @@ -611,6 +618,46 @@ TEST_F(XmlParserTest, PingFreshness) { EXPECT_STREQ(expected_buffer, actual_buffer); } +TEST_P(XmlParserTest, DomainJoined) { + EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE_DEV, + kRegValueIsEnrolledToDomain, + IsDomain() ? 1UL : 0UL)); + + scoped_ptr update_request( + UpdateRequest::Create(false, _T(""), _T("is"), _T(""))); + + request::Request& xml_request = get_xml_request(update_request.get()); + + xml_request.omaha_version = _T("1.3.24.1"); + xml_request.omaha_shell_version = _T("1.2.1.1"); + xml_request.test_source = _T("dev"); + xml_request.request_id = _T("{387E2718-B39C-4458-98CC-24B5293C8385}"); + xml_request.hw.physmemory = 0; + xml_request.hw.has_sse = false; + xml_request.hw.has_sse2 = false; + xml_request.hw.has_sse3 = false; + xml_request.hw.has_ssse3 = false; + xml_request.hw.has_sse41 = false; + xml_request.hw.has_sse42 = false; + xml_request.hw.has_avx = false; + xml_request.os.platform = _T("win"); + xml_request.os.version = _T("9.0"); + xml_request.os.service_pack = _T("Service Pack 3"); + xml_request.os.arch = _T("unknown"); + xml_request.check_period_sec = 120000; + xml_request.uid.Empty(); + + const CString expected_buffer_fmt = _T(""); // NOLINT + CString expected_buffer; + expected_buffer.Format(expected_buffer_fmt, IsDomain() ? _T("1") : _T("0")); + CString actual_buffer; + EXPECT_HRESULT_SUCCEEDED(XmlParser::SerializeRequest(*update_request, + &actual_buffer)); + EXPECT_STREQ(expected_buffer, actual_buffer); + + RegKey::DeleteValue(MACHINE_REG_UPDATE_DEV, kRegValueIsEnrolledToDomain); +} + } // namespace xml } // namespace omaha diff --git a/omaha/core/resource.rc b/omaha/core/resource.rc index 08a8b09..f20ef39 100644 --- a/omaha/core/resource.rc +++ b/omaha/core/resource.rc @@ -57,7 +57,7 @@ BEGIN // Strings that get localized must appear as literals so the tools can replace // them. For open source builds, which don't use these tools, use constants. #ifdef GOOGLE_UPDATE_BUILD - VALUE "CompanyName", "Google Inc." + VALUE "CompanyName", "Google LLC" VALUE "FileDescription", "Google Update Core" #else VALUE "CompanyName", FULL_COMPANY_NAME_ANSI @@ -65,7 +65,7 @@ BEGIN #endif VALUE "FileVersion", VERSION_NUMBER_STRING VALUE "InternalName", OMAHA_APP_NAME_ANSI - VALUE "LegalCopyright", "Copyright 2007-2010 Google Inc." + VALUE "LegalCopyright", "Copyright 2018 Google LLC" VALUE "OriginalFilename", MAIN_EXE_BASE_NAME_ANSI ".exe" #ifdef GOOGLE_UPDATE_BUILD VALUE "ProductName", "Google Update" diff --git a/omaha/crashhandler/resource.rc b/omaha/crashhandler/resource.rc index dde6b28..7c949e3 100644 --- a/omaha/crashhandler/resource.rc +++ b/omaha/crashhandler/resource.rc @@ -57,7 +57,7 @@ BEGIN // Strings that get localized must appear as literals so the tools can replace // them. For open source builds, which don't use these tools, use constants. #ifdef GOOGLE_UPDATE_BUILD - VALUE "CompanyName", "Google Inc." + VALUE "CompanyName", "Google LLC" VALUE "FileDescription", "Google Crash Handler" #else VALUE "CompanyName", FULL_COMPANY_NAME_ANSI @@ -65,7 +65,7 @@ BEGIN #endif VALUE "FileVersion", VERSION_NUMBER_STRING VALUE "InternalName", OMAHA_APP_NAME_ANSI - VALUE "LegalCopyright", "Copyright 2007-2010 Google Inc." + VALUE "LegalCopyright", "Copyright 2018 Google LLC" VALUE "OriginalFilename", MAIN_EXE_BASE_NAME_ANSI ".exe" #ifdef GOOGLE_UPDATE_BUILD VALUE "ProductName", "Google Update" diff --git a/omaha/enterprise/generate_group_policy_template_admx.py b/omaha/enterprise/generate_group_policy_template_admx.py index dcd2534..096ae41 100644 --- a/omaha/enterprise/generate_group_policy_template_admx.py +++ b/omaha/enterprise/generate_group_policy_template_admx.py @@ -78,8 +78,7 @@ displayName="$(string.Pol_AutoUpdateCheckPeriod)" explainText="$(string.Explain_AutoUpdateCheckPeriod)" presentation="$(presentation.Pol_AutoUpdateCheckPeriod)" - key="%(RootPolicyKey)s" - valueName="AutoUpdateCheckPeriodMinutes"> + key="%(RootPolicyKey)s"> @@ -133,7 +132,7 @@ displayName="$(string.Pol_ProxyMode)" explainText="$(string.Explain_ProxyMode)" presentation="$(presentation.Pol_ProxyMode)" - key="%(RootPolicyKey)s" valueName="ProxyMode"> + key="%(RootPolicyKey)s"> diff --git a/omaha/enterprise/installer/enterprise_standalone_installer.wxs.xml b/omaha/enterprise/installer/enterprise_standalone_installer.wxs.xml index 10ac851..5df8a35 100644 --- a/omaha/enterprise/installer/enterprise_standalone_installer.wxs.xml +++ b/omaha/enterprise/installer/enterprise_standalone_installer.wxs.xml @@ -1,7 +1,7 @@ - + diff --git a/omaha/enterprise/installer/utils.py b/omaha/enterprise/installer/utils.py index 65b0fa0..01c3b06 100644 --- a/omaha/enterprise/installer/utils.py +++ b/omaha/enterprise/installer/utils.py @@ -5,6 +5,7 @@ """ import binascii +from datetime import date import md5 @@ -125,6 +126,7 @@ def GetWixCandleFlags( msi_upgradecode_guid=None, product_installer_path=None, product_installer_data=None, + product_icon_path=None, product_installer_install_command=None, product_installer_disable_update_registration_arg=None, product_custom_params=None, @@ -137,6 +139,7 @@ def GetWixCandleFlags( '-dProductNameLegalIdentifier=' + product_name_legal_identifier, '-dProductVersion=' + msi_product_version, '-dProductOriginalVersionString=' + product_version, + '-dProductBuildYear=' + str(date.today().year), '-dProductGuid=' + product_guid, ] @@ -179,6 +182,9 @@ def GetWixCandleFlags( '==MSI-PRODUCT-ID==', msi_product_id) flags.append('-dProductInstallerData=' + product_installer_data) + if product_icon_path: + flags.append('-dProductIcon=' + product_icon_path) + if architecture: # Translate some common strings, like from platform.machine(). arch_map = { diff --git a/omaha/goopdate/app.cc b/omaha/goopdate/app.cc index dba77f8..b82d826 100644 --- a/omaha/goopdate/app.cc +++ b/omaha/goopdate/app.cc @@ -59,11 +59,11 @@ App::App(const GUID& app_guid, bool is_update, AppBundle* app_bundle) installer_result_code_(0), installer_result_extra_code1_(0), post_install_action_(POST_INSTALL_ACTION_DEFAULT), - can_skip_signature_verification_(false), + source_url_index_(-1), + state_cancelled_(STATE_ERROR), previous_total_download_bytes_(0), num_bytes_downloaded_(0), - source_url_index_(-1), - state_cancelled_(STATE_ERROR) { + can_skip_signature_verification_(false) { ASSERT1(!::IsEqualGUID(GUID_NULL, app_guid_)); current_version_.reset(new AppVersion(this)); diff --git a/omaha/goopdate/app.h b/omaha/goopdate/app.h index 8253393..d1dcc77 100644 --- a/omaha/goopdate/app.h +++ b/omaha/goopdate/app.h @@ -334,7 +334,7 @@ class App : public ModelObject { // Returns the target version prefix for the app, if the machine is joined to // a domain and has the corresponding group policy set. - CString App::GetTargetVersionPrefix() const; + CString GetTargetVersionPrefix() const; // Updates num bytes downloaded by adding newly downloaded bytes. void UpdateNumBytesDownloaded(uint64 num_bytes); @@ -478,10 +478,6 @@ class App : public ModelObject { // server_install_data_index_. CString server_install_data_; - // The packages of the app have been trusted by other means and the - // signature verification can be omitted. - bool can_skip_signature_verification_; - bool is_canceled_; ErrorContext error_context_; CString completion_message_; @@ -513,6 +509,10 @@ class App : public ModelObject { uint64 num_bytes_downloaded_; uint64 time_metrics_[TIME_METRICS_MAX]; + // The packages of the app have been trusted by other means and the + // signature verification can be omitted. + bool can_skip_signature_verification_; + DISALLOW_COPY_AND_ASSIGN(App); }; diff --git a/omaha/goopdate/app_command_unittest.cc b/omaha/goopdate/app_command_unittest.cc index f66cff9..4c2dde7 100644 --- a/omaha/goopdate/app_command_unittest.cc +++ b/omaha/goopdate/app_command_unittest.cc @@ -42,13 +42,13 @@ const TCHAR* const kCmdLineExit0 = _T("cmd.exe /c \"exit 0\""); const TCHAR* const kCmdLineExit3 = _T("cmd.exe /c \"exit 3\""); const TCHAR* const kCmdLineExitX = _T("cmd.exe /c \"exit %1\""); const TCHAR* const kCmdLineSleep1 = - _T("cmd.exe /c \"ping.exe 1.1.1.1 -n 1 -w 1000 >NUL\""); + _T("cmd.exe /c \"ping.exe 2.2.2.2 -n 1 -w 1000 >NUL\""); const TCHAR* const kCmdLineEchoHelloWorldAscii = _T("cmd.exe /a /c \"echo Hello World\""); const TCHAR* const kCmdLineEchoHelloWorldUnicode = _T("cmd.exe /u /c \"echo Hello World\""); const TCHAR* const kCmdLineEchoWithSleep = - _T("cmd.exe /c \"echo Hello World& ping.exe 1.1.1.1 -n 1 -w 1000 >NUL & ") + _T("cmd.exe /c \"echo Hello World& ping.exe 2.2.2.2 -n 1 -w 1000 >NUL & ") _T("echo Goodbye World\""); const TCHAR* const kCmdId1 = _T("command 1"); diff --git a/omaha/goopdate/app_manager.cc b/omaha/goopdate/app_manager.cc index ac13ec6..4aaf0b4 100644 --- a/omaha/goopdate/app_manager.cc +++ b/omaha/goopdate/app_manager.cc @@ -75,8 +75,8 @@ class IsAppRegisteredFunc return S_OK; } private: - CString guid_; bool is_registered_; + CString guid_; }; // Enumerates all sub keys of the key and calls the functor for each of them, diff --git a/omaha/goopdate/app_state_checking_for_update.cc b/omaha/goopdate/app_state_checking_for_update.cc index 262de14..e2c77a0 100644 --- a/omaha/goopdate/app_state_checking_for_update.cc +++ b/omaha/goopdate/app_state_checking_for_update.cc @@ -156,6 +156,7 @@ void AppStateCheckingForUpdate::HandleUpdateAvailable(App* app, VERIFY1(SUCCEEDED(formatter.LoadString(IDS_UNKNOWN_APPLICATION, &error_message))); Error(app, ErrorContext(hr), error_message); + return; } const TCHAR* action = app->is_update() ? _T("update") : _T("install"); diff --git a/omaha/goopdate/app_unittest.cc b/omaha/goopdate/app_unittest.cc index 9ef8f00..feea852 100644 --- a/omaha/goopdate/app_unittest.cc +++ b/omaha/goopdate/app_unittest.cc @@ -68,11 +68,13 @@ class AppTest : public AppTestBaseWithRegistryOverride { update_response_.reset(xml::UpdateResponse::Create()); } - void AddAppResponse(const CString& status) { + void AddAppResponse(const CString& status, + const std::vector& data) { xml::response::App app; app.status = xml::response::kStatusOkValue; app.appid = kAppId1; app.update_check.status = status; + app.data = data; xml::response::Response response; @@ -245,7 +247,8 @@ TEST_P(AppAutoUpdateTest, CheckGroupPolicy_ManualUpdatesDisabled) { TEST_F(AppInstallTest, PostUpdateCheck_NoUpdate) { SetAppStateForUnitTest(app_, new fsm::AppStateCheckingForUpdate); - AddAppResponse(xml::response::kStatusNoUpdate); + AddAppResponse(xml::response::kStatusNoUpdate, + std::vector()); app_->PostUpdateCheck(S_OK, update_response_.get()); EXPECT_EQ(STATE_ERROR, app_->state()); @@ -254,7 +257,8 @@ TEST_F(AppInstallTest, PostUpdateCheck_NoUpdate) { TEST_F(AppInstallTest, PostUpdateCheck_UpdateAvailable) { SetAppStateForUnitTest(app_, new fsm::AppStateCheckingForUpdate); - AddAppResponse(xml::response::kStatusOkValue); + AddAppResponse(xml::response::kStatusOkValue, + std::vector()); app_->PostUpdateCheck(S_OK, update_response_.get()); EXPECT_EQ(STATE_UPDATE_AVAILABLE, app_->state()); @@ -265,7 +269,8 @@ TEST_F(AppInstallTest, PostUpdateCheck_UpdateAvailable) { TEST_P(AppInstallTest, PostUpdateCheck_UpdateAvailable_InstallDisabled) { SetPolicy(kInstallPolicyApp1, kPolicyDisabled); SetAppStateForUnitTest(app_, new fsm::AppStateCheckingForUpdate); - AddAppResponse(xml::response::kStatusOkValue); + AddAppResponse(xml::response::kStatusOkValue, + std::vector()); app_->PostUpdateCheck(S_OK, update_response_.get()); EXPECT_EQ(STATE_UPDATE_AVAILABLE, app_->state()); @@ -274,7 +279,8 @@ TEST_P(AppInstallTest, PostUpdateCheck_UpdateAvailable_InstallDisabled) { TEST_F(AppManualUpdateTest, PostUpdateCheck_NoUpdate) { SetAppStateForUnitTest(app_, new fsm::AppStateCheckingForUpdate); - AddAppResponse(xml::response::kStatusNoUpdate); + AddAppResponse(xml::response::kStatusNoUpdate, + std::vector()); app_->PostUpdateCheck(S_OK, update_response_.get()); EXPECT_EQ(STATE_NO_UPDATE, app_->state()); @@ -283,7 +289,8 @@ TEST_F(AppManualUpdateTest, PostUpdateCheck_NoUpdate) { TEST_F(AppManualUpdateTest, PostUpdateCheck_UpdateAvailable) { SetAppStateForUnitTest(app_, new fsm::AppStateCheckingForUpdate); - AddAppResponse(xml::response::kStatusOkValue); + AddAppResponse(xml::response::kStatusOkValue, + std::vector()); app_->PostUpdateCheck(S_OK, update_response_.get()); EXPECT_EQ(STATE_UPDATE_AVAILABLE, app_->state()); @@ -295,7 +302,8 @@ TEST_P(AppManualUpdateTest, PostUpdateCheck_UpdateAvailable_AllUpdatesDisabled) { SetPolicy(kUpdatePolicyApp1, kPolicyDisabled); SetAppStateForUnitTest(app_, new fsm::AppStateCheckingForUpdate); - AddAppResponse(xml::response::kStatusOkValue); + AddAppResponse(xml::response::kStatusOkValue, + std::vector()); app_->PostUpdateCheck(S_OK, update_response_.get()); EXPECT_EQ(STATE_UPDATE_AVAILABLE, app_->state()); @@ -304,7 +312,8 @@ TEST_P(AppManualUpdateTest, TEST_F(AppAutoUpdateTest, PostUpdateCheck_NoUpdate) { SetAppStateForUnitTest(app_, new fsm::AppStateCheckingForUpdate); - AddAppResponse(xml::response::kStatusNoUpdate); + AddAppResponse(xml::response::kStatusNoUpdate, + std::vector()); app_->PostUpdateCheck(S_OK, update_response_.get()); EXPECT_EQ(STATE_NO_UPDATE, app_->state()); @@ -313,7 +322,8 @@ TEST_F(AppAutoUpdateTest, PostUpdateCheck_NoUpdate) { TEST_F(AppAutoUpdateTest, PostUpdateCheck_UpdateAvailable) { SetAppStateForUnitTest(app_, new fsm::AppStateCheckingForUpdate); - AddAppResponse(xml::response::kStatusOkValue); + AddAppResponse(xml::response::kStatusOkValue, + std::vector()); app_->PostUpdateCheck(S_OK, update_response_.get()); EXPECT_EQ(STATE_UPDATE_AVAILABLE, app_->state()); @@ -324,7 +334,42 @@ TEST_F(AppAutoUpdateTest, PostUpdateCheck_UpdateAvailable) { TEST_P(AppAutoUpdateTest, PostUpdateCheck_UpdateAvailable_AllUpdatesDisabled) { SetPolicy(kUpdatePolicyApp1, kPolicyDisabled); SetAppStateForUnitTest(app_, new fsm::AppStateCheckingForUpdate); - AddAppResponse(xml::response::kStatusOkValue); + AddAppResponse(xml::response::kStatusOkValue, + std::vector()); + + app_->PostUpdateCheck(S_OK, update_response_.get()); + EXPECT_EQ(STATE_UPDATE_AVAILABLE, app_->state()); + EXPECT_EQ(S_OK, app_->error_code()); +} + +TEST_F(AppAutoUpdateTest, + PostUpdateCheck_UpdateAvailable_NonExistentInstallDataIndex) { + SetAppStateForUnitTest(app_, new fsm::AppStateCheckingForUpdate); + AddAppResponse(xml::response::kStatusOkValue, + std::vector()); + app_->put_serverInstallDataIndex(CComBSTR(_T("NonExistent"))); + + // Supress the Assert because the XML parser creation fails at + // App::PostUpdateCheck() due to registry redirection. + ExpectAsserts expect_asserts; + app_->PostUpdateCheck(S_OK, update_response_.get()); + + EXPECT_EQ(STATE_ERROR, app_->state()); + EXPECT_EQ(GOOPDATE_E_INVALID_INSTALL_DATA_INDEX, app_->error_code()); +} + +TEST_F(AppAutoUpdateTest, + PostUpdateCheck_UpdateAvailable_ExistingInstallDataIndex) { + SetAppStateForUnitTest(app_, new fsm::AppStateCheckingForUpdate); + std::vector datas; + xml::response::Data data; + data.status = _T("ok"); + data.name = _T("install"); + data.install_data_index = _T("Existing"); + data.install_data = _T("{}"); + datas.push_back(data); + AddAppResponse(xml::response::kStatusOkValue, datas); + app_->put_serverInstallDataIndex(CComBSTR(_T("Existing"))); app_->PostUpdateCheck(S_OK, update_response_.get()); EXPECT_EQ(STATE_UPDATE_AVAILABLE, app_->state()); diff --git a/omaha/goopdate/build.scons b/omaha/goopdate/build.scons index c8e771c..2d507f8 100644 --- a/omaha/goopdate/build.scons +++ b/omaha/goopdate/build.scons @@ -347,7 +347,6 @@ gd_inputs = [ 'model.cc', 'model_object.cc', 'ondemand.cc', - 'oneclick_process_launcher.cc', 'offline_utils.cc', 'string_formatter.cc', 'package.cc', diff --git a/omaha/goopdate/crash.cc b/omaha/goopdate/crash.cc index 05d8549..a68fc6a 100644 --- a/omaha/goopdate/crash.cc +++ b/omaha/goopdate/crash.cc @@ -254,8 +254,8 @@ HRESULT CrashReporter::UploadCrash(bool is_out_of_process, std::wstring report_code; CrashReportSender sender(checkpoint_file_.GetString()); sender.set_max_reports_per_day(max_reports_per_day_); - CORE_LOG(L2, (_T("[Uploading crash report]") - _T("[%s][%s]"), crash_report_url_, crash_filename)); + OPT_LOG(L2, (_T("[Uploading crash report]") + _T("[%s][%s]"), crash_report_url_, crash_filename)); ASSERT1(!crash_report_url_.IsEmpty()); std::map crash_files; crash_files[L"upload_file_minidump"] = crash_filename.GetString(); @@ -286,7 +286,7 @@ HRESULT CrashReporter::UploadCrash(bool is_out_of_process, default: hr = E_FAIL; break; - }; + } // Continue the retry loop only when it could not contact the server. if (res != google_breakpad::RESULT_FAILED) { @@ -294,7 +294,7 @@ HRESULT CrashReporter::UploadCrash(bool is_out_of_process, } } - CORE_LOG(L2, (_T("[crash report code = %s]"), *report_id)); + OPT_LOG(L2, (_T("[crash report code = %s]"), *report_id)); CString product_name = GetProductNameForEventLogging(parameters); diff --git a/omaha/goopdate/google_update.cc b/omaha/goopdate/google_update.cc index 0d9a02f..0b3e5af 100644 --- a/omaha/goopdate/google_update.cc +++ b/omaha/goopdate/google_update.cc @@ -31,7 +31,6 @@ #include "omaha/goopdate/google_update3.h" #include "omaha/goopdate/omaha3_idl_datax.h" #include "omaha/goopdate/ondemand.h" -#include "omaha/goopdate/oneclick_process_launcher.h" #include "omaha/goopdate/process_launcher.h" #include "omaha/goopdate/update3web.h" #include "omaha/goopdate/worker.h" @@ -53,16 +52,12 @@ BEGIN_OBJECT_MAP(object_map_broker_machine_mode) OBJECT_ENTRY(__uuidof(OnDemandMachineAppsClass), OnDemandMachineBroker) OBJECT_ENTRY(__uuidof(GoogleUpdate3WebMachineClass), Update3WebMachineBroker) OBJECT_ENTRY(__uuidof(CoCreateAsyncClass), CoCreateAsync) - OBJECT_ENTRY(__uuidof(OneClickMachineProcessLauncherClass), - OneClickProcessLauncher) END_OBJECT_MAP() BEGIN_OBJECT_MAP(object_map_ondemand_user_mode) OBJECT_ENTRY(__uuidof(GoogleUpdate3WebUserClass), Update3WebUser) OBJECT_ENTRY(__uuidof(OnDemandUserAppsClass), OnDemandUser) OBJECT_ENTRY(__uuidof(CredentialDialogUserClass), CredentialDialogUser) - OBJECT_ENTRY(__uuidof(OneClickUserProcessLauncherClass), - OneClickProcessLauncher) END_OBJECT_MAP() BEGIN_OBJECT_MAP(object_map_ondemand_machine_mode) diff --git a/omaha/goopdate/google_update.h b/omaha/goopdate/google_update.h index cfd9351..51f1160 100644 --- a/omaha/goopdate/google_update.h +++ b/omaha/goopdate/google_update.h @@ -95,8 +95,8 @@ class GoogleUpdate : public CAtlExeModuleT { HRESULT RegisterOrUnregisterExe(bool is_register); static HRESULT RegisterOrUnregisterExe(void* data, bool is_register); - ComServerMode mode_; bool is_machine_; + ComServerMode mode_; DISALLOW_EVIL_CONSTRUCTORS(GoogleUpdate); }; diff --git a/omaha/goopdate/omaha3_idl.idl b/omaha/goopdate/omaha3_idl.idl index 7fc1378..53b22c2 100644 --- a/omaha/goopdate/omaha3_idl.idl +++ b/omaha/goopdate/omaha3_idl.idl @@ -769,18 +769,6 @@ interface IProcessLauncher2 : IProcessLauncher { [out] ULONG_PTR* stdout_handle); }; -[ - object, - oleautomation, - uuid(4d3a05b9-5ef2-46f9-a4fe-81b01637ed47), - helpstring("Google Update IOneClickProcessLauncher Interface"), - pointer_default(unique) -] -interface IOneClickProcessLauncher : IUnknown { - HRESULT LaunchAppCommand([in, string] const WCHAR* app_guid, - [in, string] const WCHAR* cmd_id); -}; - typedef enum { COMPLETION_CODE_SUCCESS = 1, COMPLETION_CODE_SUCCESS_CLOSE_UI, @@ -852,6 +840,9 @@ interface IJobObserver : IUnknown { pointer_default(unique) ] interface IJobObserver2 : IUnknown { + // @param time_remaining_ms Remaining install time. + // @param pos Current install progress in percentage from 0 to 100. -1 + // indicates unknown. HRESULT OnInstalling2([in] int time_remaining_ms, [in] int pos); }; @@ -1040,24 +1031,8 @@ library GoogleUpdate3Lib { [default] interface IUnknown; } - [ - uuid(bb42bfd1-b0eb-449c-8882-fb810c2738d0), - helpstring("OneClickUserProcessLauncherClass Class") - ] - coclass OneClickUserProcessLauncherClass { - [default] interface IOneClickProcessLauncher; - } - [ uuid(5457eff7-c0b3-4672-a6b4-58f93951f1e0), - helpstring("OneClickMachineProcessLauncherClass Class") - ] - coclass OneClickMachineProcessLauncherClass { - [default] interface IOneClickProcessLauncher; - } - - [ - uuid(660baf72-a9ef-4fb1-81ae-9395ca6c39cf), helpstring("OnDemand updates for per-user applications.") ] coclass OnDemandUserAppsClass { diff --git a/omaha/goopdate/omaha_customization_goopdate_apis_unittest.cc b/omaha/goopdate/omaha_customization_goopdate_apis_unittest.cc index 10b73a0..d6db836 100644 --- a/omaha/goopdate/omaha_customization_goopdate_apis_unittest.cc +++ b/omaha/goopdate/omaha_customization_goopdate_apis_unittest.cc @@ -508,42 +508,6 @@ TEST_GU_INT_F(OmahaCustomizationGoopdateComInterfaceTest, EXPECT_TRUE(!help_file_); } -TEST_GU_INT_F(OmahaCustomizationGoopdateComInterfaceTest, - OneClickUserProcessLauncherClass) { - EXPECT_GU_ID_EQ(_T("{51F9E8EF-59D7-475b-A106-C7EA6F30C119}"), - __uuidof(OneClickUserProcessLauncherClass)); - - EXPECT_SUCCEEDED(GetDocumentation(_T("OneClickUserProcessLauncherClass"))); - EXPECT_STREQ(_T("OneClickUserProcessLauncherClass Class"), - item_doc_string_); - EXPECT_EQ(0, help_context_); - EXPECT_TRUE(!help_file_); -} - -TEST_GU_INT_F(OmahaCustomizationGoopdateComInterfaceTest, - IOneClickProcessLauncher) { - EXPECT_GU_ID_EQ(_T("{5CCCB0EF-7073-4516-8028-4C628D0C8AAB}"), - __uuidof(IOneClickProcessLauncher)); - - EXPECT_SUCCEEDED(GetDocumentation(_T("IOneClickProcessLauncher"))); - EXPECT_STREQ(_T("Google Update IOneClickProcessLauncher Interface"), - item_doc_string_); - EXPECT_EQ(0, help_context_); - EXPECT_TRUE(!help_file_); -} - -TEST_GU_INT_F(OmahaCustomizationGoopdateComInterfaceTest, - OneClickMachineProcessLauncherClass) { - EXPECT_GU_ID_EQ(_T("{AAD4AE2E-D834-46d4-8B09-490FAC9C722B}"), - __uuidof(OneClickMachineProcessLauncherClass)); - - EXPECT_SUCCEEDED(GetDocumentation(_T("OneClickMachineProcessLauncherClass"))); - EXPECT_STREQ(_T("OneClickMachineProcessLauncherClass Class"), - item_doc_string_); - EXPECT_EQ(0, help_context_); - EXPECT_TRUE(!help_file_); -} - TEST_GU_INT_F(OmahaCustomizationGoopdateComInterfaceTest, OnDemandUserAppsClass) { EXPECT_GU_ID_EQ(_T("{2F0E2680-9FF5-43c0-B76E-114A56E93598}"), @@ -616,7 +580,7 @@ TEST_GU_INT_F(OmahaCustomizationGoopdateComInterfaceTest, // Verifies there are no new interfaces in the TypeLib. TEST_F(OmahaCustomizationGoopdateComInterfaceTest, VerifyNoNewInterfaces) { - EXPECT_EQ(39, type_lib_->GetTypeInfoCount()) + EXPECT_EQ(36, type_lib_->GetTypeInfoCount()) << _T("A new interface may have been added. If so, add the interface to ") << _T("to kIIDsToRegister, and add test(s) for new interface(s)."); } diff --git a/omaha/goopdate/oneclick_process_launcher.cc b/omaha/goopdate/oneclick_process_launcher.cc deleted file mode 100644 index 50ba1d6..0000000 --- a/omaha/goopdate/oneclick_process_launcher.cc +++ /dev/null @@ -1,90 +0,0 @@ -// Copyright 2011 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// ======================================================================== - -#include "omaha/goopdate/oneclick_process_launcher.h" - -#include "base/scoped_ptr.h" -#include "omaha/base/scoped_ptr_address.h" -#include "omaha/goopdate/app_command.h" -#include "omaha/goopdate/app_command_configuration.h" - -namespace omaha { - -OneClickProcessLauncher::OneClickProcessLauncher() {} - -OneClickProcessLauncher::~OneClickProcessLauncher() {} - -STDMETHODIMP OneClickProcessLauncher::LaunchAppCommand( - const WCHAR* app_guid, const WCHAR* cmd_id) { - ASSERT1(app_guid); - ASSERT1(cmd_id); - - if (!app_guid || !cmd_id) { - return E_INVALIDARG; - } - - CORE_LOG(L3, (_T("[OneClickProcessLauncher::LaunchAppCommand]") - _T("[app %s][cmd %s]"), app_guid, cmd_id)); - - // Allocate a session ID for the ping that this call will generate. - // TODO(omaha3): Are there any situations where this control can be - // instantiated outside of the context of an Update3Web/OneClick - // webpage? If not, we should consider adding a function to - // OneClickProcessLauncher() to modify the session ID it uses. - CString session_id; - GetGuid(&session_id); - - scoped_ptr configuration; - HRESULT hr = AppCommandConfiguration::Load(app_guid, - is_machine(), - cmd_id, - address(configuration)); - if (FAILED(hr)) { - CORE_LOG(LE, (_T("[failed to load command configuration][0x%x]"), hr)); - return hr; - } - - if (!configuration->is_web_accessible()) { - return E_ACCESSDENIED; - } - - if (!is_machine()) { - // Execute directly at medium integrity for user-level mode - scoped_process process; - scoped_ptr app_command(configuration->Instantiate(session_id)); - return app_command->Execute(NULL, std::vector(), address(process)); - } - - // Elevate to high integrity for machine-level mode - CComPtr process_launcher; - hr = process_launcher.CoCreateInstance(__uuidof(ProcessLauncherClass)); - if (FAILED(hr)) { - return hr; - } - - ULONG_PTR phandle = NULL; - DWORD process_id = ::GetCurrentProcessId(); - - hr = process_launcher->LaunchCmdElevated( - app_guid, cmd_id, process_id, &phandle); - - if (SUCCEEDED(hr)) { - ::CloseHandle(reinterpret_cast(phandle)); - } - - return hr; -} - -} // namespace omaha diff --git a/omaha/goopdate/oneclick_process_launcher.h b/omaha/goopdate/oneclick_process_launcher.h deleted file mode 100644 index 86a6000..0000000 --- a/omaha/goopdate/oneclick_process_launcher.h +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright 2011 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// ======================================================================== - -#ifndef OMAHA_GOOPDATE_ONECLICK_PROCESS_LAUNCHER_H__ -#define OMAHA_GOOPDATE_ONECLICK_PROCESS_LAUNCHER_H__ - -#include -#include -#include "base/basictypes.h" -#include "goopdate/omaha3_idl.h" -#include "omaha/base/atlregmapex.h" -#include "omaha/common/const_goopdate.h" -#include "omaha/common/goopdate_utils.h" -#include "omaha/goopdate/non_localized_resource.h" - -namespace omaha { - -const TCHAR* const kOneClickProcessLauncherTlbVersion = _T("1.0"); -const TCHAR* const kOneClickProcessLauncherDescription = - _T(SHORT_COMPANY_NAME_ANSI) _T(".OneClickProcessLauncher"); - -class ATL_NO_VTABLE OneClickProcessLauncher - : public CComObjectRootEx, - public CComCoClass, - public IOneClickProcessLauncher { - public: - OneClickProcessLauncher(); - virtual ~OneClickProcessLauncher(); - - DECLARE_NOT_AGGREGATABLE(OneClickProcessLauncher) - DECLARE_PROTECT_FINAL_CONSTRUCT() - - DECLARE_REGISTRY_RESOURCEID_EX(IDR_LOCAL_SERVER_IE_LOW_RGS) - - #pragma warning(push) - // C4640: construction of local static object is not thread-safe - #pragma warning(disable : 4640) - BEGIN_REGISTRY_MAP() - REGMAP_ENTRY(_T("HKROOT"), goopdate_utils::GetHKRoot()) - REGMAP_MODULE2(_T("MODULE"), - is_machine() ? kOmahaBrokerFileName : kOmahaOnDemandFileName) - REGMAP_ENTRY(_T("VERSION"), kOneClickProcessLauncherTlbVersion) - REGMAP_ENTRY(_T("PROGID"), - is_machine() ? - kProgIDOneClickProcessLauncherMachine : - kProgIDOneClickProcessLauncherUser) - REGMAP_ENTRY(_T("DESCRIPTION"), kOneClickProcessLauncherDescription) - REGMAP_UUID(_T("CLSID"), - is_machine() ? - __uuidof(OneClickMachineProcessLauncherClass) : - __uuidof(OneClickUserProcessLauncherClass)) - END_REGISTRY_MAP() - #pragma warning(pop) - - // C4505: unreferenced IUnknown local functions have been removed - #pragma warning(disable : 4505) - BEGIN_COM_MAP(OneClickProcessLauncher) - COM_INTERFACE_ENTRY(IOneClickProcessLauncher) - END_COM_MAP() - - STDMETHOD(LaunchAppCommand)(const WCHAR* app_guid, - const WCHAR* cmd_id); - - private: - static bool is_machine() { - return goopdate_utils::IsRunningFromOfficialGoopdateDir(true); - } - - DISALLOW_COPY_AND_ASSIGN(OneClickProcessLauncher); -}; // class OneClickProcessLauncher - -} // namespace omaha - -#endif // OMAHA_GOOPDATE_ONECLICK_PROCESS_LAUNCHER_H__ diff --git a/omaha/goopdate/resources/chrome.bmp b/omaha/goopdate/resources/chrome.bmp index 1201d6595b60e8dde36de47762639d0dddd2dc4e..bfde16d633123979c57d0e8e02f7f0e88426390e 100644 GIT binary patch literal 6678 zcmd^BX;4(z6*iShRhFt`!Z?!|vrI-anN%`AvQ%Zl+6_oIt1PmEAcPrWjfjW@P!w4d zQA8ymLZn%w0YO19ES4asGsq4$$kGdR15L9vOK6~Jy8Gp8p7ZRqprcij%rLLcdv)%) z=bn4-cfWJ)GqZbh+m^NG&-nfZuQ%Se@P2FU3kA>XKOkSSwPnld#*bR9o{>oelbr53 zd7n%@E>|nn>W$qudC&N~u(UJjSOvpB?;YpV@7ezA3ayi{=~4&usxn4Z{Kan;GIGUY zaa+Pi>>b|udS1Cd_Q-zCHS_z9={p!r9$64QhDu&5LXHEuraw>()t@niuOQZ(SWXX&|K z`H@q~ckEgA<{e536DWYiw?{R1C0Y! z5oN*j#z}g|Q&>zp3F|IGyu2YS)6>&+b#=wX#WgiGV`F3Fg)I_^dU|?PDizs;f+mb; z@_0Nhm#cHHOQq8K`g#PZuC5*)9@ZX3HDQ!UB#$0FQYaLp!^+A^S6A1>#01%t$z+X< zjU^=|<>loA0|TUSqi?IQ%9s7~JvmRsJ?o9QD%Z)$k(Ikw7t{7ECfO~fxUW?GV}6Wx zmNRJ7rv5Lg^b%~z`j}vak&%%{jvPr&PL7I-I(+!>!-o&CjQsrk2xq~K-PHQ~=u8n->Aidi=iGO!LNQ&Up_BrPp%c6Jt%E-WmtSgiQ? z_~qs0YuB#D#>Q%6f+o4UOP4NPym*mXB*tRnuz+tcE-fuxzkdC|fdl>h{Ys_s#EBC) zcgh)51auT8Gcz+`VPSXg-UScOpFfW&Mn^|UXP}BEctwrXR`9bLU*+P*-tL?8E-4;a zZ>LtJ$a|YLP$XJvpZ^DS0oq6S$*YIqF5FE-XkHoT>J_ zIN7T=YAYH{ZZiMM{*_;zM*OdCH*`%cD3vN2(luFg##$p9WY%DbrvsDE zKF5Tl3d$@nkv@Y-MMVXejFi!yj?}Rp6cB8RY$Azp^i=MgJ$sfKa{Kme@Sn^+%7~hf zo}P|Tzyy1w?7#%hNEy;X=Fa{5_xXH2c#@i$iaK_6?a9f>*}s3kcHU7zpn%BwtoHonyTIVAK?!EK+dq%T6<%U_!wXYl7U#8(uYRQJc1@pJ38OxOEeYN?o4d z20`LiR#sBeq1<6b*b8ouprD}k_I9#MEEb1^grGvAnURr!Gv#nNWEUQaayq4w?DhZ~A?#{C7)*49>lk0SseR1h!+DB(+4bd$EbPau`wI;BY;6cg|S-#FS*?t!VP$vvG)<7R^1qNYJw)pXAKH5O=t z`B)W5i<*W7Lr2!Yjv5;t9v&ALhvE+=U~4#EvH;>VQB*;j%a<>gm6f4r096bGR)7?o z2YTp2y5Rv&;GC3{gdm_9&_mwAi1@G|AJI$F2FRcn1sp3uFA5!2rGtZZvty(-@Y)9- z7rp0j=HkDP!;AdB>$RPepa|+{EbdF4>0-3X{)N#*J#@ zhic;{HH|~C$8Y|O^1X230``cNH#9V0kLUt22?+`KNx-dyEnp+KaLFOq3l16_ z12`B$UNX*&v-}<+H^`ic5xk25kMT0`Tygnw>6gX4RgKCmBmb74NlwC*B9)d1->R2fMXYCt> zeNGT68mZjll{kEI#nk$-g+njXiEHV^XF3g7oU zoWG`5i1{TAnVMcb8aHn5HE!c7d@d#e6C1J5J~3DD_$02k3K@Csr1T@=0nvIBVJH~VpUPzywoqOq&`HJlE)s`_axmt2_J~T?=>?=aC zwQv-gI|%GNgnyxMeMuTe9z%0Z!`Z$OT^F*U7Jsa|mBe!X_L(Q5w# DrI#i5 literal 6678 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 UZZ{6f6^~6Gn7?(e|4#XT13TM#AOHXW diff --git a/omaha/goopdate/worker.cc b/omaha/goopdate/worker.cc index 6bdf927..4b0ae26 100644 --- a/omaha/goopdate/worker.cc +++ b/omaha/goopdate/worker.cc @@ -957,7 +957,9 @@ HRESULT Worker::DoUpdateCheck(AppBundle* app_bundle, HighresTimer update_check_timer; // This is a blocking call on the network. - HRESULT hr = app_bundle->update_check_client()->Send(update_request, + const bool is_foreground = app_bundle->priority() == INSTALL_PRIORITY_HIGH; + HRESULT hr = app_bundle->update_check_client()->Send(is_foreground, + update_request, update_response); CORE_LOG(L3, (_T("[Update check HTTP trace][%s]"), diff --git a/omaha/goopdate/worker_unittest.cc b/omaha/goopdate/worker_unittest.cc index b91600c..a2d649d 100644 --- a/omaha/goopdate/worker_unittest.cc +++ b/omaha/goopdate/worker_unittest.cc @@ -93,6 +93,7 @@ void SetAppStateReadyToInstall(App* app) { } typedef HRESULT WebServiceClientSendMethod( + bool is_foreground, const xml::UpdateRequest* update_request, xml::UpdateResponse* update_response); @@ -102,7 +103,7 @@ class WebServiceClientSendAction : public ::testing::ActionInterface { public: virtual HRESULT Perform(const ArgumentTuple& args) { - xml::UpdateResponse* response = std::tr1::get<1>(args); + xml::UpdateResponse* response = std::tr1::get<2>(args); xml::response::Response r; // Omaha expects |elapsed_days| to be in range. So set it to a valid @@ -119,11 +120,13 @@ ::testing::Action WebServiceClientSend() { class MockWebServicesClient : public WebServicesClientInterface { public: - MOCK_METHOD2(Send, - HRESULT(const xml::UpdateRequest* update_request, + MOCK_METHOD3(Send, + HRESULT(bool is_foreground, + const xml::UpdateRequest* update_request, xml::UpdateResponse* update_response)); - MOCK_METHOD2(SendString, - HRESULT(const CString* request_string, + MOCK_METHOD3(SendString, + HRESULT(bool is_foreground, + const CString* request_string, xml::UpdateResponse* update_response)); MOCK_METHOD0(Cancel, void()); @@ -387,7 +390,7 @@ class WorkerMockedManagersTest : public WorkerWithTwoAppsTest { }; TEST_F(WorkerMockedManagersTest, CheckForUpdateAsync) { - EXPECT_CALL(*mock_web_services_client_, Send(_, _)) + EXPECT_CALL(*mock_web_services_client_, Send(_, _, _)) .Times(1).WillOnce(WebServiceClientSend()); ON_CALL(*mock_web_services_client_, http_trace()) .WillByDefault(Return(_T(""))); @@ -565,7 +568,7 @@ TEST_F(WorkerMockedManagersTest, DownloadAsync_Then_DownloadAndInstallAsync) { } TEST_F(WorkerMockedManagersTest, UpdateAllAppsAsync) { - EXPECT_CALL(*mock_web_services_client_, Send(_, _)) + EXPECT_CALL(*mock_web_services_client_, Send(_, _, _)) .Times(1).WillOnce(WebServiceClientSend()); ON_CALL(*mock_web_services_client_, http_trace()) .WillByDefault(Return(_T(""))); diff --git a/omaha/hammer.bat b/omaha/hammer.bat index 928e77c..f3990c7 100644 --- a/omaha/hammer.bat +++ b/omaha/hammer.bat @@ -15,10 +15,12 @@ rem -- Set all environment variables used by Hammer and Omaha. -- :: VS2012/VC11 is 1700 (not supported by the current build). :: VS2013/VC12 is 1800. :: VS2015/VC14 is 1900. +:: VS2017/VC14.1 is 1910. if "%VisualStudioVersion%"=="" goto error_no_vc if "%VisualStudioVersion%"=="12.0" goto vc120 if "%VisualStudioVersion%"=="14.0" goto vc140 +if "%VisualStudioVersion%"=="15.0" goto vc141 goto error_vc_not_supported :vc120 @@ -29,6 +31,10 @@ goto set_env_variables set OMAHA_MSC_VER=1900 goto set_env_variables +:vc141 +set OMAHA_MSC_VER=1910 +goto set_env_variables + :set_env_variables :: Change these variables to match the local build environment. diff --git a/omaha/installers/tagged_installer.py b/omaha/installers/tagged_installer.py index 19752a2..d41538f 100644 --- a/omaha/installers/tagged_installer.py +++ b/omaha/installers/tagged_installer.py @@ -28,19 +28,10 @@ def TagOneBundle(env, bundle, untagged_binary_path, output_dir): indx = bundle.output_file_name.find('installers') relative_filepath = bundle.output_file_name[indx+len('installers')+1:] - tag_exe = '$TESTS_DIR/ApplyTag.exe' - - tag_output = env.Command( + return env.OmahaTagExe( target='%s/%s' % (output_dir, relative_filepath), source=untagged_binary_path, - action='%s $SOURCES $TARGET %s append' % ( - env.File(tag_exe).abspath, tag_str) - ) - - # Add extra (hidden) dependency plus a dependency on the tag executable. - env.Depends(tag_output, [bundle.installers_txt_filename, tag_exe]) - - return tag_output + tag=tag_str) def _ReadAllBundleInstallerFiles(installers_txt_files_path): diff --git a/omaha/main.scons b/omaha/main.scons index bd3f505..2b38f01 100644 --- a/omaha/main.scons +++ b/omaha/main.scons @@ -74,10 +74,10 @@ _MAIN_EXE_BASE_NAME = 'GoogleUpdate' # TODO(omaha): Use this throughout the build files where goopdate and # goopdateres are referenced. _MAIN_DLL_BASE_NAME = 'goopdate' -# "Google Inc." must not be removed from the copyright string. This literal also +# "Google LLC" must not be removed from the copyright string. This literal also # appears as LegalCopyright in the VERSIONINFO section of .rc files. # TODO(omaha): Use this variable in .wxs files, etc. -_OMAHA_COPYRIGHT_STRING_ENGLISH = 'Copyright 2007-2010 Google Inc.' +_OMAHA_COPYRIGHT_STRING_ENGLISH = 'Copyright 2018 Google LLC' # TODO(omaha): Allow open source Omaha to be built without the Recovery MSI, @@ -90,8 +90,8 @@ _OMAHA_COPYRIGHT_STRING_ENGLISH = 'Copyright 2007-2010 Google Inc.' # The hash comes from the Thumbprint item in the Details tab of the file # properties for the public key .cer file. -# Omaha and Chrome certificate: sha256 (12/15/2015 to 12/16/2018). -_BUILD_SERVER_CERTIFICATE_HASH = '5a9272ce76a9415a4a3a5002a2589a049312aa40' +# Omaha and Chrome certificate: sha256 (11/06/2018 to 11/17/2021). +_BUILD_SERVER_CERTIFICATE_HASH = 'CB7E84887F3C6015FE7EDFB4F8F36DF7DC10590E' # # End vendor-specific constants. @@ -103,7 +103,8 @@ _BUILD_SERVER_CERTIFICATE_HASH = '5a9272ce76a9415a4a3a5002a2589a049312aa40' _msc_ver = int(os.getenv('OMAHA_MSC_VER', "1900")) _default_sdk_dir = ('$THIRD_PARTY/%s/files' % - {omaha_version_utils.VC140:'windows_sdk/windows_sdk_10', + {omaha_version_utils.VC141:'windows_sdk/windows_sdk_10', + omaha_version_utils.VC140:'windows_sdk/windows_sdk_10', omaha_version_utils.VC120:'windows_sdk_8_1', omaha_version_utils.VC100:'platformsdk_vc_10_0', omaha_version_utils.VC80:'platformsdk/v6_1' }[_msc_ver]) @@ -130,13 +131,15 @@ win_env = Environment( tools=[ 'component_setup', 'target_platform_windows', - { omaha_version_utils.VC140:'windows_vc14_0', + { omaha_version_utils.VC141:'windows_vc14_1', + omaha_version_utils.VC140:'windows_vc14_0', omaha_version_utils.VC120:'windows_vc12_0', omaha_version_utils.VC100:'windows_vc10_0', omaha_version_utils.VC80:'target_platform_windows' }[_msc_ver], 'masm', # Use 'masm' to override the 'as' tool currently # used by default in 'target_platform_windows' - { omaha_version_utils.VC140:'atlmfc_vc14_0', + { omaha_version_utils.VC141:'atlmfc_vc14_1', + omaha_version_utils.VC140:'atlmfc_vc14_0', omaha_version_utils.VC120:'atlmfc_vc12_0', omaha_version_utils.VC100:'atlmfc_vc10_0', omaha_version_utils.VC80:'atlmfc_vc80' }[_msc_ver], @@ -461,6 +464,7 @@ win_env.AppendUnique( # # Disable the pedantic warnings below. # + '/wd4091', # 'typedef': ignored on left of when no variable is declared '/wd4191', # unsafe conversion from 'type of expression' to # 'type required' '/wd4217', # member template functions cannot be used for @@ -474,6 +478,8 @@ win_env.AppendUnique( '/wd4512', # assignment operator could not be generated '/wd4514', # unreferenced inline function has been removed '/wd4555', # expression has no effect + '/wd4577', # 'noexcept' used with no exception handling mode specified; + # termination on exception is not guaranteed. '/wd4605', # '...' specified on current command line, but was not # specified when precompiled header was built. '/wd4610', # struct can never be instantiated @@ -489,13 +495,17 @@ win_env.AppendUnique( '/wd4755', # Conversion rules for arithmetic operations in the # comparison at mean that one branch cannot be executed # in an inlined function. + '/wd4774', # format string expected in argument is not a string literal '/wd4777', # format string 'requires an argument of type... '/wd4820', # bytes padding added after construct 'member_name' - '/wd4091', # 'typedef': ignored on left of when no variable is declared + '/wd4840', # non-portable use of class as an arg to a variadic function + '/wd4986', # exception specification doesn't match previous declaration '/wd4987', # nonstandard extension used: 'throw (...) '/wd4995', # name was marked as #pragma deprecated '/wd4996', # 'function': was declared deprecated - + '/wd5042', # function declarations at block scope cannot be specified + # 'inline' in standard C++ + '/wd5045', # Compiler will insert Spectre mitigation for memory load # # Disable static analysis warnings. # diff --git a/omaha/net/bind_status_callback.cc b/omaha/net/bind_status_callback.cc index 43a5ab8..b654477 100644 --- a/omaha/net/bind_status_callback.cc +++ b/omaha/net/bind_status_callback.cc @@ -46,7 +46,8 @@ HRESULT QueryHttpInfo(IWinInetHttpInfo* http_info, DWORD query, CString* info) { return hr; } - CORE_LOG(L3, (_T("[QueryHttpInfo success][%d][%s]"), query, CA2T(buf))); + CORE_LOG(L3, (_T("[QueryHttpInfo success][%d][%s]"), query, + static_cast(CA2T(buf)))); *info = buf; return S_OK; } diff --git a/omaha/net/bits_request.cc b/omaha/net/bits_request.cc index 95aae57..a9d9124 100644 --- a/omaha/net/bits_request.cc +++ b/omaha/net/bits_request.cc @@ -88,9 +88,9 @@ BitsRequest::BitsRequest() minimum_retry_delay_(-1), no_progress_timeout_(-1), current_auth_scheme_(0), + creds_set_scheme_unknown_(false), bits_request_callback_(NULL), - last_progress_report_tick_(0), - creds_set_scheme_unknown_(false) { + last_progress_report_tick_(0) { GetBitsManager(&bits_manager_); // Creates a auto-reset event for BITS job change notifications. diff --git a/omaha/net/cup_ecdsa_pubkey.8.h b/omaha/net/cup_ecdsa_pubkey.8.h new file mode 100644 index 0000000..9156ab4 --- /dev/null +++ b/omaha/net/cup_ecdsa_pubkey.8.h @@ -0,0 +1,31 @@ +// Copyright 2018 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// ======================================================================== +// +// CUP-ECDSA public keys consist of a byte array, 66 bytes long, containing: +// * The key ID (one byte) +// * The public key in X9.62 uncompressed encoding (65 bytes): +// * Uncompressed header byte (0x04) +// * Gx coordinate (256-bit integer, big-endian) +// * Gy coordinate (256-bit integer, big-endian) +{0x08, +0x04, +0xf8, 0x9d, 0xa2, 0x0a, 0x97, 0xe4, 0xf2, 0x54, +0xe1, 0x72, 0xe2, 0x94, 0x3f, 0x34, 0xda, 0x55, +0xc5, 0x23, 0x84, 0xd4, 0x77, 0x01, 0x81, 0xca, +0xfa, 0xd4, 0xde, 0x94, 0x67, 0x47, 0xbf, 0x21, +0x86, 0xc7, 0xb4, 0x4f, 0xec, 0x1a, 0x61, 0x61, +0x23, 0xe6, 0xa4, 0x7e, 0x8f, 0xe1, 0x5a, 0xfb, +0xd9, 0xa9, 0x34, 0x5b, 0x56, 0xb4, 0x6d, 0x6e, +0x79, 0x3b, 0xd1, 0xd6, 0xda, 0x8c, 0xf7, 0xad}; diff --git a/omaha/net/cup_ecdsa_request.cc b/omaha/net/cup_ecdsa_request.cc index 6b59a93..0bfc087 100644 --- a/omaha/net/cup_ecdsa_request.cc +++ b/omaha/net/cup_ecdsa_request.cc @@ -42,7 +42,7 @@ namespace omaha { namespace internal { const uint8 CupEcdsaRequestImpl::kCupProductionPublicKey[] = -#include "omaha/net/cup_ecdsa_pubkey.7.h" +#include "omaha/net/cup_ecdsa_pubkey.8.h" ; // NOLINT const uint8 CupEcdsaRequestImpl::kCupTestPublicKey[] = diff --git a/omaha/net/cup_ecdsa_utils_unittest.cc b/omaha/net/cup_ecdsa_utils_unittest.cc index 5337ecf..0b1cf88 100644 --- a/omaha/net/cup_ecdsa_utils_unittest.cc +++ b/omaha/net/cup_ecdsa_utils_unittest.cc @@ -491,7 +491,7 @@ TEST(EcdsaPublicKey, DecodeFromBuffer_ProdKey) { EcdsaPublicKey key; uint8 kProdKey[] = -#include "omaha/net/cup_ecdsa_pubkey.7.h" +#include "omaha/net/cup_ecdsa_pubkey.8.h" ; // NOLINT key.DecodeFromBuffer(kProdKey); diff --git a/omaha/net/network_request_impl.cc b/omaha/net/network_request_impl.cc index ac2c9e1..12831ec 100644 --- a/omaha/net/network_request_impl.cc +++ b/omaha/net/network_request_impl.cc @@ -84,25 +84,25 @@ void LogFileBytes(const CString& filename, size_t num_bytes) { NetworkRequestImpl::NetworkRequestImpl( const NetworkConfig::Session& network_session) - : cur_http_request_(NULL), - cur_proxy_config_(NULL), - retry_after_seconds_(-1), - cur_retry_count_(0), - cur_retry_delay_ms_(kDefaultTimeBetweenRetriesMs), - http_attempts_(0), - last_hr_(S_OK), - last_http_status_code_(0), - http_status_code_(0), + : request_buffer_(NULL), + request_buffer_length_(0), proxy_auth_config_(NULL, CString()), num_retries_(0), low_priority_(false), initial_retry_delay_ms_(kDefaultTimeBetweenRetriesMs), retry_delay_jitter_ms_(kDefaultRetryTimeJitterMs), - callback_(NULL), - request_buffer_(NULL), - request_buffer_length_(0), + http_status_code_(0), response_(NULL), network_session_(network_session), + callback_(NULL), + cur_http_request_(NULL), + cur_proxy_config_(NULL), + last_hr_(S_OK), + last_http_status_code_(0), + retry_after_seconds_(-1), + cur_retry_count_(0), + cur_retry_delay_ms_(kDefaultTimeBetweenRetriesMs), + http_attempts_(0), is_canceled_(false) { // NetworkConfig::Initialize must be called before using NetworkRequest. // If Winhttp cannot be loaded, this handle will be NULL. @@ -427,7 +427,7 @@ HRESULT NetworkRequestImpl::DoSendWithConfig( CString msg; SafeCStringFormat(&msg, _T("Trying config: %s"), NetworkConfig::ToString(*cur_proxy_config_)); - NET_LOG(L3, (_T("[%s]"), msg)); + OPT_LOG(L3, (_T("[%s]"), msg)); SafeCStringAppendFormat(&trace_, _T("%s.\r\n"), msg); HRESULT hr = S_OK; @@ -611,14 +611,6 @@ CString NetworkRequestImpl::BuildPerRequestHeaders() const { kHeaderXHTTPAttempts, http_attempts_); - SafeCStringAppendFormat(&headers, _T("%s: %s\r\n"), - kHeaderXInteractive, - low_priority_ ? _T("bg") : _T("fg")); - - SafeCStringAppendFormat(&headers, _T("%s: Omaha-%s\r\n"), - kHeaderXUpdater, - GetVersionString()); - NET_LOG(L4, (_T("[BuildPerRequestHeaders][%s]"), headers)); return headers; } diff --git a/omaha/net/proxy_auth.h b/omaha/net/proxy_auth.h index de38e5f..fbd51fc 100644 --- a/omaha/net/proxy_auth.h +++ b/omaha/net/proxy_auth.h @@ -98,11 +98,11 @@ class ProxyAuth { // counts how many times the user has cancelled the authentication prompt. uint32 prompt_cancelled_; + bool proxy_prompt_is_machine_; + // after this many authentication prompt cancellations, stop prompting. uint32 cancel_prompt_threshold_; - bool proxy_prompt_is_machine_; - bool ReadFromIE7(const CString& server); bool ReadFromPreIE7(const CString& server); bool PromptUser(const CString& server, const ProxyAuthConfig& config); diff --git a/omaha/net/simple_request.cc b/omaha/net/simple_request.cc index 2c100b1..45995d8 100644 --- a/omaha/net/simple_request.cc +++ b/omaha/net/simple_request.cc @@ -51,9 +51,9 @@ namespace omaha { SimpleRequest::TransientRequestState::TransientRequestState() : port(0), + is_https(false), http_status_code(0), proxy_authentication_scheme(0), - is_https(false), content_length(0), current_bytes(0), request_begin_ms(0), @@ -64,16 +64,16 @@ SimpleRequest::TransientRequestState::~TransientRequestState() { } SimpleRequest::SimpleRequest() - : request_buffer_(NULL), - request_buffer_length_(0), - proxy_auth_config_(NULL, CString()), - is_canceled_(false), + : is_canceled_(false), is_closed_(false), + pause_happened_(false), session_handle_(NULL), + request_buffer_(NULL), + request_buffer_length_(0), + proxy_auth_config_(NULL, CString()), low_priority_(false), callback_(NULL), - download_completed_(false), - pause_happened_(false) { + download_completed_(false) { SafeCStringFormat(&user_agent_, _T("%s;winhttp"), NetworkConfig::GetUserAgent()); diff --git a/omaha/omaha_version_utils.py b/omaha/omaha_version_utils.py index cf47de7..2f0d582 100644 --- a/omaha/omaha_version_utils.py +++ b/omaha/omaha_version_utils.py @@ -97,6 +97,7 @@ VC110 = 1700 # VC2012/VC11 (not supported by the current build). VC120 = 1800 # VC2013/VC12 VC140 = 1900 # VC2015/VC14 +VC141 = 1910 # VC2017/VC15 def _IsSupportedOmaha2Version(omaha_version): """Returns true if omaha_version is an Omaha 2 version and is supported.""" diff --git a/omaha/plugins/update/activex/oneclick_control.cc b/omaha/plugins/update/activex/oneclick_control.cc index d8ccbbf..5d9b7db 100644 --- a/omaha/plugins/update/activex/oneclick_control.cc +++ b/omaha/plugins/update/activex/oneclick_control.cc @@ -75,7 +75,7 @@ STDMETHODIMP OneClickControl::Install(BSTR cmd_line_args, } CORE_LOG(L2, (_T("[OneClickControl::Install][cmd_line \"%s\"]"), - CW2CT(cmd_line_args))); + static_cast(CW2CT(cmd_line_args)))); // We trim cmd_line_args to just the extra args and thunk to Install2(). CString extra_args(cmd_line_args); @@ -109,7 +109,7 @@ STDMETHODIMP OneClickControl::Install2(BSTR extra_args) { } CORE_LOG(L2, (_T("[OneClickControl::Install2][extra_args \"%s\"]"), - CW2CT(extra_args))); + static_cast(CW2CT(extra_args)))); CString browser_url; HRESULT hr = site_lock_.GetCurrentBrowserUrl(this, &browser_url); @@ -193,31 +193,8 @@ STDMETHODIMP OneClickControl::GetOneClickVersion(long* version) { // NOLINT return S_OK; } -STDMETHODIMP OneClickControl::LaunchAppCommand(BSTR app_guid, - VARIANT_BOOL is_machine, - BSTR cmd_id) { - if (!site_lock_.InApprovedDomain(this)) { - return GOOPDATE_E_ONECLICK_HOSTCHECK_FAILED; - } - - CORE_LOG(L2, (_T("[OneClickControl::LaunchAppCommand]"))); - - CComPtr process_launcher; - HRESULT hr = update3_utils::CoCreateWithProxyBlanket( - is_machine ? - __uuidof(OneClickMachineProcessLauncherClass) : - __uuidof(OneClickUserProcessLauncherClass), - &process_launcher); - - if (FAILED(hr)) { - CORE_LOG(LE, (_T("[OneClickControl::LaunchAppCommand]") - _T("[Failed to CoCreate OneClickMachine/User ") - _T("ProcessLauncher implementation: 0x%x"), - hr)); - return hr; - } - - return process_launcher->LaunchAppCommand(app_guid, cmd_id); +STDMETHODIMP OneClickControl::LaunchAppCommand(BSTR, VARIANT_BOOL, BSTR) { + return E_NOTIMPL; } HRESULT OneClickControl::DoGetInstalledVersion(const TCHAR* guid_string, diff --git a/omaha/plugins/update/activex/update3web_control.cc b/omaha/plugins/update/activex/update3web_control.cc index 20136ce..96abf4c 100644 --- a/omaha/plugins/update/activex/update3web_control.cc +++ b/omaha/plugins/update/activex/update3web_control.cc @@ -338,31 +338,8 @@ HRESULT Update3WebControl::crossInstall(BSTR extra_args) { return S_OK; } -HRESULT Update3WebControl::launchAppCommand(BSTR guid_string, - VARIANT_BOOL is_machine, - BSTR cmd_id) { - if (!site_lock_.InApprovedDomain(this)) { - return GOOPDATE_E_ONECLICK_HOSTCHECK_FAILED; - } - - CORE_LOG(L2, (_T("[Update3WebControl::launchAppCommand]"))); - - CComPtr process_launcher; - HRESULT hr = update3_utils::CoCreateWithProxyBlanket( - is_machine ? - __uuidof(OneClickMachineProcessLauncherClass) : - __uuidof(OneClickUserProcessLauncherClass), - &process_launcher); - - if (FAILED(hr)) { - CORE_LOG(LE, (_T("[Update3WebControl::launchAppCommand]") - _T("[Failed to CoCreate OneClickMachine/User ") - _T("ProcessLauncher implementation: 0x%x"), - hr)); - return hr; - } - - return process_launcher->LaunchAppCommand(guid_string, cmd_id); +HRESULT Update3WebControl::launchAppCommand(BSTR, VARIANT_BOOL, BSTR) { + return E_NOTIMPL; } Update3WebControl::~Update3WebControl() { diff --git a/omaha/plugins/update/build.scons b/omaha/plugins/update/build.scons index f9b5232..ab8fd8c 100644 --- a/omaha/plugins/update/build.scons +++ b/omaha/plugins/update/build.scons @@ -49,6 +49,7 @@ update_env.Append( '/wd4548', # expression before comma has no effect; expected expression # with side-effect '/wd4986', # exception spec does not match previous declaration + '/wd5038', # data member will be initialized after data member ], CPPPATH = [ '$OBJ_ROOT', # Needed for generated files. diff --git a/omaha/precompile/precompile.h b/omaha/precompile/precompile.h index 195c3b6..8f8ff8b 100644 --- a/omaha/precompile/precompile.h +++ b/omaha/precompile/precompile.h @@ -44,8 +44,10 @@ // C4548: expression before comma has no effect // C4702: unreachable code // C4838: conversion requires a narrowing conversion +// C4839: non-standard use of class as an argument to a variadic function. // C4986: exception specification does not match previous declaration -#pragma warning(disable : 4265 4302 4350 4365 4548 4702 4838 4986) +// C5038: data member will be initialized after data member +#pragma warning(disable : 4265 4302 4350 4365 4548 4702 4838 4839 4986 5038) #include #include // Needs to be in front of atlapp.h #include diff --git a/omaha/recovery/repair_exe/msp/legacy/patch.wxs b/omaha/recovery/repair_exe/msp/legacy/patch.wxs index c46dcef..601b381 100644 --- a/omaha/recovery/repair_exe/msp/legacy/patch.wxs +++ b/omaha/recovery/repair_exe/msp/legacy/patch.wxs @@ -8,9 +8,9 @@ diff --git a/omaha/recovery/repair_exe/msp/legacy/patchableinstaller.wxs b/omaha/recovery/repair_exe/msp/legacy/patchableinstaller.wxs index 71f38d1..026b8ef 100644 --- a/omaha/recovery/repair_exe/msp/legacy/patchableinstaller.wxs +++ b/omaha/recovery/repair_exe/msp/legacy/patchableinstaller.wxs @@ -6,12 +6,12 @@ Codepage="1252" UpgradeCode="9515FFBD-40AB-4690-B983-4FA8E14EE7F5" Version="$(var.GoogleUpdateVersion)" - Manufacturer="Google Inc."> + Manufacturer="Google LLC"> diff --git a/omaha/recovery/repair_exe/msp/patchableinstaller.wxs b/omaha/recovery/repair_exe/msp/patchableinstaller.wxs index b3bb1a2..66edcea 100644 --- a/omaha/recovery/repair_exe/msp/patchableinstaller.wxs +++ b/omaha/recovery/repair_exe/msp/patchableinstaller.wxs @@ -6,12 +6,12 @@ Codepage="1252" UpgradeCode="9515FFBD-40AB-4690-B983-4FA8E14EE7F5" Version="$(var.GoogleUpdateVersion)" - Manufacturer="Google Inc."> + Manufacturer="Google LLC"> _m)0N^lB@D?!(W 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 delta 7250 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 diff --git a/omaha/testing/unittest_support/chrome_setup.exe b/omaha/testing/unittest_support/chrome_setup.exe new file mode 100644 index 0000000000000000000000000000000000000000..44c763ca70fe60a8da5514ffca0ec4e5f57d3513 GIT binary patch literal 2508032 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∈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 N-S3EW) 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