Implement sepolicy section in compatibility-matrix.
* kernel-sepolicy-version will be checked against
security_policyvers().
* sepolicy-version is not yet defined; put a placeholder
entry so that it parses the compatibility matrix XML
file correctly.
Test: libvintf_test
Change-Id: I41f69623728deedd00c511e6b99f43697c9eeda8
diff --git a/parse_xml.cpp b/parse_xml.cpp
index 328de3d..1489316 100644
--- a/parse_xml.cpp
+++ b/parse_xml.cpp
@@ -433,13 +433,20 @@
const ManifestHalConverter manifestHalConverter{};
const XmlConverter<ManifestHal> &gManifestHalConverter = manifestHalConverter;
+const XmlTextConverter<KernelSepolicyVersion> kernelSepolicyVersionConverter{"kernel-sepolicy-version"};
+const XmlTextConverter<SepolicyVersion> sepolicyVersionConverter{"sepolicy-version"};
+
struct SepolicyConverter : public XmlNodeConverter<Sepolicy> {
std::string elementName() const override { return "sepolicy"; }
- void mutateNode(const Sepolicy &, NodeType *, DocType *) const override {
- // TODO after writing sepolicy
+ void mutateNode(const Sepolicy &object, NodeType *root, DocType *d) const override {
+ appendChild(root, kernelSepolicyVersionConverter(object.kernelSepolicyVersion(), d));
+ appendChild(root, sepolicyVersionConverter(object.sepolicyVersion(), d));
}
- bool buildObject(Sepolicy *, NodeType *) const override {
- // TODO after writing sepolicy
+ bool buildObject(Sepolicy *object, NodeType *root) const override {
+ if (!parseChild(root, kernelSepolicyVersionConverter, &object->mKernelSepolicyVersion) ||
+ !parseChild(root, sepolicyVersionConverter, &object->mSepolicyVersion)) {
+ return false;
+ }
return true;
}
};