From 55ef6167a2c235bd88c7216238b2001b46795b79 Mon Sep 17 00:00:00 2001 From: Ryan Mitchell Date: Fri, 13 Nov 2020 23:55:20 +0000 Subject: Revert "libandroidfw hardening for IncFs" Revert "Move map_ptr to incfs namspace" Revert submission 12787270 Reason for revert: b/173250495 Reverted Changes: I5cd1bc8a2:libandroidfw hardening for IncFs Ice5dbcfb2:Move map_ptr to incfs namspace I29ccdc8ed:Do not cache bag parent stack until requested I1e9e9acaa:Cache resolved theme values Change-Id: Ib90ef68339710086df41e9abe0833a542d03a74f --- libs/androidfw/ResourceUtils.cpp | 77 ++++++++++++++++------------------------ 1 file changed, 31 insertions(+), 46 deletions(-) (limited to 'libs/androidfw/ResourceUtils.cpp') diff --git a/libs/androidfw/ResourceUtils.cpp b/libs/androidfw/ResourceUtils.cpp index a34aa7239250..c63dff8f9104 100644 --- a/libs/androidfw/ResourceUtils.cpp +++ b/libs/androidfw/ResourceUtils.cpp @@ -48,76 +48,61 @@ bool ExtractResourceName(const StringPiece& str, StringPiece* out_package, Strin !(has_type_separator && out_type->empty()); } -base::expected ToResourceName( - const StringPoolRef& type_string_ref, const StringPoolRef& entry_string_ref, - const StringPiece& package_name) { - AssetManager2::ResourceName name{ - .package = package_name.data(), - .package_len = package_name.size(), - }; - - if (base::expected type_str = type_string_ref.string8()) { - name.type = type_str->data(); - name.type_len = type_str->size(); - } else if (UNLIKELY(IsIOError(type_str))) { - return base::unexpected(type_str.error()); - } - - if (name.type == nullptr) { - if (base::expected type16_str = type_string_ref.string16()) { - name.type16 = type16_str->data(); - name.type_len = type16_str->size(); - } else if (!type16_str.has_value()) { - return base::unexpected(type16_str.error()); +bool ToResourceName(const StringPoolRef& type_string_ref, + const StringPoolRef& entry_string_ref, + const StringPiece& package_name, + AssetManager2::ResourceName* out_name) { + out_name->package = package_name.data(); + out_name->package_len = package_name.size(); + + out_name->type = type_string_ref.string8(&out_name->type_len); + out_name->type16 = nullptr; + if (out_name->type == nullptr) { + out_name->type16 = type_string_ref.string16(&out_name->type_len); + if (out_name->type16 == nullptr) { + return false; } } - if (base::expected entry_str = entry_string_ref.string8()) { - name.entry = entry_str->data(); - name.entry_len = entry_str->size(); - } else if (UNLIKELY(IsIOError(entry_str))) { - return base::unexpected(entry_str.error()); - } - - if (name.entry == nullptr) { - if (base::expected entry16_str = entry_string_ref.string16()) { - name.entry16 = entry16_str->data(); - name.entry_len = entry16_str->size(); - } else if (!entry16_str.has_value()) { - return base::unexpected(entry16_str.error()); + out_name->entry = entry_string_ref.string8(&out_name->entry_len); + out_name->entry16 = nullptr; + if (out_name->entry == nullptr) { + out_name->entry16 = entry_string_ref.string16(&out_name->entry_len); + if (out_name->entry16 == nullptr) { + return false; } } - return name; + return true; } -std::string ToFormattedResourceString(const AssetManager2::ResourceName& resource_name) { +std::string ToFormattedResourceString(AssetManager2::ResourceName* resource_name) { std::string result; - if (resource_name.package != nullptr) { - result.append(resource_name.package, resource_name.package_len); + if (resource_name->package != nullptr) { + result.append(resource_name->package, resource_name->package_len); } - if (resource_name.type != nullptr || resource_name.type16 != nullptr) { + if (resource_name->type != nullptr || resource_name->type16 != nullptr) { if (!result.empty()) { result += ":"; } - if (resource_name.type != nullptr) { - result.append(resource_name.type, resource_name.type_len); + if (resource_name->type != nullptr) { + result.append(resource_name->type, resource_name->type_len); } else { - result += util::Utf16ToUtf8(StringPiece16(resource_name.type16, resource_name.type_len)); + result += util::Utf16ToUtf8(StringPiece16(resource_name->type16, resource_name->type_len)); } } - if (resource_name.entry != nullptr || resource_name.entry16 != nullptr) { + if (resource_name->entry != nullptr || resource_name->entry16 != nullptr) { if (!result.empty()) { result += "/"; } - if (resource_name.entry != nullptr) { - result.append(resource_name.entry, resource_name.entry_len); + if (resource_name->entry != nullptr) { + result.append(resource_name->entry, resource_name->entry_len); } else { - result += util::Utf16ToUtf8(StringPiece16(resource_name.entry16, resource_name.entry_len)); + result += util::Utf16ToUtf8(StringPiece16(resource_name->entry16, resource_name->entry_len)); } } -- cgit v1.2.3-59-g8ed1b