Do not call pop_back when app has no uses-sdk

Calling pop_back on an empty container results in undefined behavior.
aapt2 dump badging seg faults when used on an APK with no uses-sdk.

Bug: 188461703
Test: aapt2 dump badging HelloAppTest.apk
Change-Id: I8d8308a06d542f003ae399629bdbfb5b845674fc
This commit is contained in:
Ryan Mitchell
2021-05-20 11:38:57 -07:00
parent 33517fcf9a
commit 6ea9ed3d5f

View File

@@ -1978,12 +1978,13 @@ bool ManifestExtractor::Dump(text::Printer* printer, IDiagnostics* diag) {
filtered_uses_sdk_tags.emplace_back(uses_sdk);
}
}
filtered_uses_sdk_tags.pop_back();
root->Filter([&](const ManifestExtractor::Element* e) {
return std::find(filtered_uses_sdk_tags.begin(), filtered_uses_sdk_tags.end(), e) !=
filtered_uses_sdk_tags.end();
});
if (filtered_uses_sdk_tags.size() >= 2U) {
filtered_uses_sdk_tags.pop_back();
root->Filter([&](const ManifestExtractor::Element* e) {
return std::find(filtered_uses_sdk_tags.begin(), filtered_uses_sdk_tags.end(), e) !=
filtered_uses_sdk_tags.end();
});
}
// Print the elements in order seen
Print(root.get(), printer);