Package: release.debian.org Severity: normal User: release.debian....@packages.debian.org Usertags: unblock
Please unblock package shibboleth-sp Dear Release Team, When upstream fixed #924346 in xmltooling, they also fixed the same problem (uncaught parser exceptions) in shibboleth-sp to prevent DoS crashes that haven't been identified yet. The fixes were published together in new patch-level upstream releases for the whole Shibboleth Service Provider stack: xmltooling, opensaml and shibboleth-sp. Beyond the DoS prevention, shibboleth-sp 3.0.4 consists of three other bugfixes: * incorrect C++ code usage pattern invoking undefined behavior via boost::bind (https://issues.shibboleth.net/jira/browse/SSPCPP-847, already mentioned in unblock request #924577); * certain web applications provoking unbounded cookie data growth (https://issues.shibboleth.net/jira/browse/SSPCPP-851); and * documented configuration settings being ignored in some contexts (https://issues.shibboleth.net/jira/browse/SSPCPP-848). This last one can be worked around by verbosely expanding the affected configuration constructs, so it can be considered a minor issue. But the other three are major or potentially serious, so I ask for your permission to to upload 3.0.4+dfsg1-1 to unstable with a future unblock. Thanks, Feri. diff -Nru shibboleth-sp-3.0.3+dfsg1/configure shibboleth-sp-3.0.4+dfsg1/configure --- shibboleth-sp-3.0.3+dfsg1/configure 2018-12-12 20:16:00.000000000 +0100 +++ shibboleth-sp-3.0.4+dfsg1/configure 2019-03-08 16:15:39.000000000 +0100 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for shibboleth 3.0.3. +# Generated by GNU Autoconf 2.69 for shibboleth 3.0.4. # # Report bugs to <https://issues.shibboleth.net/>. # @@ -590,8 +590,8 @@ # Identity of this package. PACKAGE_NAME='shibboleth' PACKAGE_TARNAME='shibboleth-sp' -PACKAGE_VERSION='3.0.3' -PACKAGE_STRING='shibboleth 3.0.3' +PACKAGE_VERSION='3.0.4' +PACKAGE_STRING='shibboleth 3.0.4' PACKAGE_BUGREPORT='https://issues.shibboleth.net/' PACKAGE_URL='' @@ -1522,7 +1522,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures shibboleth 3.0.3 to adapt to many kinds of systems. +\`configure' configures shibboleth 3.0.4 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1592,7 +1592,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of shibboleth 3.0.3:";; + short | recursive ) echo "Configuration of shibboleth 3.0.4:";; esac cat <<\_ACEOF @@ -1792,7 +1792,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -shibboleth configure 3.0.3 +shibboleth configure 3.0.4 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2670,7 +2670,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by shibboleth $as_me 3.0.3, which was +It was created by shibboleth $as_me 3.0.4, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3535,7 +3535,7 @@ # Define the identity of the package. PACKAGE='shibboleth-sp' - VERSION='3.0.3' + VERSION='3.0.4' cat >>confdefs.h <<_ACEOF @@ -24198,7 +24198,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by shibboleth $as_me 3.0.3, which was +This file was extended by shibboleth $as_me 3.0.4, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -24264,7 +24264,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -shibboleth config.status 3.0.3 +shibboleth config.status 3.0.4 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -Nru shibboleth-sp-3.0.3+dfsg1/configure.ac shibboleth-sp-3.0.4+dfsg1/configure.ac --- shibboleth-sp-3.0.3+dfsg1/configure.ac 2018-10-12 20:06:42.000000000 +0200 +++ shibboleth-sp-3.0.4+dfsg1/configure.ac 2019-03-08 16:09:43.000000000 +0100 @@ -1,5 +1,5 @@ AC_PREREQ([2.50]) -AC_INIT([shibboleth],[3.0.3],[https://issues.shibboleth.net/],[shibboleth-sp]) +AC_INIT([shibboleth],[3.0.4],[https://issues.shibboleth.net/],[shibboleth-sp]) AC_CONFIG_SRCDIR(shibsp) AC_CONFIG_AUX_DIR(build-aux) AC_CONFIG_MACRO_DIR(m4) diff -Nru shibboleth-sp-3.0.3+dfsg1/config_win32.h shibboleth-sp-3.0.4+dfsg1/config_win32.h --- shibboleth-sp-3.0.3+dfsg1/config_win32.h 2018-10-12 20:06:42.000000000 +0200 +++ shibboleth-sp-3.0.4+dfsg1/config_win32.h 2019-03-08 16:09:43.000000000 +0100 @@ -121,13 +121,13 @@ #define PACKAGE_NAME "shibboleth" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "shibboleth 3.0.3" +#define PACKAGE_STRING "shibboleth 3.0.4" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "shibboleth-sp" /* Define to the version of this package. */ -#define PACKAGE_VERSION "3.0.3" +#define PACKAGE_VERSION "3.0.4" /* Define to the necessary symbol if this constant uses a non-standard name on your system. */ @@ -140,7 +140,7 @@ /* #undef TM_IN_SYS_TIME */ /* Version number of package */ -#define VERSION "3.0.3" +#define VERSION "3.0.4" /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ diff -Nru shibboleth-sp-3.0.3+dfsg1/debian/changelog shibboleth-sp-3.0.4+dfsg1/debian/changelog --- shibboleth-sp-3.0.3+dfsg1/debian/changelog 2018-12-21 02:15:22.000000000 +0100 +++ shibboleth-sp-3.0.4+dfsg1/debian/changelog 2019-03-16 20:51:16.000000000 +0100 @@ -1,3 +1,11 @@ +shibboleth-sp (3.0.4+dfsg1-1) unstable; urgency=medium + + * [f284741] New upstream release: 3.0.4 + * [095e478] Refresh our patches + * [129417f] Update Standards-Version to 4.3.0 (no changes required) + + -- Ferenc Wágner <wf...@debian.org> Sat, 16 Mar 2019 20:51:16 +0100 + shibboleth-sp (3.0.3+dfsg1-1) unstable; urgency=medium * [5ff63ef] New upstream release: 3.0.3 diff -Nru shibboleth-sp-3.0.3+dfsg1/debian/control shibboleth-sp-3.0.4+dfsg1/debian/control --- shibboleth-sp-3.0.3+dfsg1/debian/control 2018-10-30 20:04:46.000000000 +0100 +++ shibboleth-sp-3.0.4+dfsg1/debian/control 2019-03-16 20:51:06.000000000 +0100 @@ -27,7 +27,7 @@ Build-Depends-Indep: doxygen, graphviz, -Standards-Version: 4.2.1 +Standards-Version: 4.3.0 Homepage: http://shibboleth.net/ Vcs-Git: https://salsa.debian.org/shib-team/shibboleth-sp2.git Vcs-Browser: https://salsa.debian.org/shib-team/shibboleth-sp2 diff -Nru shibboleth-sp-3.0.3+dfsg1/debian/patches/Use-runstatedir-from-future-Autoconf-2.70.patch shibboleth-sp-3.0.4+dfsg1/debian/patches/Use-runstatedir-from-future-Autoconf-2.70.patch --- shibboleth-sp-3.0.3+dfsg1/debian/patches/Use-runstatedir-from-future-Autoconf-2.70.patch 2018-12-21 02:12:57.000000000 +0100 +++ shibboleth-sp-3.0.4+dfsg1/debian/patches/Use-runstatedir-from-future-Autoconf-2.70.patch 2019-03-16 20:48:54.000000000 +0100 @@ -37,7 +37,7 @@ # If $DAEMON_USER is set, try to run shibd as that user. However, diff --git a/shibsp/Makefile.am b/shibsp/Makefile.am -index 2a5b61d..eb0d9e9 100644 +index eb7a70c..5b8a1a1 100644 --- a/shibsp/Makefile.am +++ b/shibsp/Makefile.am @@ -281,7 +281,7 @@ libshibsp_lite_la_LIBADD = \ diff -Nru shibboleth-sp-3.0.3+dfsg1/isapi_shib/isapi_shib.rc shibboleth-sp-3.0.4+dfsg1/isapi_shib/isapi_shib.rc --- shibboleth-sp-3.0.3+dfsg1/isapi_shib/isapi_shib.rc 2018-07-10 03:17:23.000000000 +0200 +++ shibboleth-sp-3.0.4+dfsg1/isapi_shib/isapi_shib.rc 2019-03-08 16:09:43.000000000 +0100 @@ -25,8 +25,8 @@ // VS_VERSION_INFO VERSIONINFO - FILEVERSION RC_FILE_VERSION ,1 - PRODUCTVERSION RC_PRODUCT_VERSION,1 + FILEVERSION RC_FILE_VERSION,0 + PRODUCTVERSION RC_PRODUCT_VERSION,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L diff -Nru shibboleth-sp-3.0.3+dfsg1/shibboleth.spec shibboleth-sp-3.0.4+dfsg1/shibboleth.spec --- shibboleth-sp-3.0.3+dfsg1/shibboleth.spec 2018-12-12 20:16:24.000000000 +0100 +++ shibboleth-sp-3.0.4+dfsg1/shibboleth.spec 2019-03-08 16:16:06.000000000 +0100 @@ -1,5 +1,5 @@ Name: shibboleth -Version: 3.0.3 +Version: 3.0.4 Release: 1 Summary: Open source system for attribute-based Web SSO Group: Productivity/Networking/Security diff -Nru shibboleth-sp-3.0.3+dfsg1/shibsp/Application.cpp shibboleth-sp-3.0.4+dfsg1/shibsp/Application.cpp --- shibboleth-sp-3.0.3+dfsg1/shibsp/Application.cpp 2018-07-10 03:17:23.000000000 +0200 +++ shibboleth-sp-3.0.4+dfsg1/shibsp/Application.cpp 2019-01-14 20:22:42.000000000 +0100 @@ -109,15 +109,9 @@ void Application::clearAttributeHeaders(SPRequest& request) const { if (SPConfig::getConfig().isEnabled(SPConfig::OutOfProcess)) { - for_each( - m_unsetHeaders.begin(), m_unsetHeaders.end(), - boost::bind( - &SPRequest::clearHeader, - boost::ref(request), - boost::bind(&string::c_str, boost::bind(&pair<string,string>::first, _1)), - boost::bind(&string::c_str, boost::bind(&pair<string,string>::second, _1)) - ) - ); + for (vector< pair<string,string> >::const_iterator i = m_unsetHeaders.begin(); i != m_unsetHeaders.end(); ++i) { + request.clearHeader(i->first.c_str(), i->second.c_str()); + } return; } @@ -148,15 +142,9 @@ // Now holding read lock. SharedLock unsetLock(m_lock, false); - for_each( - m_unsetHeaders.begin(), m_unsetHeaders.end(), - boost::bind( - &SPRequest::clearHeader, - boost::ref(request), - boost::bind(&string::c_str, boost::bind(&pair<string,string>::first, _1)), - boost::bind(&string::c_str, boost::bind(&pair<string,string>::second, _1)) - ) - ); + for (vector< pair<string,string> >::const_iterator i = m_unsetHeaders.begin(); i != m_unsetHeaders.end(); ++i) { + request.clearHeader(i->first.c_str(), i->second.c_str()); + } } void Application::limitRedirect(const GenericRequest& request, const char* url) const diff -Nru shibboleth-sp-3.0.3+dfsg1/shibsp/handler/impl/AbstractHandler.cpp shibboleth-sp-3.0.4+dfsg1/shibsp/handler/impl/AbstractHandler.cpp --- shibboleth-sp-3.0.3+dfsg1/shibsp/handler/impl/AbstractHandler.cpp 2018-08-01 19:56:31.000000000 +0200 +++ shibboleth-sp-3.0.4+dfsg1/shibsp/handler/impl/AbstractHandler.cpp 2019-03-08 16:09:43.000000000 +0100 @@ -646,8 +646,35 @@ postkey = string(mech.second-3) + ':' + out.string(); } - // Set a cookie with key info. pair<string,const char*> shib_cookie = getPostCookieNameProps(application, relayState); + + // Purge any cookies in excess of 25. + int maxCookies = 25,purgedCookies = 0; + string exp; + + // Walk the list of cookies backwards by name. + const map<string,string>& cookies = request.getCookies(); + for (map<string,string>::const_reverse_iterator i = cookies.rbegin(); i != cookies.rend(); ++i) { + // Process post data cookies only. + if (starts_with(i->first, "_shibpost_")) { + if (maxCookies > 0) { + // Keep it, but count it against the limit. + --maxCookies; + } + else { + // We're over the limit, so everything here and older gets cleaned up. + if (exp.empty()) + exp = string(shib_cookie.second) + "; expires=Mon, 01 Jan 2001 00:00:00 GMT"; + response.setCookie(i->first.c_str(), exp.c_str()); + ++purgedCookies; + } + } + } + + if (purgedCookies > 0) + log(SPRequest::SPDebug, string("purged ") + lexical_cast<string>(purgedCookies) + " stale POST preservation cookie(s) from client"); + + // Set a cookie with key info. postkey += shib_cookie.second; response.setCookie(shib_cookie.first.c_str(), postkey.c_str()); } diff -Nru shibboleth-sp-3.0.3+dfsg1/shibsp/impl/StorageServiceSessionCache.cpp shibboleth-sp-3.0.4+dfsg1/shibsp/impl/StorageServiceSessionCache.cpp --- shibboleth-sp-3.0.3+dfsg1/shibsp/impl/StorageServiceSessionCache.cpp 2018-07-10 03:17:23.000000000 +0200 +++ shibboleth-sp-3.0.4+dfsg1/shibsp/impl/StorageServiceSessionCache.cpp 2019-03-08 16:09:43.000000000 +0100 @@ -1402,7 +1402,9 @@ pcache->m_log.info("purging %d old sessions", stale_keys.size()); // Pass 2: walk through the list of stale entries and remove them from the cache - for_each(stale_keys.begin(), stale_keys.end(), boost::bind(&SSCache::dormant, pcache, boost::bind(&string::c_str, _1))); + for (vector<string>::const_iterator i = stale_keys.begin(); i != stale_keys.end(); ++i) { + pcache->dormant(i->c_str()); + } } pcache->m_log.debug("cleanup thread completed"); diff -Nru shibboleth-sp-3.0.3+dfsg1/shibsp/impl/XMLApplication.cpp shibboleth-sp-3.0.4+dfsg1/shibsp/impl/XMLApplication.cpp --- shibboleth-sp-3.0.3+dfsg1/shibsp/impl/XMLApplication.cpp 2018-10-12 19:42:15.000000000 +0200 +++ shibboleth-sp-3.0.4+dfsg1/shibsp/impl/XMLApplication.cpp 2019-03-08 16:09:43.000000000 +0100 @@ -716,6 +716,21 @@ if (!hasChildElements) { // Append a session initiator element of the designated type to the root element. DOMElement* sidom = e->getOwnerDocument()->createElementNS(e->getNamespaceURI(), _SessionInitiator); + + // Copy in any attributes from the <SSO> element so they can be accessed as properties in the SI handler + // but more importantly the MessageEncoders, which are DOM-aware only, not SP property-aware. + // The property-based lookups will walk up the DOM tree but the DOM-only code won't. + for (XMLSize_t p = 0; p < ssopropslen; ++p) { + DOMNode* ssoprop = ssoprops->item(p); + if (ssoprop->getNodeType() == DOMNode::ATTRIBUTE_NODE) { + sidom->setAttributeNS( + ((DOMAttr*)ssoprop)->getNamespaceURI(), + ((DOMAttr*)ssoprop)->getLocalName(), + ((DOMAttr*)ssoprop)->getValue() + ); + } + } + sidom->setAttributeNS(nullptr, _type, inittype.second); e->appendChild(sidom); log.info("adding SessionInitiator of type (%s) to chain (/Login)", initiator->getString("id").second); @@ -740,7 +755,8 @@ if (idprop.first && pathprop.first) { DOMElement* acsdom = e->getOwnerDocument()->createElementNS(samlconstants::SAML20MD_NS, _AssertionConsumerService); - // Copy in any attributes from the <SSO> element so they can be accessed as properties in the ACS handler. + // Copy in any attributes from the <SSO> element so they can be accessed as properties in the ACS handler, + // since the handlers aren't attached to the SSO element. for (XMLSize_t p = 0; p < ssopropslen; ++p) { DOMNode* ssoprop = ssoprops->item(p); if (ssoprop->getNodeType() == DOMNode::ATTRIBUTE_NODE) { @@ -806,6 +822,21 @@ if (discou && *discou) { // Append a session initiator element of the designated type to the root element. DOMElement* sidom = e->getOwnerDocument()->createElementNS(e->getNamespaceURI(), _SessionInitiator); + + // Copy in any attributes from the <SSO> element so they can be accessed as properties in the SI handler + // but more importantly the MessageEncoders, which are DOM-aware only, not SP property-aware. + // The property-based lookups will walk up the DOM tree but the DOM-only code won't. + for (XMLSize_t p = 0; p < ssopropslen; ++p) { + DOMNode* ssoprop = ssoprops->item(p); + if (ssoprop->getNodeType() == DOMNode::ATTRIBUTE_NODE) { + sidom->setAttributeNS( + ((DOMAttr*)ssoprop)->getNamespaceURI(), + ((DOMAttr*)ssoprop)->getLocalName(), + ((DOMAttr*)ssoprop)->getValue() + ); + } + } + sidom->setAttributeNS(nullptr, _type, discop); sidom->setAttributeNS(nullptr, _URL, discou); e->appendChild(sidom); @@ -862,6 +893,21 @@ if (!hasChildElements) { // Append a logout initiator element of the designated type to the root element. DOMElement* lidom = e->getOwnerDocument()->createElementNS(e->getNamespaceURI(), _LogoutInitiator); + + // Copy in any attributes from the <Logout> element so they can be accessed as properties in the LI handler + // but more importantly the MessageEncoders, which are DOM-aware only, not SP property-aware. + // The property-based lookups will walk up the DOM tree but the DOM-only code won't. + for (XMLSize_t p = 0; p < slopropslen; ++p) { + DOMNode* sloprop = sloprops->item(p); + if (sloprop->getNodeType() == DOMNode::ATTRIBUTE_NODE) { + lidom->setAttributeNS( + ((DOMAttr*)sloprop)->getNamespaceURI(), + ((DOMAttr*)sloprop)->getLocalName(), + ((DOMAttr*)sloprop)->getValue() + ); + } + } + lidom->setAttributeNS(nullptr, _type, inittype.second); e->appendChild(lidom); log.info("adding LogoutInitiator of type (%s) to chain (/Logout)", initiator->getString("id").second); @@ -1499,14 +1545,20 @@ whitelist.push_back(string("http://") + request.getHostname() + ':'); } - static bool (*startsWithI)(const char*,const char*) = XMLString::startsWithI; - if (!whitelist.empty() && find_if(whitelist.begin(), whitelist.end(), - boost::bind(startsWithI, url, boost::bind(&string::c_str, _1))) != whitelist.end()) { - return; - } - else if (!m_redirectWhitelist.empty() && find_if(m_redirectWhitelist.begin(), m_redirectWhitelist.end(), - boost::bind(startsWithI, url, boost::bind(&string::c_str, _1))) != m_redirectWhitelist.end()) { - return; + if (!whitelist.empty()) { + for (vector<string>::const_iterator i = whitelist.begin(); i != whitelist.end(); ++i) { + if (XMLString::startsWithI(url, i->c_str())) { + return; + } + } + } + + if (!m_redirectWhitelist.empty()) { + for (vector<string>::const_iterator i = m_redirectWhitelist.begin(); i != m_redirectWhitelist.end(); ++i) { + if (XMLString::startsWithI(url, i->c_str())) { + return; + } + } } Category::getInstance(SHIBSP_LOGCAT ".Application").warn("redirectLimit policy enforced, blocked redirect to (%s)", url); throw opensaml::SecurityPolicyException("Blocked unacceptable redirect location."); diff -Nru shibboleth-sp-3.0.3+dfsg1/shibsp/Makefile.am shibboleth-sp-3.0.4+dfsg1/shibsp/Makefile.am --- shibboleth-sp-3.0.3+dfsg1/shibsp/Makefile.am 2018-10-12 20:09:40.000000000 +0200 +++ shibboleth-sp-3.0.4+dfsg1/shibsp/Makefile.am 2019-03-08 16:09:43.000000000 +0100 @@ -243,7 +243,7 @@ # this is different from the project version # http://sources.redhat.com/autobook/autobook/autobook_91.html -libshibsp_la_LDFLAGS = -version-info 8:3:0 +libshibsp_la_LDFLAGS = -version-info 8:4:0 libshibsp_la_CXXFLAGS = \ $(AM_CXXFLAGS) \ $(BOOST_CPPFLAGS) \ @@ -262,7 +262,7 @@ $(xerces_LIBS) \ $(xmlsec_LIBS) \ $(xmltooling_LIBS) -libshibsp_lite_la_LDFLAGS = -version-info 8:3:0 +libshibsp_lite_la_LDFLAGS = -version-info 8:4:0 libshibsp_lite_la_CXXFLAGS = -DSHIBSP_LITE \ $(AM_CXXFLAGS) \ $(BOOST_CPPFLAGS) \ diff -Nru shibboleth-sp-3.0.3+dfsg1/shibsp/Makefile.in shibboleth-sp-3.0.4+dfsg1/shibsp/Makefile.in --- shibboleth-sp-3.0.3+dfsg1/shibsp/Makefile.in 2018-12-12 20:15:59.000000000 +0100 +++ shibboleth-sp-3.0.4+dfsg1/shibsp/Makefile.in 2019-03-08 16:15:39.000000000 +0100 @@ -1053,7 +1053,7 @@ # this is different from the project version # http://sources.redhat.com/autobook/autobook/autobook_91.html -libshibsp_la_LDFLAGS = -version-info 8:3:0 +libshibsp_la_LDFLAGS = -version-info 8:4:0 libshibsp_la_CXXFLAGS = \ $(AM_CXXFLAGS) \ $(BOOST_CPPFLAGS) \ @@ -1074,7 +1074,7 @@ $(xmlsec_LIBS) \ $(xmltooling_LIBS) -libshibsp_lite_la_LDFLAGS = -version-info 8:3:0 +libshibsp_lite_la_LDFLAGS = -version-info 8:4:0 libshibsp_lite_la_CXXFLAGS = -DSHIBSP_LITE \ $(AM_CXXFLAGS) \ $(BOOST_CPPFLAGS) \ diff -Nru shibboleth-sp-3.0.3+dfsg1/shibsp/remoting/impl/SocketListener.cpp shibboleth-sp-3.0.4+dfsg1/shibsp/remoting/impl/SocketListener.cpp --- shibboleth-sp-3.0.3+dfsg1/shibsp/remoting/impl/SocketListener.cpp 2018-12-13 16:31:25.000000000 +0100 +++ shibboleth-sp-3.0.4+dfsg1/shibsp/remoting/impl/SocketListener.cpp 2019-03-08 16:09:43.000000000 +0100 @@ -34,7 +34,9 @@ #include <stack> #include <sstream> #include <boost/lexical_cast.hpp> +#include <xercesc/sax/SAXException.hpp> #include <xercesc/util/XMLUniDefs.hpp> +#include <xercesc/util/OutOfMemoryException.hpp> #include <xmltooling/util/NDC.h> #include <xmltooling/util/XMLHelper.h> @@ -560,6 +562,24 @@ // Dispatch the message. m_listener->receive(in, sink); } + catch (const xercesc::DOMException& e) { + auto_ptr_char temp(e.getMessage()); + if (incomingError) + log.error("error processing incoming message: %s", temp.get() ? temp.get() : "no message"); + XMLParserException ex(string("DOM error: ") + (temp.get() ? temp.get() : "no message")); + DDF out=DDF("exception").string(ex.toString().c_str()); + DDFJanitor jout(out); + sink << out; + } + catch (const xercesc::SAXException& e) { + auto_ptr_char temp(e.getMessage()); + if (incomingError) + log.error("error processing incoming message: %s", temp.get() ? temp.get() : "no message"); + XMLParserException ex(string("SAX error: ") + (temp.get() ? temp.get() : "no message")); + DDF out=DDF("exception").string(ex.toString().c_str()); + DDFJanitor jout(out); + sink << out; + } catch (const xercesc::XMLException& e) { auto_ptr_char temp(e.getMessage()); if (incomingError) @@ -568,6 +588,15 @@ DDF out=DDF("exception").string(ex.toString().c_str()); DDFJanitor jout(out); sink << out; + } + catch (const xercesc::OutOfMemoryException& e) { + auto_ptr_char temp(e.getMessage()); + if (incomingError) + log.error("error processing incoming message: %s", temp.get() ? temp.get() : "no message"); + XMLParserException ex(string("Out of memory error: ") + (temp.get() ? temp.get() : "no message")); + DDF out=DDF("exception").string(ex.toString().c_str()); + DDFJanitor jout(out); + sink << out; } catch (const XMLToolingException& e) { if (incomingError) diff -Nru shibboleth-sp-3.0.3+dfsg1/shibsp/shibsp.rc shibboleth-sp-3.0.4+dfsg1/shibsp/shibsp.rc --- shibboleth-sp-3.0.3+dfsg1/shibsp/shibsp.rc 2018-11-01 15:09:17.000000000 +0100 +++ shibboleth-sp-3.0.4+dfsg1/shibsp/shibsp.rc 2019-03-08 16:09:43.000000000 +0100 @@ -64,7 +64,7 @@ VALUE "InternalName", "shibsp3_0\0" #endif #endif - VALUE "LegalCopyright", "Copyright © 2018 UCAID\0" + VALUE "LegalCopyright", "Copyright 2019 UCAID\0" VALUE "LegalTrademarks", "\0" #ifdef SHIBSP_LITE #ifdef _DEBUG @@ -80,8 +80,8 @@ #endif #endif VALUE "PrivateBuild", "\0" - VALUE "ProductName", "Shibboleth 3.0.3\0" - VALUE "ProductVersion", "3, 0, 3, 0\0" + VALUE "ProductName", "Shibboleth 3.0.4\0" + VALUE "ProductVersion", "3, 0, 4, 0\0" VALUE "SpecialBuild", "\0" END END diff -Nru shibboleth-sp-3.0.3+dfsg1/shibsp/version.h shibboleth-sp-3.0.4+dfsg1/shibsp/version.h --- shibboleth-sp-3.0.3+dfsg1/shibsp/version.h 2018-10-12 20:06:42.000000000 +0200 +++ shibboleth-sp-3.0.4+dfsg1/shibsp/version.h 2019-03-08 16:09:43.000000000 +0100 @@ -44,7 +44,7 @@ #define SHIBSP_VERSION_MAJOR 3 #define SHIBSP_VERSION_MINOR 0 -#define SHIBSP_VERSION_REVISION 3 +#define SHIBSP_VERSION_REVISION 4 /** DO NOT MODIFY BELOW THIS LINE */ unblock shibboleth-sp/3.0.4+dfsg1-1