summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaman Tenneti <rtenneti@google.com>2020-02-13 03:50:42 +0100
committerRaman Tenneti <rtenneti@google.com>2020-02-13 04:03:36 +0100
commitdaaacea96ebfc55b47f44240e2082c820c8eb234 (patch)
tree990ff845639b8a7184fb678c53d69c0a2bf1dbae
parentForce package installation with FUSE unless the package stores on device (diff)
downloadandroid_bootable_recovery-daaacea96ebfc55b47f44240e2082c820c8eb234.tar
android_bootable_recovery-daaacea96ebfc55b47f44240e2082c820c8eb234.tar.gz
android_bootable_recovery-daaacea96ebfc55b47f44240e2082c820c8eb234.tar.bz2
android_bootable_recovery-daaacea96ebfc55b47f44240e2082c820c8eb234.tar.lz
android_bootable_recovery-daaacea96ebfc55b47f44240e2082c820c8eb234.tar.xz
android_bootable_recovery-daaacea96ebfc55b47f44240e2082c820c8eb234.tar.zst
android_bootable_recovery-daaacea96ebfc55b47f44240e2082c820c8eb234.zip
-rw-r--r--Android.bp2
-rw-r--r--install/include/install/install.h4
-rw-r--r--install/install.cpp47
-rw-r--r--recovery.cpp6
-rw-r--r--tests/Android.bp1
-rw-r--r--tests/unit/install_test.cpp28
6 files changed, 1 insertions, 87 deletions
diff --git a/Android.bp b/Android.bp
index bda36c2f5..3a8e97883 100644
--- a/Android.bp
+++ b/Android.bp
@@ -72,7 +72,6 @@ cc_defaults {
],
static_libs: [
- "libc++fs",
"libinstall",
"librecovery_fastboot",
"libminui",
@@ -96,7 +95,6 @@ cc_library_static {
],
shared_libs: [
- "libfusesideload",
"librecovery_ui",
],
}
diff --git a/install/include/install/install.h b/install/include/install/install.h
index bef23e9ca..87d43ab09 100644
--- a/install/include/install/install.h
+++ b/install/include/install/install.h
@@ -63,7 +63,3 @@ bool ReadMetadataFromPackage(ZipArchiveHandle zip, std::map<std::string, std::st
// pre-device and serial number (if presents). A/B OTA specific checks: pre-build version,
// fingerprint, timestamp.
bool CheckPackageMetadata(const std::map<std::string, std::string>& metadata, OtaType ota_type);
-
-// Ensures the path to the update package is mounted. Also set the |should_use_fuse| to true if the
-// package stays on a removable media.
-bool SetupPackageMount(const std::string& package_path, bool* should_use_fuse);
diff --git a/install/install.cpp b/install/install.cpp
index 1c9bf2fd2..4bb0903cc 100644
--- a/install/install.cpp
+++ b/install/install.cpp
@@ -30,7 +30,6 @@
#include <atomic>
#include <chrono>
#include <condition_variable>
-#include <filesystem>
#include <functional>
#include <limits>
#include <mutex>
@@ -642,49 +641,3 @@ bool verify_package(Package* package, RecoveryUI* ui) {
}
return true;
}
-
-bool SetupPackageMount(const std::string& package_path, bool* should_use_fuse) {
- CHECK(should_use_fuse != nullptr);
-
- if (package_path.empty()) {
- return false;
- }
-
- *should_use_fuse = true;
- if (package_path[0] == '@') {
- auto block_map_path = package_path.substr(1);
- if (ensure_path_mounted(block_map_path) != 0) {
- LOG(ERROR) << "Failed to mount " << block_map_path;
- return false;
- }
- // uncrypt only produces block map only if the package stays on /data.
- *should_use_fuse = false;
- return true;
- }
-
- // Package is not a block map file.
- if (ensure_path_mounted(package_path) != 0) {
- LOG(ERROR) << "Failed to mount " << package_path;
- return false;
- }
-
- // Reject the package if the input path doesn't equal the canonicalized path.
- // e.g. /cache/../sdcard/update_package.
- std::error_code ec;
- auto canonical_path = std::filesystem::canonical(package_path, ec);
- if (ec) {
- LOG(ERROR) << "Failed to get canonical of " << package_path << ", " << ec.message();
- return false;
- }
- if (canonical_path.string() != package_path) {
- LOG(ERROR) << "Installation aborts. The canonical path " << canonical_path.string()
- << " doesn't equal the original path " << package_path;
- return false;
- }
-
- constexpr const char* CACHE_ROOT = "/cache";
- if (android::base::StartsWith(package_path, CACHE_ROOT)) {
- *should_use_fuse = false;
- }
- return true;
-}
diff --git a/recovery.cpp b/recovery.cpp
index 9747aae82..e4b8e45fb 100644
--- a/recovery.cpp
+++ b/recovery.cpp
@@ -687,11 +687,7 @@ Device::BuiltinAction start_recovery(Device* device, const std::vector<std::stri
ensure_path_mounted(update_package);
}
- bool should_use_fuse = false;
- if (!SetupPackageMount(update_package, &should_use_fuse)) {
- LOG(INFO) << "Failed to set up the package access, skipping installation";
- status = INSTALL_ERROR;
- } else if (install_with_fuse || should_use_fuse) {
+ if (install_with_fuse) {
LOG(INFO) << "Installing package " << update_package << " with fuse";
status = InstallWithFuseFromPath(update_package, ui);
} else if (auto memory_package = Package::CreateMemoryPackage(
diff --git a/tests/Android.bp b/tests/Android.bp
index 640bb042e..e49d966c7 100644
--- a/tests/Android.bp
+++ b/tests/Android.bp
@@ -93,7 +93,6 @@ librecovery_static_libs = [
"libbinderthreadstate",
"liblp",
"libtinyxml2",
- "libc++fs",
]
cc_test {
diff --git a/tests/unit/install_test.cpp b/tests/unit/install_test.cpp
index ecf1c9a61..370fbdcc5 100644
--- a/tests/unit/install_test.cpp
+++ b/tests/unit/install_test.cpp
@@ -34,7 +34,6 @@
#include "install/install.h"
#include "install/wipe_device.h"
#include "otautil/paths.h"
-#include "otautil/roots.h"
#include "private/setup_commands.h"
static void BuildZipArchive(const std::map<std::string, std::string>& file_map, int fd,
@@ -514,30 +513,3 @@ TEST(InstallTest, CheckPackageMetadata_ab_post_timestamp) {
"\n");
TestCheckPackageMetadata(metadata, OtaType::AB, true);
}
-
-TEST(InstallTest, SetupPackageMount_package_path) {
- load_volume_table();
- bool install_with_fuse;
-
- // Setup should fail if the input path doesn't exist.
- ASSERT_FALSE(SetupPackageMount("/does_not_exist", &install_with_fuse));
-
- // Package should be installed with fuse if it's not in /cache.
- TemporaryDir temp_dir;
- TemporaryFile update_package(temp_dir.path);
- ASSERT_TRUE(SetupPackageMount(update_package.path, &install_with_fuse));
- ASSERT_TRUE(install_with_fuse);
-
- // Setup should fail if the input path isn't canonicalized.
- std::string uncanonical_package_path = android::base::Join(
- std::vector<std::string>{
- temp_dir.path,
- "..",
- android::base::Basename(temp_dir.path),
- android::base::Basename(update_package.path),
- },
- '/');
-
- ASSERT_EQ(0, access(uncanonical_package_path.c_str(), R_OK));
- ASSERT_FALSE(SetupPackageMount(uncanonical_package_path, &install_with_fuse));
-}