uncrypt: Fix the comparison in FindBlockDevice().

Previously it considered a match if the given path (i.e. path to an
update package) fully equals to a mount_point.  For example, `uncrypt
/data block.map` or `uncrypt /vendor block.map` would exit successfully,
without producing a block map.

Test: `uncrypt /path/to/package.zip block.map`
Test: `uncrypt /vendor block.map` fails.
Change-Id: Id946ab1c0b158b623013f89463cbb1960141d8b5
This commit is contained in:
Tao Bao
2018-12-05 14:33:28 -08:00
parent d1670a064d
commit bb134b2613

View File

@@ -174,9 +174,7 @@ static std::string FindBlockDevice(const std::string& path, bool* encryptable, b
if (entry.mount_point.empty()) {
continue;
}
auto len = entry.mount_point.size();
if (android::base::StartsWith(path, entry.mount_point) &&
(path[len] == '/' || path[len] == 0)) {
if (android::base::StartsWith(path, entry.mount_point + "/")) {
*encrypted = false;
*encryptable = false;
if (entry.is_encryptable() || entry.fs_mgr_flags.file_encryption) {