From: Scott Cantor Date: Thu, 21 Nov 2013 15:03:16 +0000 (+0000) Subject: https://issues.shibboleth.net/jira/browse/SSPCPP-598 X-Git-Tag: 2.5.3~6 X-Git-Url: http://www.project-moonshot.org/gitweb/?p=shibboleth%2Fcpp-sp.git;a=commitdiff_plain;h=9c9bad679c7efa9a8b66ed368470abc4dd2abc5d https://issues.shibboleth.net/jira/browse/SSPCPP-598 --- diff --git a/shibsp/metadata/DynamicMetadataProvider.cpp b/shibsp/metadata/DynamicMetadataProvider.cpp index 9f9079d..da5c808 100644 --- a/shibsp/metadata/DynamicMetadataProvider.cpp +++ b/shibsp/metadata/DynamicMetadataProvider.cpp @@ -40,6 +40,7 @@ #include #include #include + #include #include #include @@ -300,6 +301,12 @@ saml2md::EntityDescriptor* DynamicMetadataProvider::resolve(const saml2md::Metad // Wrap the document for now. XercesJanitor docjanitor(doc); + // Check root element. + if (!doc->getDocumentElement() || !XMLHelper::isNodeNamed(doc->getDocumentElement(), + samlconstants::SAML20MD_NS, saml2md::EntityDescriptor::LOCAL_NAME)) { + throw saml2md::MetadataException("Root of metadata instance was not an EntityDescriptor"); + } + // Unmarshall objects, binding the document. auto_ptr xmlObject(XMLObjectBuilder::buildOneFromElement(doc->getDocumentElement(), true)); docjanitor.release();