X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=shibsp%2Fimpl%2FChainingAccessControl.cpp;h=92f972dda281c404c3188a01b555e302b6e332b8;hb=c51bfd77603cf0ddb0b5e374c35586a8435895d6;hp=9849124debf5ee4fa4247371ecf7cd62f1f4af9e;hpb=3968f4eac0a112d55ca7ec0041f9cdb98400e7b3;p=shibboleth%2Fcpp-sp.git diff --git a/shibsp/impl/ChainingAccessControl.cpp b/shibsp/impl/ChainingAccessControl.cpp index 9849124..92f972d 100644 --- a/shibsp/impl/ChainingAccessControl.cpp +++ b/shibsp/impl/ChainingAccessControl.cpp @@ -95,22 +95,22 @@ AccessControl::~AccessControl() { } -ChainingAccessControl::ChainingAccessControl(const DOMElement* e) +ChainingAccessControl::ChainingAccessControl(const DOMElement* e) : m_op(OP_AND) { const XMLCh* op = e ? e->getAttributeNS(nullptr, _operator) : nullptr; - if (XMLString::equals(op, AND)) - m_op = OP_AND; - else if (XMLString::equals(op, OR)) + if (XMLString::equals(op, OR)) m_op = OP_OR; - else + else if (op && *op && !XMLString::equals(op, AND)) throw ConfigurationException("Missing or unrecognized operator in Chaining AccessControl configuration."); e = XMLHelper::getFirstChildElement(e, _AccessControl); while (e) { string t(XMLHelper::getAttrString(e, nullptr, _type)); if (!t.empty()) { - Category::getInstance(SHIBSP_LOGCAT".AccessControl.Chaining").info("building AccessControl provider of type (%s)...", t.c_str()); - m_ac.push_back(SPConfig::getConfig().AccessControlManager.newPlugin(t.c_str(), e)); + Category::getInstance(SHIBSP_LOGCAT ".AccessControl.Chaining").info("building AccessControl provider of type (%s)...", t.c_str()); + auto_ptr np(SPConfig::getConfig().AccessControlManager.newPlugin(t.c_str(), e)); + m_ac.push_back(np.get()); + np.release(); } e = XMLHelper::getNextSiblingElement(e, _AccessControl); }