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
diff --git a/tools/aapt2/dump/DumpManifest.cpp b/tools/aapt2/dump/DumpManifest.cpp
index f2c6b15..9574d27 100644
--- a/tools/aapt2/dump/DumpManifest.cpp
+++ b/tools/aapt2/dump/DumpManifest.cpp
@@ -1978,12 +1978,13 @@
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);