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

Side by Side Diff: omaha_response_handler_action.cc

Issue 6574009: If a public key is present, disallow old style full payloads. (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/update_engine.git@master
Patch Set: Created 9 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « omaha_response_handler_action.h ('k') | omaha_response_handler_action_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "update_engine/omaha_response_handler_action.h" 5 #include "update_engine/omaha_response_handler_action.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include <base/logging.h> 9 #include <base/logging.h>
10 10
11 #include "update_engine/delta_performer.h" 11 #include "update_engine/delta_performer.h"
12 #include "update_engine/prefs_interface.h" 12 #include "update_engine/prefs_interface.h"
13 #include "update_engine/utils.h" 13 #include "update_engine/utils.h"
14 14
15 using std::string; 15 using std::string;
16 16
17 namespace chromeos_update_engine { 17 namespace chromeos_update_engine {
18 18
19 const char OmahaResponseHandlerAction::kDeadlineFile[] = 19 const char OmahaResponseHandlerAction::kDeadlineFile[] =
20 "/tmp/update-check-response-deadline"; 20 "/tmp/update-check-response-deadline";
21 21
22 OmahaResponseHandlerAction::OmahaResponseHandlerAction(PrefsInterface* prefs)
23 : prefs_(prefs),
24 got_no_update_response_(false),
25 key_path_(DeltaPerformer::kUpdatePayloadPublicKeyPath) {}
26
22 void OmahaResponseHandlerAction::PerformAction() { 27 void OmahaResponseHandlerAction::PerformAction() {
23 CHECK(HasInputObject()); 28 CHECK(HasInputObject());
24 ScopedActionCompleter completer(processor_, this); 29 ScopedActionCompleter completer(processor_, this);
25 const OmahaResponse& response = GetInputObject(); 30 const OmahaResponse& response = GetInputObject();
26 if (!response.update_exists) { 31 if (!response.update_exists) {
27 got_no_update_response_ = true; 32 got_no_update_response_ = true;
28 LOG(INFO) << "There are no updates. Aborting."; 33 LOG(INFO) << "There are no updates. Aborting.";
29 return; 34 return;
30 } 35 }
31 install_plan_.download_url = response.codebase; 36 install_plan_.download_url = response.codebase;
(...skipping 10 matching lines...) Expand all
42 << "Unable to save the update check response hash."; 47 << "Unable to save the update check response hash.";
43 } 48 }
44 49
45 TEST_AND_RETURN(GetInstallDev( 50 TEST_AND_RETURN(GetInstallDev(
46 (!boot_device_.empty() ? boot_device_ : utils::BootDevice()), 51 (!boot_device_.empty() ? boot_device_ : utils::BootDevice()),
47 &install_plan_.install_path)); 52 &install_plan_.install_path));
48 install_plan_.kernel_install_path = 53 install_plan_.kernel_install_path =
49 utils::BootKernelDevice(install_plan_.install_path); 54 utils::BootKernelDevice(install_plan_.install_path);
50 55
51 install_plan_.is_full_update = !response.is_delta; 56 install_plan_.is_full_update = !response.is_delta;
57 if (!response.is_delta && utils::FileExists(key_path_.c_str())) {
58 // Can't sign old style full payloads but signature is required so bail out.
59 completer.set_code(kActionCodeSignedDeltaPayloadExpectedError);
60 return;
61 }
52 62
53 TEST_AND_RETURN(HasOutputPipe()); 63 TEST_AND_RETURN(HasOutputPipe());
54 if (HasOutputPipe()) 64 if (HasOutputPipe())
55 SetOutputObject(install_plan_); 65 SetOutputObject(install_plan_);
56 LOG(INFO) << "Using this install plan:"; 66 LOG(INFO) << "Using this install plan:";
57 install_plan_.Dump(); 67 install_plan_.Dump();
58 68
59 // Send the deadline data (if any) to Chrome through a file. This is a pretty 69 // Send the deadline data (if any) to Chrome through a file. This is a pretty
60 // hacky solution but should be OK for now. 70 // hacky solution but should be OK for now.
61 // 71 //
(...skipping 15 matching lines...) Expand all
77 string ret(boot_dev); 87 string ret(boot_dev);
78 string::reverse_iterator it = ret.rbegin(); // last character in string 88 string::reverse_iterator it = ret.rbegin(); // last character in string
79 // Right now, we just switch '3' and '5' partition numbers. 89 // Right now, we just switch '3' and '5' partition numbers.
80 TEST_AND_RETURN_FALSE((*it == '3') || (*it == '5')); 90 TEST_AND_RETURN_FALSE((*it == '3') || (*it == '5'));
81 *it = (*it == '3') ? '5' : '3'; 91 *it = (*it == '3') ? '5' : '3';
82 *install_dev = ret; 92 *install_dev = ret;
83 return true; 93 return true;
84 } 94 }
85 95
86 } // namespace chromeos_update_engine 96 } // namespace chromeos_update_engine
OLDNEW
« no previous file with comments | « omaha_response_handler_action.h ('k') | omaha_response_handler_action_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698