diff options
author | Raman Tenneti <rtenneti@google.com> | 2020-02-13 04:08:09 +0100 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2020-02-13 04:08:09 +0100 |
commit | 4139a30ec532d0f0cfcd73cd929d30dc74e98597 (patch) | |
tree | 3d8fd06b997afa96379dd4623f341abab218bdd5 | |
parent | Merge "Force package installation with FUSE unless the package stores on device" into qt-qpr1-dev-plus-aosp (diff) | |
parent | Revert "Force package installation with FUSE unless the package stores on device" (diff) | |
download | android_bootable_recovery-4139a30ec532d0f0cfcd73cd929d30dc74e98597.tar android_bootable_recovery-4139a30ec532d0f0cfcd73cd929d30dc74e98597.tar.gz android_bootable_recovery-4139a30ec532d0f0cfcd73cd929d30dc74e98597.tar.bz2 android_bootable_recovery-4139a30ec532d0f0cfcd73cd929d30dc74e98597.tar.lz android_bootable_recovery-4139a30ec532d0f0cfcd73cd929d30dc74e98597.tar.xz android_bootable_recovery-4139a30ec532d0f0cfcd73cd929d30dc74e98597.tar.zst android_bootable_recovery-4139a30ec532d0f0cfcd73cd929d30dc74e98597.zip |
-rw-r--r-- | Android.bp | 2 | ||||
-rw-r--r-- | install/include/install/install.h | 4 | ||||
-rw-r--r-- | install/install.cpp | 47 | ||||
-rw-r--r-- | recovery.cpp | 6 | ||||
-rw-r--r-- | tests/Android.bp | 1 | ||||
-rw-r--r-- | tests/unit/install_test.cpp | 28 |
6 files changed, 1 insertions, 87 deletions
diff --git a/Android.bp b/Android.bp index e7e1938b8..4032bcc19 100644 --- a/Android.bp +++ b/Android.bp @@ -72,7 +72,6 @@ cc_defaults { ], static_libs: [ - "libc++fs", "libinstall", "librecovery_fastboot", "libminui", @@ -95,7 +94,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 526e1a556..9ea616e13 100644 --- a/recovery.cpp +++ b/recovery.cpp @@ -752,11 +752,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 4c23255ad..bde1bc5f3 100644 --- a/tests/Android.bp +++ b/tests/Android.bp @@ -92,7 +92,6 @@ librecovery_static_libs = [ "libhidlbase", "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)); -} |