Do not allow duplicated manifest.vendor-ndk.version.
As specified by VINTF doc in P, the following is not allowed:
<manifest...>
<vendor-ndk><version>27</version></vendor-ndk>
<vendor-ndk><version>27</version></vendor-ndk>
</manifest>
Test: libvintf_test
Change-Id: Ib9d42d2d75b7362c268597bc947c214e03dd5d00
Fixes: 72461606
diff --git a/parse_xml.cpp b/parse_xml.cpp
index 9f53d72..7abbc55 100644
--- a/parse_xml.cpp
+++ b/parse_xml.cpp
@@ -866,6 +866,16 @@
return false;
}
+ std::set<std::string> vendorNdkVersions;
+ for (const auto& vendorNdk : object->framework.mVendorNdks) {
+ if (vendorNdkVersions.find(vendorNdk.version()) != vendorNdkVersions.end()) {
+ this->mLastError =
+ "Duplicated manifest.vendor-ndk.version " + vendorNdk.version();
+ return false;
+ }
+ vendorNdkVersions.insert(vendorNdk.version());
+ }
+
if (!parseOptionalChild(root, systemSdkConverter, {}, &object->framework.mSystemSdk)) {
return false;
}