Hello community, here is the log from the commit of package shibboleth-sp for openSUSE:Factory checked in at 2019-03-26 15:44:22 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/shibboleth-sp (Old) and /work/SRC/openSUSE:Factory/.shibboleth-sp.new.25356 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "shibboleth-sp" Tue Mar 26 15:44:22 2019 rev:12 rq:688165 version:3.0.4 Changes: -------- --- /work/SRC/openSUSE:Factory/shibboleth-sp/shibboleth-sp.changes 2019-02-24 17:18:30.504417334 +0100 +++ /work/SRC/openSUSE:Factory/.shibboleth-sp.new.25356/shibboleth-sp.changes 2019-03-26 15:44:37.148135976 +0100 @@ -1,0 +2,8 @@ +Wed Mar 20 13:06:50 UTC 2019 - Kristýna Streitová <[email protected]> + +- update to 3.0.4 + * list of fixes and enhancements + https://issues.shibboleth.net/jira/browse/SSPCPP-851?filter=12771 +- update xmltooling and opensaml versions in "Requires" + +------------------------------------------------------------------- Old: ---- shibboleth-sp-3.0.3.tar.bz2 shibboleth-sp-3.0.3.tar.bz2.asc New: ---- shibboleth-sp-3.0.4.tar.bz2 shibboleth-sp-3.0.4.tar.bz2.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ shibboleth-sp.spec ++++++ --- /var/tmp/diff_new_pack.dXUAkp/_old 2019-03-26 15:44:38.044134926 +0100 +++ /var/tmp/diff_new_pack.dXUAkp/_new 2019-03-26 15:44:38.044134926 +0100 @@ -12,7 +12,7 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# Please submit bugfixes or comments via http://bugs.opensuse.org/ # @@ -28,7 +28,7 @@ %define realname shibboleth %define pkgdocdir %{_docdir}/%{realname} Name: shibboleth-sp -Version: 3.0.3 +Version: 3.0.4 Release: 0 Summary: System for attribute-based Web Single Sign On License: Apache-2.0 @@ -47,19 +47,19 @@ BuildRequires: krb5-devel BuildRequires: liblog4shib-devel >= 2 BuildRequires: libmemcached-devel -BuildRequires: libsaml-devel >= 3.0.0 +BuildRequires: libsaml-devel >= 3.0.1 BuildRequires: libtool BuildRequires: libxerces-c-devel >= 3.2 BuildRequires: libxml-security-c-devel >= 2.0.0 -BuildRequires: libxmltooling-devel >= 3.0.0 +BuildRequires: libxmltooling-devel >= 3.0.4 BuildRequires: pkgconfig BuildRequires: systemd-devel BuildRequires: systemd-rpm-macros BuildRequires: unixODBC-devel BuildRequires: zlib-devel Requires: openssl -PreReq: opensaml-schemas >= 3.0.0 -PreReq: xmltooling-schemas >= 3.0.0 +PreReq: opensaml-schemas >= 3.0.1 +PreReq: xmltooling-schemas >= 3.0.4 Requires(pre): pwdutils Obsoletes: shibboleth-sp = 2.5.0 %{?systemd_requires} @@ -104,12 +104,12 @@ Group: Development/Libraries/C and C++ Requires: %{name} = %{version}-%{release} Requires: liblog4shib-devel >= 2 -Requires: libsaml-devel >= 3.0.0 +Requires: libsaml-devel >= 3.0.1 Requires: libshibsp%{libvers} = %{version}-%{release} Requires: libshibsp-lite%{libvers} = %{version}-%{release} Requires: libxerces-c-devel >= 3.2 Requires: libxml-security-c-devel >= 2.0.0 -Requires: libxmltooling-devel >= 3.0.0 +Requires: libxmltooling-devel >= 3.0.4 Obsoletes: shibboleth-sp-devel = 2.5.0 %description devel ++++++ shibboleth-sp-3.0.3.tar.bz2 -> shibboleth-sp-3.0.4.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shibboleth-sp-3.0.3/config_win32.h new/shibboleth-sp-3.0.4/config_win32.h --- old/shibboleth-sp-3.0.3/config_win32.h 2018-10-12 20:06:42.000000000 +0200 +++ new/shibboleth-sp-3.0.4/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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shibboleth-sp-3.0.3/configure new/shibboleth-sp-3.0.4/configure --- old/shibboleth-sp-3.0.3/configure 2018-12-12 20:16:00.000000000 +0100 +++ new/shibboleth-sp-3.0.4/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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shibboleth-sp-3.0.3/configure.ac new/shibboleth-sp-3.0.4/configure.ac --- old/shibboleth-sp-3.0.3/configure.ac 2018-10-12 20:06:42.000000000 +0200 +++ new/shibboleth-sp-3.0.4/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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shibboleth-sp-3.0.3/isapi_shib/isapi_shib.rc new/shibboleth-sp-3.0.4/isapi_shib/isapi_shib.rc --- old/shibboleth-sp-3.0.3/isapi_shib/isapi_shib.rc 2018-07-10 03:17:23.000000000 +0200 +++ new/shibboleth-sp-3.0.4/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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shibboleth-sp-3.0.3/shibboleth.spec new/shibboleth-sp-3.0.4/shibboleth.spec --- old/shibboleth-sp-3.0.3/shibboleth.spec 2018-12-12 20:16:24.000000000 +0100 +++ new/shibboleth-sp-3.0.4/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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shibboleth-sp-3.0.3/shibsp/Application.cpp new/shibboleth-sp-3.0.4/shibsp/Application.cpp --- old/shibboleth-sp-3.0.3/shibsp/Application.cpp 2018-07-10 03:17:23.000000000 +0200 +++ new/shibboleth-sp-3.0.4/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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shibboleth-sp-3.0.3/shibsp/Makefile.am new/shibboleth-sp-3.0.4/shibsp/Makefile.am --- old/shibboleth-sp-3.0.3/shibsp/Makefile.am 2018-10-12 20:09:40.000000000 +0200 +++ new/shibboleth-sp-3.0.4/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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shibboleth-sp-3.0.3/shibsp/Makefile.in new/shibboleth-sp-3.0.4/shibsp/Makefile.in --- old/shibboleth-sp-3.0.3/shibsp/Makefile.in 2018-12-12 20:15:59.000000000 +0100 +++ new/shibboleth-sp-3.0.4/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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shibboleth-sp-3.0.3/shibsp/handler/impl/AbstractHandler.cpp new/shibboleth-sp-3.0.4/shibsp/handler/impl/AbstractHandler.cpp --- old/shibboleth-sp-3.0.3/shibsp/handler/impl/AbstractHandler.cpp 2018-08-01 19:56:31.000000000 +0200 +++ new/shibboleth-sp-3.0.4/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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shibboleth-sp-3.0.3/shibsp/impl/StorageServiceSessionCache.cpp new/shibboleth-sp-3.0.4/shibsp/impl/StorageServiceSessionCache.cpp --- old/shibboleth-sp-3.0.3/shibsp/impl/StorageServiceSessionCache.cpp 2018-07-10 03:17:23.000000000 +0200 +++ new/shibboleth-sp-3.0.4/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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shibboleth-sp-3.0.3/shibsp/impl/XMLApplication.cpp new/shibboleth-sp-3.0.4/shibsp/impl/XMLApplication.cpp --- old/shibboleth-sp-3.0.3/shibsp/impl/XMLApplication.cpp 2018-10-12 19:42:15.000000000 +0200 +++ new/shibboleth-sp-3.0.4/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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shibboleth-sp-3.0.3/shibsp/remoting/impl/SocketListener.cpp new/shibboleth-sp-3.0.4/shibsp/remoting/impl/SocketListener.cpp --- old/shibboleth-sp-3.0.3/shibsp/remoting/impl/SocketListener.cpp 2018-12-13 16:31:25.000000000 +0100 +++ new/shibboleth-sp-3.0.4/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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shibboleth-sp-3.0.3/shibsp/shibsp.rc new/shibboleth-sp-3.0.4/shibsp/shibsp.rc --- old/shibboleth-sp-3.0.3/shibsp/shibsp.rc 2018-11-01 15:09:17.000000000 +0100 +++ new/shibboleth-sp-3.0.4/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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/shibboleth-sp-3.0.3/shibsp/version.h new/shibboleth-sp-3.0.4/shibsp/version.h --- old/shibboleth-sp-3.0.3/shibsp/version.h 2018-10-12 20:06:42.000000000 +0200 +++ new/shibboleth-sp-3.0.4/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 */
