From 6ea9ed3d5f4673900a99c20cc4dab6fd27e60bba Mon Sep 17 00:00:00 2001 From: Ryan Mitchell Date: Thu, 20 May 2021 11:38:57 -0700 Subject: 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 --- tools/aapt2/dump/DumpManifest.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/tools/aapt2/dump/DumpManifest.cpp b/tools/aapt2/dump/DumpManifest.cpp index f2c6b15bc0cd..9574d275690b 100644 --- a/tools/aapt2/dump/DumpManifest.cpp +++ b/tools/aapt2/dump/DumpManifest.cpp @@ -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); -- cgit v1.2.3-59-g8ed1b