Merge "Remove Chrome OS specific verity_utils module."
diff --git a/payload_generator/generate_delta_main.cc b/payload_generator/generate_delta_main.cc
index 0a5e105..8a49c16 100644
--- a/payload_generator/generate_delta_main.cc
+++ b/payload_generator/generate_delta_main.cc
@@ -394,11 +394,6 @@
payload_config.rootfs_partition_size = FLAGS_rootfs_partition_size;
- // Load the rootfs size from verity's kernel command line if rootfs
- // verification is enabled.
- payload_config.source.LoadVerityRootfsSize();
- payload_config.target.LoadVerityRootfsSize();
-
if (payload_config.is_delta) {
// Avoid opening the filesystem interface for full payloads.
CHECK(payload_config.target.rootfs.OpenFilesystem());
diff --git a/payload_generator/payload_generation_config.cc b/payload_generator/payload_generation_config.cc
index e1daeb9..ecf9627 100644
--- a/payload_generator/payload_generation_config.cc
+++ b/payload_generator/payload_generation_config.cc
@@ -22,7 +22,6 @@
#include "update_engine/payload_generator/delta_diff_generator.h"
#include "update_engine/payload_generator/ext2_filesystem.h"
#include "update_engine/payload_generator/raw_filesystem.h"
-#include "update_engine/payload_generator/verity_utils.h"
#include "update_engine/utils.h"
namespace chromeos_update_engine {
@@ -97,24 +96,6 @@
return true;
}
-bool ImageConfig::LoadVerityRootfsSize() {
- if (kernel.path.empty())
- return false;
- uint64_t verity_rootfs_size = 0;
- if (!GetVerityRootfsSize(kernel.path, &verity_rootfs_size)) {
- LOG(INFO) << "Couldn't find verity options in source kernel config, will "
- << "use the rootfs filesystem size instead: " << rootfs.size;
- return false;
- }
- if (rootfs.size != verity_rootfs_size) {
- LOG(WARNING) << "Using the rootfs size found in the kernel config ("
- << verity_rootfs_size << ") instead of the rootfs filesystem "
- << " size (" << rootfs.size << ").";
- rootfs.size = verity_rootfs_size;
- }
- return true;
-}
-
bool ImageConfig::ImageInfoIsEmpty() const {
return image_info.board().empty()
&& image_info.key().empty()
diff --git a/payload_generator/payload_generation_config.h b/payload_generator/payload_generation_config.h
index 372e427..4e99688 100644
--- a/payload_generator/payload_generation_config.h
+++ b/payload_generator/payload_generation_config.h
@@ -80,13 +80,6 @@
// Returns whether the image size was properly detected.
bool LoadImageSize();
- // Load the |rootfs_size| stored in the kernel command line in the
- // |kernel.path| when the kernel is using rootfs verification (dm-verity).
- // Returns whether it loaded the size from the kernel command line. For
- // example, it would return false if no |kernel.path| was provided or the
- // kernel doesn't have verity enabled.
- bool LoadVerityRootfsSize();
-
// Returns whether the |image_info| field is empty.
bool ImageInfoIsEmpty() const;
diff --git a/payload_generator/verity_utils.cc b/payload_generator/verity_utils.cc
deleted file mode 100644
index 06fff05..0000000
--- a/payload_generator/verity_utils.cc
+++ /dev/null
@@ -1,139 +0,0 @@
-//
-// Copyright (C) 2015 The Android Open Source Project
-//
-// 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 "update_engine/payload_generator/verity_utils.h"
-
-#include <algorithm>
-#include <utility>
-#include <vector>
-
-#include <base/logging.h>
-#include <base/strings/string_number_conversions.h>
-#include <base/strings/string_util.h>
-#include <chromeos/strings/string_utils.h>
-extern "C" {
-#include <vboot/vboot_host.h>
-}
-
-using std::string;
-using std::vector;
-
-extern "C" {
-
-// vboot_host.h has a default VbExError() that will call exit() when a function
-// fails. We redefine that function here so it doesn't exit.
-void VbExError(const char* format, ...) {
- va_list ap;
- va_start(ap, format);
- fprintf(stderr, "ERROR: ");
- va_end(ap);
-}
-
-}
-
-namespace {
-
-// Splits a string with zero or more arguments separated by spaces into a list
-// of strings, but respecting the double quotes. For example, the string:
-// a="foo" b=foo c="bar baz" "my dir"/"my file"
-// has only four arguments, since some parts are grouped together due to the
-// double quotes.
-vector<string> SplitQuotedArgs(const string arglist) {
- vector<string> terms = chromeos::string_utils::Split(
- arglist, " ", false, false);
- vector<string> result;
- string last_term;
- size_t quotes = 0;
- for (const string& term : terms) {
- if (quotes % 2 == 0 && term.empty())
- continue;
-
- quotes += std::count(term.begin(), term.end(), '"');
- if (last_term.empty()) {
- last_term = term;
- } else {
- last_term += " " + term;
- }
- if (quotes % 2 == 0) {
- result.push_back(last_term);
- last_term.clear();
- quotes = 0;
- }
- }
- // Unterminated quoted string found.
- if (!last_term.empty())
- result.push_back(last_term);
- return result;
-}
-
-} // namespace
-
-namespace chromeos_update_engine {
-
-bool ParseVerityRootfsSize(const string& kernel_cmdline,
- uint64_t* rootfs_size) {
- vector<string> kernel_args = SplitQuotedArgs(kernel_cmdline);
-
- for (const string& arg : kernel_args) {
- std::pair<string, string> key_value =
- chromeos::string_utils::SplitAtFirst(arg, "=", true);
- if (key_value.first != "dm")
- continue;
- string value = key_value.second;
- if (value.size() > 1 && value.front() == '"' && value.back() == '"')
- value = value.substr(1, value.size() - 1);
-
- vector<string> dm_parts = SplitQuotedArgs(value);
- // Check if this is a dm-verity device.
- if (std::find(dm_parts.begin(), dm_parts.end(), "verity") == dm_parts.end())
- continue;
- for (const string& dm_part : dm_parts) {
- key_value = chromeos::string_utils::SplitAtFirst(dm_part, "=", true);
- if (key_value.first != "hashstart")
- continue;
- if (!base::StringToUint64(key_value.second, rootfs_size))
- continue;
- // The hashstart= value is specified in 512-byte blocks, so we need to
- // convert that to bytes.
- *rootfs_size *= 512;
- return true;
- }
- }
- return false;
-}
-
-bool GetVerityRootfsSize(const string& kernel_dev, uint64_t* rootfs_size) {
- string kernel_cmdline;
- char *config = FindKernelConfig(kernel_dev.c_str(), USE_PREAMBLE_LOAD_ADDR);
- if (!config) {
- LOG(WARNING) << "Error retrieving kernel command line from '"
- << kernel_dev << "', ignoring.";
- return false;
- }
- kernel_cmdline = string(config, MAX_KERNEL_CONFIG_SIZE);
-
- // FindKernelConfig() expects the caller to free the char*.
- free(config);
-
- if (!ParseVerityRootfsSize(kernel_cmdline, rootfs_size)) {
- LOG(INFO) << "Didn't find the rootfs size in the kernel command line: "
- << kernel_cmdline;
- return false;
- }
- return true;
-}
-
-} // namespace chromeos_update_engine
diff --git a/payload_generator/verity_utils.h b/payload_generator/verity_utils.h
deleted file mode 100644
index c99531e..0000000
--- a/payload_generator/verity_utils.h
+++ /dev/null
@@ -1,31 +0,0 @@
-//
-// Copyright (C) 2015 The Android Open Source Project
-//
-// 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 UPDATE_ENGINE_PAYLOAD_GENERATOR_VERITY_UTILS_H_
-#define UPDATE_ENGINE_PAYLOAD_GENERATOR_VERITY_UTILS_H_
-
-#include <string>
-
-namespace chromeos_update_engine {
-
-bool GetVerityRootfsSize(const std::string& kernel_dev, uint64_t* rootfs_size);
-
-bool ParseVerityRootfsSize(const std::string& kernel_cmdline,
- uint64_t* rootfs_size);
-
-} // namespace chromeos_update_engine
-
-#endif // UPDATE_ENGINE_PAYLOAD_GENERATOR_VERITY_UTILS_H_
diff --git a/payload_generator/verity_utils_unittest.cc b/payload_generator/verity_utils_unittest.cc
deleted file mode 100644
index fd42f61..0000000
--- a/payload_generator/verity_utils_unittest.cc
+++ /dev/null
@@ -1,73 +0,0 @@
-//
-// Copyright (C) 2015 The Android Open Source Project
-//
-// 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 "update_engine/payload_generator/verity_utils.h"
-
-#include <gtest/gtest.h>
-
-namespace chromeos_update_engine {
-
-// A real kernel command line found on a device.
-static const char* kVerityKernelCommandLine =
- "console= loglevel=7 init=/sbin/init cros_secure oops=panic panic=-1 "
- "root=/dev/dm-0 rootwait ro dm_verity.error_behavior=3 "
- "dm_verity.max_bios=-1 dm_verity.dev_wait=1 "
- "dm=\"1 vroot none ro 1,0 1536000 verity payload=PARTUUID=%U/PARTNROFF=1 "
- "hashtree=PARTUUID=%U/PARTNROFF=1 hashstart=1536000 alg=sha1 "
- "root_hexdigest=16b55bbea634fc3abf4c339da207cf050b1809d6 "
- "salt=18a095c4e473b68558afefdf83438d482cf37894d312afce6991c8267ea233f6\" "
- "noinitrd vt.global_cursor_default=0 kern_guid=%U ";
-
-// A real kernel command line from a parrot device, including the bootcache.
-static const char* kVerityAndBootcacheKernelCommandLine =
- "console= loglevel=7 init=/sbin/init cros_secure oops=panic panic=-1 "
- "root=/dev/dm-1 rootwait ro dm_verity.error_behavior=3 "
- "dm_verity.max_bios=-1 dm_verity.dev_wait=1 "
- "dm=\"2 vboot none ro 1,0 2545920 bootcache PARTUUID=%U/PARTNROFF=1 "
- "2545920 d5d03fb5459b6a75f069378c1799ba313d8ea89a 512 20000 100000, vroot "
- "none ro 1,0 2506752 verity payload=254:0 hashtree=254:0 hashstart=2506752 "
- "alg=sha1 root_hexdigest=3deebbc697a30cc585cf85a3b4351dc772861321 "
- "salt=6a13027cdf234c58a0b1f43e6a7428f41672cca89d5574c1f405649df65fb071\" "
- "noinitrd vt.global_cursor_default=0 kern_guid=%U add_efi_memmap "
- "boot=local noresume noswap i915.modeset=1 tpm_tis.force=1 "
- "tpm_tis.interrupts=0 nmi_watchdog=panic,lapic "
- "iTCO_vendor_support.vendorsupport=3";
-
-TEST(VerityUtilsTest, ParseVerityRootfsSizeWithInvalidValues) {
- uint64_t rootfs_size = 0;
- EXPECT_FALSE(ParseVerityRootfsSize("", &rootfs_size));
-
- // Not a verity dm device.
- EXPECT_FALSE(ParseVerityRootfsSize(
- "dm=\"1 vroot none ro 1,0 1234 something\"", &rootfs_size));
- EXPECT_FALSE(ParseVerityRootfsSize(
- "ro verity hashattr=1234", &rootfs_size));
-
- // The verity doesn't have the hashstart= attribute.
- EXPECT_FALSE(ParseVerityRootfsSize(
- "dm=\"1 vroot none ro 1,0 1234 verity payload=fake\"", &rootfs_size));
-}
-
-TEST(VerityUtilsTest, ParseVerityRootfsSizeWithValidValues) {
- uint64_t rootfs_size = 0;
- EXPECT_TRUE(ParseVerityRootfsSize(kVerityKernelCommandLine, &rootfs_size));
- EXPECT_EQ(1536000 * 512, rootfs_size);
- EXPECT_TRUE(ParseVerityRootfsSize(kVerityAndBootcacheKernelCommandLine,
- &rootfs_size));
- EXPECT_EQ(2506752 * 512, rootfs_size);
-}
-
-} // namespace chromeos_update_engine
diff --git a/update_engine.gyp b/update_engine.gyp
index 5d1ce97..65a1394 100644
--- a/update_engine.gyp
+++ b/update_engine.gyp
@@ -302,7 +302,6 @@
'payload_generator/raw_filesystem.cc',
'payload_generator/tarjan.cc',
'payload_generator/topological_sort.cc',
- 'payload_generator/verity_utils.cc',
],
},
# server-side delta generator.
@@ -423,7 +422,6 @@
'payload_generator/payload_file_unittest.cc',
'payload_generator/tarjan_unittest.cc',
'payload_generator/topological_sort_unittest.cc',
- 'payload_generator/verity_utils_unittest.cc',
'payload_state_unittest.cc',
'postinstall_runner_action_unittest.cc',
'prefs_unittest.cc',