blob: ef1687c99d254ea643ec486f12fe9c07f482f5d0 [file] [log] [blame]
// Copyright 2017 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "verity_mounter_impl.h"
#include <base/logging.h>
#include <base/strings/string_number_conversions.h>
#include <base/strings/string_split.h>
namespace imageloader {
bool MapperParametersToLoop(const std::string& verity_mount_parameters,
int32_t* loop) {
// Parameters should be of the form:
// "0 7:6 7:6 4096 4096 3089 3089 sha256 eef4aa5dc50d181b7f6..."
auto tokens = base::SplitString(verity_mount_parameters, " ",
base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
if (tokens.size() < 2) {
LOG(ERROR) << "Not enough parameters";
return false;
}
tokens = base::SplitString(tokens[1], ":", base::TRIM_WHITESPACE,
base::SPLIT_WANT_ALL);
if (tokens.size() < 2) {
LOG(ERROR) << "Unexpected token format";
return false;
}
return base::StringToInt(tokens[1], loop);
}
bool IsAncestor(const base::FilePath& ancenstor,
const base::FilePath& descendant) {
std::vector<std::string> ancenstor_components;
ancenstor.GetComponents(&ancenstor_components);
std::vector<std::string> descendant_components;
descendant.GetComponents(&descendant_components);
if (descendant_components.size() <= ancenstor_components.size()) {
return false;
}
return std::mismatch(
ancenstor_components.begin(), ancenstor_components.end(),
descendant_components.begin()).first == ancenstor_components.end();
}
} // namespace imageloader