From a62c416b6ecfc17d89853a8f14604249c94d2f60 Mon Sep 17 00:00:00 2001 From: cantor Date: Wed, 5 May 2010 21:21:49 +0000 Subject: [PATCH] VS10 solution files, convert from NULL macro to nullptr. git-svn-id: https://svn.middleware.georgetown.edu/cpp-sp/branches/REL_2@3252 cb58f699-b61c-0410-a6fe-9272a202ed29 --- .cproject | 185 ++++++- Shibboleth.sln | 111 ++--- adfs/Makefile.am | 2 +- adfs/adfs-lite.vcxproj | 212 ++++++++ adfs/adfs.cpp | 54 +-- adfs/adfs.vcxproj | 206 ++++++++ apache/Makefile.am | 2 +- apache/mod_apache.cpp | 148 +++--- apache/mod_shib13.vcxproj | 251 ++++++++++ apache/mod_shib20.vcxproj | 255 ++++++++++ apache/mod_shib22.vcxproj | 262 ++++++++++ fastcgi/Makefile.am | 4 +- fastcgi/shibauthorizer.cpp | 6 +- fastcgi/shibauthorizer.vcxproj | 236 +++++++++ fastcgi/shibresponder.cpp | 6 +- fastcgi/shibresponder.vcxproj | 237 +++++++++ isapi_shib/isapi_shib.cpp | 78 +-- isapi_shib/isapi_shib.vcxproj | 243 ++++++++++ memcache-store/Makefile.am | 2 +- memcache-store/memcache-store.cpp | 40 +- memcache-store/memcache-store.vcxproj | 198 ++++++++ nsapi_shib/Makefile.am | 2 +- nsapi_shib/nsapi_shib.cpp | 60 +-- nsapi_shib/nsapi_shib.vcxproj | 240 ++++++++++ odbc-store/Makefile.am | 2 +- odbc-store/odbc-store.cpp | 60 +-- odbc-store/odbc-store.vcxproj | 192 ++++++++ shibd/Makefile.am | 2 +- shibd/shibd.cpp | 30 +- shibd/shibd.vcxproj | 223 +++++++++ shibd/shibd_win32.cpp | 54 +-- shibsp/AbstractSPRequest.cpp | 14 +- shibsp/AbstractSPRequest.h | 4 +- shibsp/Application.h | 28 +- shibsp/Makefile.am | 9 +- shibsp/SPConfig.cpp | 18 +- shibsp/SPConfig.h | 12 +- shibsp/SPRequest.h | 10 +- shibsp/ServiceProvider.cpp | 30 +- shibsp/ServiceProvider.h | 8 +- shibsp/SessionCache.h | 40 +- shibsp/SessionCacheEx.h | 10 +- shibsp/attribute/Attribute.cpp | 16 +- shibsp/attribute/Attribute.h | 4 +- shibsp/attribute/AttributeDecoder.h | 8 +- shibsp/attribute/DOMAttributeDecoder.cpp | 22 +- shibsp/attribute/ExtensibleAttribute.cpp | 4 +- shibsp/attribute/KeyInfoAttributeDecoder.cpp | 22 +- shibsp/attribute/NameIDAttributeDecoder.cpp | 18 +- .../attribute/NameIDFromScopedAttributeDecoder.cpp | 24 +- shibsp/attribute/ScopedAttributeDecoder.cpp | 20 +- shibsp/attribute/SimpleAttribute.cpp | 4 +- shibsp/attribute/StringAttributeDecoder.cpp | 14 +- shibsp/attribute/XMLAttribute.cpp | 4 +- shibsp/attribute/XMLAttributeDecoder.cpp | 12 +- shibsp/attribute/filtering/BasicFilteringContext.h | 8 +- shibsp/attribute/filtering/FilteringContext.h | 10 +- .../attribute/filtering/impl/AndMatchFunctor.cpp | 10 +- .../impl/AttributeIssuerInEntityGroupFunctor.cpp | 4 +- .../filtering/impl/AttributeIssuerRegexFunctor.cpp | 6 +- .../impl/AttributeIssuerStringFunctor.cpp | 6 +- .../AttributeRequesterInEntityGroupFunctor.cpp | 4 +- .../impl/AttributeRequesterRegexFunctor.cpp | 6 +- .../impl/AttributeRequesterStringFunctor.cpp | 6 +- .../AttributeScopeMatchesShibMDScopeFunctor.cpp | 7 +- .../filtering/impl/AttributeScopeRegexFunctor.cpp | 11 +- .../filtering/impl/AttributeScopeStringFunctor.cpp | 9 +- .../filtering/impl/AttributeValueRegexFunctor.cpp | 11 +- .../filtering/impl/AttributeValueStringFunctor.cpp | 9 +- .../impl/AuthenticationMethodRegexFunctor.cpp | 10 +- .../impl/AuthenticationMethodStringFunctor.cpp | 9 +- .../filtering/impl/BasicFilteringContext.cpp | 6 +- .../filtering/impl/ChainingAttributeFilter.cpp | 6 +- .../attribute/filtering/impl/NotMatchFunctor.cpp | 10 +- .../impl/NumberOfAttributeValuesFunctor.cpp | 8 +- shibsp/attribute/filtering/impl/OrMatchFunctor.cpp | 10 +- .../filtering/impl/XMLAttributeFilter.cpp | 50 +- shibsp/attribute/resolver/AttributeResolver.h | 15 +- .../resolver/impl/ChainingAttributeExtractor.cpp | 6 +- .../resolver/impl/ChainingAttributeResolver.cpp | 18 +- .../resolver/impl/DelegationAttributeExtractor.cpp | 12 +- .../impl/KeyDescriptorAttributeExtractor.cpp | 10 +- .../resolver/impl/QueryAttributeResolver.cpp | 50 +- .../impl/SimpleAggregationAttributeResolver.cpp | 72 +-- .../resolver/impl/XMLAttributeExtractor.cpp | 68 +-- shibsp/binding/impl/ArtifactResolver.cpp | 8 +- shibsp/binding/impl/SOAPClient.cpp | 12 +- shibsp/handler/AbstractHandler.h | 16 +- shibsp/handler/AssertionConsumerService.h | 20 +- shibsp/handler/LogoutHandler.h | 6 +- shibsp/handler/RemotedHandler.h | 4 +- shibsp/handler/impl/AbstractHandler.cpp | 20 +- shibsp/handler/impl/AssertionConsumerService.cpp | 20 +- shibsp/handler/impl/AssertionLookup.cpp | 10 +- shibsp/handler/impl/ChainingLogoutInitiator.cpp | 6 +- shibsp/handler/impl/ChainingSessionInitiator.cpp | 4 +- shibsp/handler/impl/LogoutHandler.cpp | 12 +- shibsp/handler/impl/MetadataGenerator.cpp | 8 +- shibsp/handler/impl/RemotedHandler.cpp | 10 +- shibsp/handler/impl/SAML1Consumer.cpp | 26 +- shibsp/handler/impl/SAML2ArtifactResolution.cpp | 28 +- shibsp/handler/impl/SAML2Consumer.cpp | 36 +- shibsp/handler/impl/SAML2Logout.cpp | 38 +- shibsp/handler/impl/SAML2LogoutInitiator.cpp | 28 +- shibsp/handler/impl/SAML2NameIDMgmt.cpp | 36 +- shibsp/handler/impl/SAML2SessionInitiator.cpp | 78 +-- shibsp/handler/impl/SAMLDSSessionInitiator.cpp | 10 +- shibsp/handler/impl/SessionHandler.cpp | 6 +- shibsp/handler/impl/SessionInitiator.cpp | 2 +- shibsp/handler/impl/Shib1SessionInitiator.cpp | 18 +- shibsp/handler/impl/StatusHandler.cpp | 16 +- shibsp/handler/impl/TransformSessionInitiator.cpp | 10 +- shibsp/handler/impl/WAYFSessionInitiator.cpp | 12 +- shibsp/impl/ChainingAccessControl.cpp | 8 +- shibsp/impl/StorageServiceSessionCache.cpp | 120 ++--- shibsp/impl/XMLAccessControl.cpp | 26 +- shibsp/impl/XMLRequestMapper.cpp | 58 +-- shibsp/impl/XMLServiceProvider.cpp | 182 +++---- shibsp/metadata/DynamicMetadataProvider.cpp | 36 +- shibsp/metadata/MetadataExtImpl.cpp | 12 +- shibsp/metadata/MetadataProviderCriteria.h | 8 +- shibsp/remoting/ListenerService.h | 6 +- shibsp/remoting/ddf.h | 4 +- shibsp/remoting/impl/ListenerService.cpp | 8 +- shibsp/remoting/impl/SocketListener.cpp | 12 +- shibsp/remoting/impl/TCPListener.cpp | 10 +- shibsp/remoting/impl/UnixListener.cpp | 8 +- shibsp/remoting/impl/ddf.cpp | 68 +-- shibsp/security/PKIXTrustEngine.cpp | 14 +- shibsp/security/SecurityPolicy.h | 4 +- shibsp/shibsp-lite.vcxproj | 288 +++++++++++ shibsp/shibsp-lite.vcxproj.filters | 330 +++++++++++++ shibsp/shibsp.vcxproj | 338 +++++++++++++ shibsp/shibsp.vcxproj.filters | 531 +++++++++++++++++++++ shibsp/util/CGIParser.cpp | 6 +- shibsp/util/CGIParser.h | 6 +- shibsp/util/DOMPropertySet.cpp | 14 +- shibsp/util/DOMPropertySet.h | 18 +- shibsp/util/PropertySet.h | 40 +- shibsp/util/TemplateParameters.cpp | 6 +- shibsp/util/TemplateParameters.h | 6 +- util/Makefile.am | 2 +- util/mdquery.cpp | 16 +- util/mdquery.vcxproj | 213 +++++++++ util/resolvertest.cpp | 40 +- util/resolvertest.vcxproj | 215 +++++++++ 146 files changed, 6197 insertions(+), 1381 deletions(-) create mode 100644 adfs/adfs-lite.vcxproj create mode 100644 adfs/adfs.vcxproj create mode 100644 apache/mod_shib13.vcxproj create mode 100644 apache/mod_shib20.vcxproj create mode 100644 apache/mod_shib22.vcxproj create mode 100644 fastcgi/shibauthorizer.vcxproj create mode 100644 fastcgi/shibresponder.vcxproj create mode 100644 isapi_shib/isapi_shib.vcxproj create mode 100644 memcache-store/memcache-store.vcxproj create mode 100644 nsapi_shib/nsapi_shib.vcxproj create mode 100644 odbc-store/odbc-store.vcxproj create mode 100644 shibd/shibd.vcxproj create mode 100644 shibsp/shibsp-lite.vcxproj create mode 100644 shibsp/shibsp-lite.vcxproj.filters create mode 100644 shibsp/shibsp.vcxproj create mode 100644 shibsp/shibsp.vcxproj.filters create mode 100644 util/mdquery.vcxproj create mode 100644 util/resolvertest.vcxproj diff --git a/.cproject b/.cproject index 83c8f62..cb78291 100644 --- a/.cproject +++ b/.cproject @@ -54,12 +54,12 @@ @@ -68,6 +68,15 @@ + + + + + + + + + @@ -351,6 +360,172 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Shibboleth.sln b/Shibboleth.sln index c799c03..6283aa3 100644 --- a/Shibboleth.sln +++ b/Shibboleth.sln @@ -1,5 +1,5 @@ -Microsoft Visual Studio Solution File, Format Version 10.00 -# Visual Studio 2008 +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Server Modules", "Server Modules", "{26BA8F84-6E42-41FA-9B13-5D3F4B5B2050}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Extensions", "Extensions", "{96AE4FC9-45EF-4C18-9F3B-EDA439E26E4C}" @@ -14,77 +14,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "fastcgi", "fastcgi", "{8E1A fastcgi\Makefile.am = fastcgi\Makefile.am EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "isapi_shib", "isapi_shib\isapi_shib.vcproj", "{87C25D4E-8D19-4513-B0BA-BC668BC2DEE3}" - ProjectSection(ProjectDependencies) = postProject - {81F0F7A6-DC36-46EF-957F-F9E81D4403F7} = {81F0F7A6-DC36-46EF-957F-F9E81D4403F7} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_shib13", "apache\mod_shib13.vcproj", "{D243B43E-728E-4F32-BDFF-B3A897037C6D}" - ProjectSection(ProjectDependencies) = postProject - {81F0F7A6-DC36-46EF-957F-F9E81D4403F7} = {81F0F7A6-DC36-46EF-957F-F9E81D4403F7} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_shib20", "apache\mod_shib20.vcproj", "{68E9568B-476C-4289-B93C-893432378ADC}" - ProjectSection(ProjectDependencies) = postProject - {81F0F7A6-DC36-46EF-957F-F9E81D4403F7} = {81F0F7A6-DC36-46EF-957F-F9E81D4403F7} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "nsapi_shib", "nsapi_shib\nsapi_shib.vcproj", "{1396D80A-8672-4224-9B02-95F3F4207CDB}" - ProjectSection(ProjectDependencies) = postProject - {81F0F7A6-DC36-46EF-957F-F9E81D4403F7} = {81F0F7A6-DC36-46EF-957F-F9E81D4403F7} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_shib22", "apache\mod_shib22.vcproj", "{B44C0852-83B8-4FB2-A86E-097C9C8256D0}" - ProjectSection(ProjectDependencies) = postProject - {81F0F7A6-DC36-46EF-957F-F9E81D4403F7} = {81F0F7A6-DC36-46EF-957F-F9E81D4403F7} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "odbc-store", "odbc-store\odbc-store.vcproj", "{666A63A7-983F-4C19-8411-207F24305197}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shibsp", "shibsp\shibsp.vcproj", "{81F0F7A6-DC36-46EF-957F-F9E81D4403F6}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shibd", "shibd\shibd.vcproj", "{F13141B5-6C87-40BB-8D4E-5CC56EBB4C59}" - ProjectSection(ProjectDependencies) = postProject - {81F0F7A6-DC36-46EF-957F-F9E81D4403F6} = {81F0F7A6-DC36-46EF-957F-F9E81D4403F6} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shibsp-lite", "shibsp\shibsp-lite.vcproj", "{81F0F7A6-DC36-46EF-957F-F9E81D4403F7}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "adfs", "adfs\adfs.vcproj", "{26D4FABF-ACDE-4947-9C4A-7AE1B50CD83A}" - ProjectSection(ProjectDependencies) = postProject - {81F0F7A6-DC36-46EF-957F-F9E81D4403F6} = {81F0F7A6-DC36-46EF-957F-F9E81D4403F6} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "adfs-lite", "adfs\adfs-lite.vcproj", "{26D4FABF-ACDE-4947-9C4A-7AE1B50CD83B}" - ProjectSection(ProjectDependencies) = postProject - {81F0F7A6-DC36-46EF-957F-F9E81D4403F7} = {81F0F7A6-DC36-46EF-957F-F9E81D4403F7} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mdquery", "util\mdquery.vcproj", "{F13141B6-6C87-40BB-8D4E-5CC56EBB4C5A}" - ProjectSection(ProjectDependencies) = postProject - {81F0F7A6-DC36-46EF-957F-F9E81D4403F6} = {81F0F7A6-DC36-46EF-957F-F9E81D4403F6} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "resolvertest", "util\resolvertest.vcproj", "{F13141B6-6C87-40BB-8D4E-5CC56EBB4C59}" - ProjectSection(ProjectDependencies) = postProject - {81F0F7A6-DC36-46EF-957F-F9E81D4403F6} = {81F0F7A6-DC36-46EF-957F-F9E81D4403F6} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shibauthorizer", "fastcgi\shibauthorizer.vcproj", "{8CF7DDFA-EAA0-416E-853E-3DCB210C4AE0}" - ProjectSection(ProjectDependencies) = postProject - {81F0F7A6-DC36-46EF-957F-F9E81D4403F7} = {81F0F7A6-DC36-46EF-957F-F9E81D4403F7} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shibresponder", "fastcgi\shibresponder.vcproj", "{B2423DCE-048D-4BAA-9AB9-F5D1FCDD3D25}" - ProjectSection(ProjectDependencies) = postProject - {81F0F7A6-DC36-46EF-957F-F9E81D4403F7} = {81F0F7A6-DC36-46EF-957F-F9E81D4403F7} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "memcache-store", "memcache-store\memcache-store.vcproj", "{666A63A7-983F-4C19-8411-207F24305198}" - ProjectSection(ProjectDependencies) = postProject - {81F0F7A6-DC36-46EF-957F-F9E81D4403F6} = {81F0F7A6-DC36-46EF-957F-F9E81D4403F6} - EndProjectSection -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Schemas", "Schemas", "{0F172F71-BDD7-44D1-9147-061DC20683BD}" ProjectSection(SolutionItems) = preProject schemas\catalog.xml.in = schemas\catalog.xml.in @@ -170,6 +99,38 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Doc", "Doc", "{6ED5E3E7-1B0 doc\RELEASE.txt = doc\RELEASE.txt EndProjectSection EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "isapi_shib", "isapi_shib\isapi_shib.vcxproj", "{87C25D4E-8D19-4513-B0BA-BC668BC2DEE3}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_shib_13", "apache\mod_shib13.vcxproj", "{D243B43E-728E-4F32-BDFF-B3A897037C6D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_shib_20", "apache\mod_shib20.vcxproj", "{68E9568B-476C-4289-B93C-893432378ADC}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "nsapi_shib", "nsapi_shib\nsapi_shib.vcxproj", "{1396D80A-8672-4224-9B02-95F3F4207CDB}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_shib_22", "apache\mod_shib22.vcxproj", "{B44C0852-83B8-4FB2-A86E-097C9C8256D0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "odbc-store", "odbc-store\odbc-store.vcxproj", "{666A63A7-983F-4C19-8411-207F24305197}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shibsp", "shibsp\shibsp.vcxproj", "{81F0F7A6-DC36-46EF-957F-F9E81D4403F6}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shibd", "shibd\shibd.vcxproj", "{F13141B5-6C87-40BB-8D4E-5CC56EBB4C59}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shibsp-lite", "shibsp\shibsp-lite.vcxproj", "{81F0F7A6-DC36-46EF-957F-F9E81D4403F7}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "adfs", "adfs\adfs.vcxproj", "{26D4FABF-ACDE-4947-9C4A-7AE1B50CD83A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "adfs-lite", "adfs\adfs-lite.vcxproj", "{26D4FABF-ACDE-4947-9C4A-7AE1B50CD83B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mdquery", "util\mdquery.vcxproj", "{F13141B6-6C87-40BB-8D4E-5CC56EBB4C5A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "resolvertest", "util\resolvertest.vcxproj", "{F13141B6-6C87-40BB-8D4E-5CC56EBB4C59}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shibauthorizer", "fastcgi\shibauthorizer.vcxproj", "{8CF7DDFA-EAA0-416E-853E-3DCB210C4AE0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shibresponder", "fastcgi\shibresponder.vcxproj", "{B2423DCE-048D-4BAA-9AB9-F5D1FCDD3D25}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "memcache-store", "memcache-store\memcache-store.vcxproj", "{666A63A7-983F-4C19-8411-207F24305198}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 @@ -279,15 +240,19 @@ Global {8CF7DDFA-EAA0-416E-853E-3DCB210C4AE0}.Debug|Win32.ActiveCfg = Debug|Win32 {8CF7DDFA-EAA0-416E-853E-3DCB210C4AE0}.Debug|Win32.Build.0 = Debug|Win32 {8CF7DDFA-EAA0-416E-853E-3DCB210C4AE0}.Debug|x64.ActiveCfg = Debug|x64 + {8CF7DDFA-EAA0-416E-853E-3DCB210C4AE0}.Debug|x64.Build.0 = Debug|x64 {8CF7DDFA-EAA0-416E-853E-3DCB210C4AE0}.Release|Win32.ActiveCfg = Release|Win32 {8CF7DDFA-EAA0-416E-853E-3DCB210C4AE0}.Release|Win32.Build.0 = Release|Win32 {8CF7DDFA-EAA0-416E-853E-3DCB210C4AE0}.Release|x64.ActiveCfg = Release|x64 + {8CF7DDFA-EAA0-416E-853E-3DCB210C4AE0}.Release|x64.Build.0 = Release|x64 {B2423DCE-048D-4BAA-9AB9-F5D1FCDD3D25}.Debug|Win32.ActiveCfg = Debug|Win32 {B2423DCE-048D-4BAA-9AB9-F5D1FCDD3D25}.Debug|Win32.Build.0 = Debug|Win32 {B2423DCE-048D-4BAA-9AB9-F5D1FCDD3D25}.Debug|x64.ActiveCfg = Debug|x64 + {B2423DCE-048D-4BAA-9AB9-F5D1FCDD3D25}.Debug|x64.Build.0 = Debug|x64 {B2423DCE-048D-4BAA-9AB9-F5D1FCDD3D25}.Release|Win32.ActiveCfg = Release|Win32 {B2423DCE-048D-4BAA-9AB9-F5D1FCDD3D25}.Release|Win32.Build.0 = Release|Win32 {B2423DCE-048D-4BAA-9AB9-F5D1FCDD3D25}.Release|x64.ActiveCfg = Release|x64 + {B2423DCE-048D-4BAA-9AB9-F5D1FCDD3D25}.Release|x64.Build.0 = Release|x64 {666A63A7-983F-4C19-8411-207F24305198}.Debug|Win32.ActiveCfg = Debug|Win32 {666A63A7-983F-4C19-8411-207F24305198}.Debug|Win32.Build.0 = Debug|Win32 {666A63A7-983F-4C19-8411-207F24305198}.Debug|x64.ActiveCfg = Debug|x64 diff --git a/adfs/Makefile.am b/adfs/Makefile.am index 196504b..e6aa05c 100644 --- a/adfs/Makefile.am +++ b/adfs/Makefile.am @@ -22,4 +22,4 @@ adfs_lite_la_CPPFLAGS = -DSHIBSP_LITE install-exec-hook: for la in $(plugin_LTLIBRARIES) ; do rm -f $(DESTDIR)$(plugindir)/$$la ; done -EXTRA_DIST = adfs.vcproj adfs-lite.vcproj resource.h adfs.rc +EXTRA_DIST = adfs.vcxproj adfs-lite.vcxproj resource.h adfs.rc diff --git a/adfs/adfs-lite.vcxproj b/adfs/adfs-lite.vcxproj new file mode 100644 index 0000000..c45a4e9 --- /dev/null +++ b/adfs/adfs-lite.vcxproj @@ -0,0 +1,212 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {26D4FABF-ACDE-4947-9C4A-7AE1B50CD83B} + adfs-lite + Win32Proj + + + + DynamicLibrary + MultiByte + true + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + true + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)\ + $(ProjectName)-$(Configuration)\ + true + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(ProjectName)-$(Configuration)\ + true + $(SolutionDir)$(Configuration)\ + $(ProjectName)-$(Configuration)\ + false + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(ProjectName)-$(Configuration)\ + false + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + .so + .so + .so + .so + + + + Disabled + .;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;SHIBSP_LITE;%(PreprocessorDefinitions) + true + MultiThreadedDebugDLL + + + true + Level3 + EditAndContinue + + + SHIBSP_LITE;_DEBUG;%(PreprocessorDefinitions) + + + log4shib1D.lib;xerces-c_3D.lib;xmltooling-lite1D.lib;%(AdditionalDependencies) + ..\..\cpp-xmltooling\$(Configuration);%(AdditionalLibraryDirectories) + true + Windows + + + + + + + X64 + + + Disabled + .;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;SHIBSP_LITE;%(PreprocessorDefinitions) + true + MultiThreadedDebugDLL + + + true + Level3 + ProgramDatabase + + + SHIBSP_LITE;_DEBUG;%(PreprocessorDefinitions) + + + log4shib1D.lib;xerces-c_3D.lib;xmltooling-lite1D.lib;%(AdditionalDependencies) + ..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) + true + Windows + + + + + + + .;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;SHIBSP_LITE;%(PreprocessorDefinitions) + + + Level3 + + + SHIBSP_LITE;%(PreprocessorDefinitions) + + + log4shib1.lib;xerces-c_3.lib;xmltooling-lite1.lib;%(AdditionalDependencies) + ..\..\cpp-xmltooling\$(Configuration);%(AdditionalLibraryDirectories) + Windows + true + true + + + + + + + X64 + + + .;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;SHIBSP_LITE;%(PreprocessorDefinitions) + + + Level3 + + + SHIBSP_LITE;%(PreprocessorDefinitions) + + + log4shib1.lib;xerces-c_3.lib;xmltooling-lite1.lib;%(AdditionalDependencies) + ..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) + true + Windows + true + true + + + + + + + + + + + + + + + + + + + {81f0f7a6-dc36-46ef-957f-f9e81d4403f7} + false + + + + + + \ No newline at end of file diff --git a/adfs/adfs.cpp b/adfs/adfs.cpp index f724540..0c9f242 100644 --- a/adfs/adfs.cpp +++ b/adfs/adfs.cpp @@ -17,7 +17,7 @@ /** * adfs.cpp * - * ADFSv1 extension library + * ADFSv1 extension library. */ #if defined (_MSC_VER) || defined(__BORLANDC__) @@ -114,7 +114,7 @@ namespace { { public: ADFSSessionInitiator(const DOMElement* e, const char* appId) - : AbstractHandler(e, Category::getInstance(SHIBSP_LOGCAT".SessionInitiator.ADFS"), NULL, &m_remapper), m_appId(appId), m_binding(WSFED_NS) { + : AbstractHandler(e, Category::getInstance(SHIBSP_LOGCAT".SessionInitiator.ADFS"), nullptr, &m_remapper), m_appId(appId), m_binding(WSFED_NS) { // If Location isn't set, defer address registration until the setParent call. pair loc = getString("Location"); if (loc.first) { @@ -328,7 +328,7 @@ pair ADFSSessionInitiator::run(SPRequest& request, string& entityID, string target; pair prop; pair acClass; - const Handler* ACS=NULL; + const Handler* ACS=nullptr; const Application& app=request.getApplication(); if (isHandler) { @@ -408,7 +408,7 @@ pair ADFSSessionInitiator::run(SPRequest& request, string& entityID, // Out of process means the POST data via the request can be exposed directly to the private method. // The method will handle POST preservation if necessary *before* issuing the response, but only if // it dispatches to an IdP. - return doRequest(app, &request, request, entityID.c_str(), ACSloc.c_str(), (acClass.first ? acClass.second : NULL), target); + return doRequest(app, &request, request, entityID.c_str(), ACSloc.c_str(), (acClass.first ? acClass.second : nullptr), target); } // Remote the call. @@ -441,7 +441,7 @@ void ADFSSessionInitiator::receive(DDF& in, ostream& out) { // Find application. const char* aid=in["application_id"].string(); - const Application* app=aid ? SPConfig::getConfig().getServiceProvider()->getApplication(aid) : NULL; + const Application* app=aid ? SPConfig::getConfig().getServiceProvider()->getApplication(aid) : nullptr; if (!app) { // Something's horribly wrong. m_log.error("couldn't find application (%s) to generate ADFS request", aid ? aid : "(missing)"); @@ -453,7 +453,7 @@ void ADFSSessionInitiator::receive(DDF& in, ostream& out) if (!entityID || !acsLocation) throw ConfigurationException("No entityID or acsLocation parameter supplied to remoted SessionInitiator."); - DDF ret(NULL); + DDF ret(nullptr); DDFJanitor jout(ret); // Wrap the outgoing object with a Response facade. @@ -464,7 +464,7 @@ void ADFSSessionInitiator::receive(DDF& in, ostream& out) // Since we're remoted, the result should either be a throw, which we pass on, // a false/0 return, which we just return as an empty structure, or a response/redirect, // which we capture in the facade and send back. - doRequest(*app, NULL, *http.get(), entityID, acsLocation, in["authnContextClassRef"].string(), relayState); + doRequest(*app, nullptr, *http.get(), entityID, acsLocation, in["authnContextClassRef"].string(), relayState); if (!ret.isstruct()) ret.structure(); ret.addmember("RelayState").unsafe_string(relayState.c_str()); @@ -510,7 +510,7 @@ pair ADFSSessionInitiator::doRequest( preserveRelayState(app, httpResponse, relayState); // UTC timestamp - time_t epoch=time(NULL); + time_t epoch=time(nullptr); #ifndef HAVE_GMTIME_R struct tm* ptime=gmtime(&epoch); #else @@ -608,7 +608,7 @@ void ADFSConsumer::implementProtocol( if (!response || !response->hasChildren()) throw FatalProfileException("Incoming message was not of the proper type or contains no security token."); - const Assertion* token = NULL; + const Assertion* token = nullptr; for (vector::const_iterator xo = response->getUnknownXMLObjects().begin(); xo != response->getUnknownXMLObjects().end(); ++xo) { // Look for the RequestedSecurityToken element. if (XMLString::equals((*xo)->getElementQName().getLocalPart(), RequestedSecurityToken)) { @@ -626,7 +626,7 @@ void ADFSConsumer::implementProtocol( extractMessageDetails(*token, m_protocol.get(), policy); // Populate recipient as audience. - const EntityDescriptor* entity = policy.getIssuerMetadata() ? dynamic_cast(policy.getIssuerMetadata()->getParent()) : NULL; + const EntityDescriptor* entity = policy.getIssuerMetadata() ? dynamic_cast(policy.getIssuerMetadata()->getParent()) : nullptr; policy.getAudiences().push_back(application.getRelyingParty(entity)->getXMLString("entityID").second); // Run the policy over the assertion. Handles replay, freshness, and @@ -638,11 +638,11 @@ void ADFSConsumer::implementProtocol( if (!policy.isAuthenticated()) throw SecurityPolicyException("Unable to establish security of incoming assertion."); - saml1::NameIdentifier* saml1name=NULL; - saml2::NameID* saml2name=NULL; - const XMLCh* authMethod=NULL; - const XMLCh* authInstant=NULL; - time_t now = time(NULL), sessionExp = 0; + saml1::NameIdentifier* saml1name=nullptr; + saml2::NameID* saml2name=nullptr; + const XMLCh* authMethod=nullptr; + const XMLCh* authInstant=nullptr; + time_t now = time(nullptr), sessionExp = 0; const PropertySet* sessionProps = application.getPropertySet("Sessions"); const saml1::Assertion* saml1token = dynamic_cast(token); @@ -705,7 +705,7 @@ void ADFSConsumer::implementProtocol( checkAddress(application, httpRequest, ip.get()); } - saml2name = saml2token->getSubject() ? saml2token->getSubject()->getNameID() : NULL; + saml2name = saml2token->getSubject() ? saml2token->getSubject()->getNameID() : nullptr; if (ssoStatement->getAuthnContext() && ssoStatement->getAuthnContext()->getAuthnContextClassRef()) authMethod = ssoStatement->getAuthnContext()->getAuthnContextClassRef()->getReference(); if (ssoStatement->getAuthnInstant()) @@ -728,7 +728,7 @@ void ADFSConsumer::implementProtocol( // To complete processing, we need to extract and resolve attributes and then create the session. // Normalize a SAML 1.x NameIdentifier... - auto_ptr nameid(saml1name ? saml2::NameIDBuilder::buildNameID() : NULL); + auto_ptr nameid(saml1name ? saml2::NameIDBuilder::buildNameID() : nullptr); if (saml1name) { nameid->setName(saml1name->getName()); nameid->setFormat(saml1name->getFormat()); @@ -745,7 +745,7 @@ void ADFSConsumer::implementProtocol( saml1name, (saml1name ? nameid.get() : saml2name), authMethod, - NULL, + nullptr, &tokens ) ); @@ -764,11 +764,11 @@ void ADFSConsumer::implementProtocol( m_protocol.get(), (saml1name ? nameid.get() : saml2name), authInstant, - NULL, + nullptr, authMethod, - NULL, + nullptr, &tokens, - ctx.get() ? &ctx->getResolvedAttributes() : NULL + ctx.get() ? &ctx->getResolvedAttributes() : nullptr ); } @@ -782,7 +782,7 @@ pair ADFSLogoutInitiator::run(SPRequest& request, bool isHandler) con // Basically we have no way to tell in the Logout receiving handler whether // we initiated the logout or not. - Session* session = NULL; + Session* session = nullptr; try { session = request.getSession(false, true, false); // don't cache it and ignore all checks if (!session) @@ -826,7 +826,7 @@ void ADFSLogoutInitiator::receive(DDF& in, ostream& out) // Find application. const char* aid=in["application_id"].string(); - const Application* app=aid ? SPConfig::getConfig().getServiceProvider()->getApplication(aid) : NULL; + const Application* app=aid ? SPConfig::getConfig().getServiceProvider()->getApplication(aid) : nullptr; if (!app) { // Something's horribly wrong. m_log.error("couldn't find application (%s) for logout", aid ? aid : "(missing)"); @@ -837,13 +837,13 @@ void ADFSLogoutInitiator::receive(DDF& in, ostream& out) auto_ptr req(getRequest(in)); // Set up a response shim. - DDF ret(NULL); + DDF ret(nullptr); DDFJanitor jout(ret); auto_ptr resp(getResponse(ret)); - Session* session = NULL; + Session* session = nullptr; try { - session = app->getServiceProvider().getSessionCache()->find(*app, *req.get(), NULL, NULL); + session = app->getServiceProvider().getSessionCache()->find(*app, *req.get(), nullptr, nullptr); } catch (exception& ex) { m_log.error("error accessing current session: %s", ex.what()); @@ -926,7 +926,7 @@ pair ADFSLogoutInitiator::doRequest( if (session) { session->unlock(); - session = NULL; + session = nullptr; application.getServiceProvider().getSessionCache()->remove(application, httpRequest, &httpResponse); } diff --git a/adfs/adfs.vcxproj b/adfs/adfs.vcxproj new file mode 100644 index 0000000..b99c43d --- /dev/null +++ b/adfs/adfs.vcxproj @@ -0,0 +1,206 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {26D4FABF-ACDE-4947-9C4A-7AE1B50CD83A} + adfs + Win32Proj + + + + DynamicLibrary + MultiByte + true + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + true + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + true + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + false + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + .so + .so + .so + .so + + + + Disabled + .;..;..\..\cpp-opensaml2;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDebugDLL + + + true + Level3 + EditAndContinue + + + _DEBUG;%(PreprocessorDefinitions) + + + log4shib1D.lib;xerces-c_3D.lib;saml2D.lib;xmltooling1D.lib;%(AdditionalDependencies) + ..\..\cpp-opensaml2\$(Configuration);..\..\cpp-xmltooling\$(Configuration);%(AdditionalLibraryDirectories) + true + Windows + + + + + + + X64 + + + Disabled + .;..;..\..\cpp-opensaml2;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDebugDLL + + + true + Level3 + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + + + log4shib1D.lib;xerces-c_3D.lib;saml2D.lib;xmltooling1D.lib;%(AdditionalDependencies) + ..\..\cpp-opensaml2\$(Platform)\$(Configuration);..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) + true + Windows + + + + + + + .;..;..\..\cpp-opensaml2;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + + + Level3 + + + log4shib1.lib;xerces-c_3.lib;saml2.lib;xmltooling1.lib;%(AdditionalDependencies) + ..\..\cpp-opensaml2\$(Configuration);..\..\cpp-xmltooling\$(Configuration);%(AdditionalLibraryDirectories) + Windows + true + true + + + + + + + X64 + + + .;..;..\..\cpp-opensaml2;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + + + Level3 + + + log4shib1.lib;xerces-c_3.lib;saml2.lib;xmltooling1.lib;%(AdditionalDependencies) + ..\..\cpp-opensaml2\$(Platform)\$(Configuration);..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) + true + Windows + true + true + + + + + + + + + + + + + + + + + + + {81f0f7a6-dc36-46ef-957f-f9e81d4403f6} + false + + + + + + \ No newline at end of file diff --git a/apache/Makefile.am b/apache/Makefile.am index 805ebed..0af9efe 100644 --- a/apache/Makefile.am +++ b/apache/Makefile.am @@ -43,5 +43,5 @@ install-exec-hook: endif EXTRA_DIST = mod_apache.cpp mod_shib_13.cpp mod_shib_20.cpp mod_shib_22.cpp \ - mod_shib13.vcproj mod_shib20.vcproj mod_shib22.vcproj \ + mod_shib13.vcxproj mod_shib20.vcxproj mod_shib22.vcxproj \ resource.h mod_shib_13.rc mod_shib_20.rc mod_shib_22.rc diff --git a/apache/mod_apache.cpp b/apache/mod_apache.cpp index efe531e..3f776b1 100644 --- a/apache/mod_apache.cpp +++ b/apache/mod_apache.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,7 +17,7 @@ /** * mod_apache.cpp * - * Apache module implementation + * Apache module implementation. */ #define SHIBSP_LITE @@ -88,10 +88,10 @@ using xercesc::XMLException; extern "C" module MODULE_VAR_EXPORT mod_shib; namespace { - char* g_szSHIBConfig = NULL; - char* g_szSchemaDir = NULL; - char* g_szPrefix = NULL; - SPConfig* g_Config = NULL; + char* g_szSHIBConfig = nullptr; + char* g_szSchemaDir = nullptr; + char* g_szPrefix = nullptr; + SPConfig* g_Config = nullptr; string g_unsetHeaderValue,g_spoofKey; bool g_checkSpoofing = true; bool g_catchAll = false; @@ -120,7 +120,7 @@ struct shib_server_config extern "C" void* create_shib_server_config(SH_AP_POOL* p, server_rec* s) { shib_server_config* sc=(shib_server_config*)ap_pcalloc(p,sizeof(shib_server_config)); - sc->szScheme = NULL; + sc->szScheme = nullptr; return sc; } @@ -136,7 +136,7 @@ extern "C" void* merge_shib_server_config (SH_AP_POOL* p, void* base, void* sub) else if (parent->szScheme) sc->szScheme=ap_pstrdup(p,parent->szScheme); else - sc->szScheme=NULL; + sc->szScheme=nullptr; return sc; } @@ -167,13 +167,13 @@ struct shib_dir_config extern "C" void* create_shib_dir_config (SH_AP_POOL* p, char* d) { shib_dir_config* dc=(shib_dir_config*)ap_pcalloc(p,sizeof(shib_dir_config)); - dc->tSettings = NULL; - dc->szAuthGrpFile = NULL; + dc->tSettings = nullptr; + dc->szAuthGrpFile = nullptr; dc->bRequireAll = -1; dc->bAuthoritative = -1; - dc->szApplicationId = NULL; - dc->szRequireWith = NULL; - dc->szRedirectToSSL = NULL; + dc->szApplicationId = nullptr; + dc->szRequireWith = nullptr; + dc->szRedirectToSSL = nullptr; dc->bOff = -1; dc->bBasicHijack = -1; dc->bRequireSession = -1; @@ -191,7 +191,7 @@ extern "C" void* merge_shib_dir_config (SH_AP_POOL* p, void* base, void* sub) shib_dir_config* child=(shib_dir_config*)sub; // The child supersedes any matching table settings in the parent. - dc->tSettings = NULL; + dc->tSettings = nullptr; if (parent->tSettings) dc->tSettings = ap_copy_table(p, parent->tSettings); if (child->tSettings) { @@ -206,28 +206,28 @@ extern "C" void* merge_shib_dir_config (SH_AP_POOL* p, void* base, void* sub) else if (parent->szAuthGrpFile) dc->szAuthGrpFile=ap_pstrdup(p,parent->szAuthGrpFile); else - dc->szAuthGrpFile=NULL; + dc->szAuthGrpFile=nullptr; if (child->szApplicationId) dc->szApplicationId=ap_pstrdup(p,child->szApplicationId); else if (parent->szApplicationId) dc->szApplicationId=ap_pstrdup(p,parent->szApplicationId); else - dc->szApplicationId=NULL; + dc->szApplicationId=nullptr; if (child->szRequireWith) dc->szRequireWith=ap_pstrdup(p,child->szRequireWith); else if (parent->szRequireWith) dc->szRequireWith=ap_pstrdup(p,parent->szRequireWith); else - dc->szRequireWith=NULL; + dc->szRequireWith=nullptr; if (child->szRedirectToSSL) dc->szRedirectToSSL=ap_pstrdup(p,child->szRedirectToSSL); else if (parent->szRedirectToSSL) dc->szRedirectToSSL=ap_pstrdup(p,parent->szRedirectToSSL); else - dc->szRedirectToSSL=NULL; + dc->szRedirectToSSL=nullptr; dc->bOff=((child->bOff==-1) ? parent->bOff : child->bOff); dc->bBasicHijack=((child->bBasicHijack==-1) ? parent->bBasicHijack : child->bBasicHijack); @@ -263,7 +263,7 @@ static shib_request_config *init_request_config(request_rec *r) extern "C" const char* ap_set_global_string_slot(cmd_parms* parms, void*, const char* arg) { *((char**)(parms->info))=ap_pstrdup(parms->pool,arg); - return NULL; + return nullptr; } extern "C" const char* shib_set_server_string_slot(cmd_parms* parms, void*, const char* arg) @@ -271,7 +271,7 @@ extern "C" const char* shib_set_server_string_slot(cmd_parms* parms, void*, cons char* base=(char*)ap_get_module_config(parms->server->module_config,&mod_shib); size_t offset=(size_t)parms->info; *((char**)(base + offset))=ap_pstrdup(parms->pool,arg); - return NULL; + return nullptr; } extern "C" const char* shib_ap_set_file_slot(cmd_parms* parms, @@ -291,7 +291,7 @@ extern "C" const char* shib_table_set(cmd_parms* parms, shib_dir_config* dc, con if (!dc->tSettings) dc->tSettings = ap_make_table(parms->pool, 4); ap_table_set(dc->tSettings, arg1, arg2); - return NULL; + return nullptr; } /********************************************************************************/ @@ -492,13 +492,13 @@ public: if (m_rc && m_rc->env) hdr = ap_table_get(m_rc->env, name); else - hdr = NULL; + hdr = nullptr; return string(hdr ? hdr : ""); } return getHeader(name); } void setRemoteUser(const char* user) { - SH_AP_USER(m_req) = user ? ap_pstrdup(m_req->pool, user) : NULL; + SH_AP_USER(m_req) = user ? ap_pstrdup(m_req->pool, user) : nullptr; if (m_dc->bUseHeaders == 1) { if (user) { ap_table_set(m_req->headers_in, "REMOTE_USER", user); @@ -515,7 +515,7 @@ public: void setAuthType(const char* authtype) { if (authtype && m_dc->bBasicHijack == 1) authtype = "Basic"; - SH_AP_AUTH_TYPE(m_req) = authtype ? ap_pstrdup(m_req->pool, authtype) : NULL; + SH_AP_AUTH_TYPE(m_req) = authtype ? ap_pstrdup(m_req->pool, authtype) : nullptr; } string getAuthType() const { return string(SH_AP_AUTH_TYPE(m_req) ? SH_AP_AUTH_TYPE(m_req) : ""); @@ -596,7 +596,7 @@ extern "C" int shib_check_user(request_rec* r) // Check user authentication and export information, then set the handler bypass pair res = sta.getServiceProvider().doAuthentication(sta,true); - apr_pool_userdata_setn((const void*)42,g_UserDataKey,NULL,r->pool); + apr_pool_userdata_setn((const void*)42,g_UserDataKey,nullptr,r->pool); // If directed, install a spoof key to recognize when we've already cleared headers. if (!g_spoofKey.empty() && (((shib_dir_config*)ap_get_module_config(r->per_dir_config, &mod_shib))->bUseHeaders==1)) ap_table_set(r->headers_in, "Shib-Spoof-Check", g_spoofKey.c_str()); @@ -728,16 +728,16 @@ public: ApacheRequestMapper(const xercesc::DOMElement* e); ~ApacheRequestMapper() { delete m_mapper; delete m_htaccess; delete m_staKey; delete m_propsKey; } Lockable* lock() { return m_mapper->lock(); } - void unlock() { m_staKey->setData(NULL); m_propsKey->setData(NULL); m_mapper->unlock(); } + void unlock() { m_staKey->setData(nullptr); m_propsKey->setData(nullptr); m_mapper->unlock(); } Settings getSettings(const HTTPRequest& request) const; - const PropertySet* getParent() const { return NULL; } + const PropertySet* getParent() const { return nullptr; } void setParent(const PropertySet*) {} - pair getBool(const char* name, const char* ns=NULL) const; - pair getString(const char* name, const char* ns=NULL) const; - pair getXMLString(const char* name, const char* ns=NULL) const; - pair getUnsignedInt(const char* name, const char* ns=NULL) const; - pair getInt(const char* name, const char* ns=NULL) const; + pair getBool(const char* name, const char* ns=nullptr) const; + pair getString(const char* name, const char* ns=nullptr) const; + pair getXMLString(const char* name, const char* ns=nullptr) const; + pair getUnsignedInt(const char* name, const char* ns=nullptr) const; + pair getInt(const char* name, const char* ns=nullptr) const; void getAll(map& properties) const; const PropertySet* getPropertySet(const char* name, const char* ns=shibspconstants::ASCII_SHIB2SPCONFIG_NS) const; const xercesc::DOMElement* getElement() const; @@ -754,12 +754,12 @@ RequestMapper* ApacheRequestMapFactory(const xercesc::DOMElement* const & e) return new ApacheRequestMapper(e); } -ApacheRequestMapper::ApacheRequestMapper(const xercesc::DOMElement* e) : m_mapper(NULL), m_staKey(NULL), m_propsKey(NULL), m_htaccess(NULL) +ApacheRequestMapper::ApacheRequestMapper(const xercesc::DOMElement* e) : m_mapper(nullptr), m_staKey(nullptr), m_propsKey(nullptr), m_htaccess(nullptr) { m_mapper=SPConfig::getConfig().RequestMapperManager.newPlugin(XML_REQUEST_MAPPER,e); m_htaccess=new htAccessControl(); - m_staKey=ThreadKey::create(NULL); - m_propsKey=ThreadKey::create(NULL); + m_staKey=ThreadKey::create(nullptr); + m_propsKey=ThreadKey::create(nullptr); } RequestMapper::Settings ApacheRequestMapper::getSettings(const HTTPRequest& request) const @@ -816,13 +816,13 @@ pair ApacheRequestMapper::getString(const char* name, const ch return make_pair(true, prop); } } - return s ? s->getString(name,ns) : pair(false,NULL); + return s ? s->getString(name,ns) : pair(false,nullptr); } pair ApacheRequestMapper::getXMLString(const char* name, const char* ns) const { const PropertySet* s=reinterpret_cast(m_propsKey->getData()); - return s ? s->getXMLString(name,ns) : pair(false,NULL); + return s ? s->getXMLString(name,ns) : pair(false,nullptr); } pair ApacheRequestMapper::getUnsignedInt(const char* name, const char* ns) const @@ -832,7 +832,7 @@ pair ApacheRequestMapper::getUnsignedInt(const char* name, co if (sta && !ns) { // Override Apache-settable int properties. if (name && !strcmp(name,"redirectToSSL") && sta->m_dc->szRedirectToSSL) - return pair(true, strtol(sta->m_dc->szRedirectToSSL, NULL, 10)); + return pair(true, strtol(sta->m_dc->szRedirectToSSL, nullptr, 10)); else if (sta->m_dc->tSettings) { const char* prop = ap_table_get(sta->m_dc->tSettings, name); if (prop) @@ -892,13 +892,13 @@ void ApacheRequestMapper::getAll(map& properties) const const PropertySet* ApacheRequestMapper::getPropertySet(const char* name, const char* ns) const { const PropertySet* s=reinterpret_cast(m_propsKey->getData()); - return s ? s->getPropertySet(name,ns) : NULL; + return s ? s->getPropertySet(name,ns) : nullptr; } const xercesc::DOMElement* ApacheRequestMapper::getElement() const { const PropertySet* s=reinterpret_cast(m_propsKey->getData()); - return s ? s->getElement() : NULL; + return s ? s->getElement() : nullptr; } static SH_AP_TABLE* groups_for_user(request_rec* r, const char* user, char* grpfile) @@ -914,7 +914,7 @@ static SH_AP_TABLE* groups_for_user(request_rec* r, const char* user, char* grpf if (ap_pcfg_openfile(&f,r->pool,grpfile) != APR_SUCCESS) { #endif ap_log_rerror(APLOG_MARK,APLOG_DEBUG,SH_AP_R(r),"groups_for_user() could not open group file: %s\n",grpfile); - return NULL; + return nullptr; } SH_AP_POOL* sp; @@ -924,7 +924,7 @@ static SH_AP_TABLE* groups_for_user(request_rec* r, const char* user, char* grpf if (apr_pool_create(&sp,r->pool) != APR_SUCCESS) { ap_log_rerror(APLOG_MARK,APLOG_ERR,0,r, "groups_for_user() could not create a subpool"); - return NULL; + return nullptr; } #endif @@ -1064,7 +1064,7 @@ AccessControl::aclresult_t htAccessControl::authorized(const SPRequest& request, } } else if (!strcmp(w,"group") && !remote_user.empty()) { - SH_AP_TABLE* grpstatus=NULL; + SH_AP_TABLE* grpstatus=nullptr; if (sta->m_dc->szAuthGrpFile) { if (request.isPriorityEnabled(SPRequest::SPDebug)) request.log(SPRequest::SPDebug,string("htaccess plugin using groups file: ") + sta->m_dc->szAuthGrpFile); @@ -1158,7 +1158,7 @@ AccessControl::aclresult_t htAccessControl::authorized(const SPRequest& request, pair::const_iterator,multimap::const_iterator> attrs2(attrs); for (; !status && attrs2.first!=attrs2.second; ++attrs2.first) { - if (checkAttribute(request, attrs2.first->second, w, regexp ? re.get() : NULL)) { + if (checkAttribute(request, attrs2.first->second, w, regexp ? re.get() : nullptr)) { status = true; } } @@ -1235,7 +1235,7 @@ extern "C" int shib_fixups(request_rec* r) ap_log_rerror(APLOG_MARK,APLOG_DEBUG|APLOG_NOERRNO,SH_AP_R(r), "shib_fixup(%d): ENTER", (int)getpid()); - if (rc==NULL || rc->env==NULL || ap_is_empty_table(rc->env)) + if (rc==nullptr || rc->env==nullptr || ap_is_empty_table(rc->env)) return DECLINED; ap_log_rerror(APLOG_MARK,APLOG_DEBUG|APLOG_NOERRNO,SH_AP_R(r), "shib_fixup adding %d vars", ap_table_elts(rc->env)->nelts); @@ -1254,7 +1254,7 @@ extern "C" void shib_child_exit(server_rec* s, SH_AP_POOL* p) if (g_Config) { ap_log_error(APLOG_MARK,APLOG_DEBUG|APLOG_NOERRNO,SH_AP_R(s),"shib_child_exit(%d) dealing with g_Config..", (int)getpid()); g_Config->term(); - g_Config = NULL; + g_Config = nullptr; ap_log_error(APLOG_MARK,APLOG_DEBUG|APLOG_NOERRNO,SH_AP_R(s),"shib_child_exit() done"); } } @@ -1267,9 +1267,9 @@ extern "C" apr_status_t shib_exit(void* data) { if (g_Config) { g_Config->term(); - g_Config = NULL; + g_Config = nullptr; } - ap_log_error(APLOG_MARK,APLOG_DEBUG|APLOG_NOERRNO,0,NULL,"shib_exit() done"); + ap_log_error(APLOG_MARK,APLOG_DEBUG|APLOG_NOERRNO,0,nullptr,"shib_exit() done"); return OK; } #endif @@ -1339,7 +1339,7 @@ extern "C" void shib_child_init(apr_pool_t* p, server_rec* s) } // Set the cleanup handler - apr_pool_cleanup_register(p, NULL, &shib_exit, apr_pool_cleanup_null); + apr_pool_cleanup_register(p, nullptr, &shib_exit, apr_pool_cleanup_null); ap_log_error(APLOG_MARK,APLOG_DEBUG|APLOG_NOERRNO,SH_AP_R(s),"shib_child_init() done"); } @@ -1348,12 +1348,12 @@ extern "C" void shib_child_init(apr_pool_t* p, server_rec* s) #ifdef SHIB_DEFERRED_HEADERS static void set_output_filter(request_rec *r) { - ap_add_output_filter("SHIB_HEADERS_OUT", NULL, r, r->connection); + ap_add_output_filter("SHIB_HEADERS_OUT", nullptr, r, r->connection); } static void set_error_filter(request_rec *r) { - ap_add_output_filter("SHIB_HEADERS_ERR", NULL, r, r->connection); + ap_add_output_filter("SHIB_HEADERS_ERR", nullptr, r, r->connection); } static int _table_add(void *v, const char *key, const char *value) @@ -1371,7 +1371,7 @@ static apr_status_t do_output_filter(ap_filter_t *f, apr_bucket_brigade *in) ap_log_rerror(APLOG_MARK,APLOG_DEBUG|APLOG_NOERRNO,SH_AP_R(r),"shib_out_filter: merging %d headers", apr_table_elts(rc->hdr_out)->nelts); // can't use overlap call because it will collapse Set-Cookie headers //apr_table_overlap(r->headers_out, rc->hdr_out, APR_OVERLAP_TABLES_MERGE); - apr_table_do(_table_add,r->headers_out, rc->hdr_out,NULL); + apr_table_do(_table_add,r->headers_out, rc->hdr_out,nullptr); } /* remove ourselves from the filter chain */ @@ -1390,7 +1390,7 @@ static apr_status_t do_error_filter(ap_filter_t *f, apr_bucket_brigade *in) ap_log_rerror(APLOG_MARK,APLOG_DEBUG|APLOG_NOERRNO,SH_AP_R(r),"shib_err_filter: merging %d headers", apr_table_elts(rc->hdr_out)->nelts); // can't use overlap call because it will collapse Set-Cookie headers //apr_table_overlap(r->err_headers_out, rc->hdr_out, APR_OVERLAP_TABLES_MERGE); - apr_table_do(_table_add,r->err_headers_out, rc->hdr_out,NULL); + apr_table_do(_table_add,r->err_headers_out, rc->hdr_out,nullptr); } /* remove ourselves from the filter chain */ @@ -1419,7 +1419,7 @@ static command_rec shire_cmds[] = { (void *) XtOffsetOf (shib_server_config, szScheme), RSRC_CONF, TAKE1, "URL scheme to force into generated URLs for a vhost"}, - {"ShibRequestSetting", (config_fn_t)shib_table_set, NULL, + {"ShibRequestSetting", (config_fn_t)shib_table_set, nullptr, OR_AUTHCFG, TAKE2, "Set arbitrary Shibboleth request property for content"}, {"ShibDisable", (config_fn_t)ap_set_flag_slot, @@ -1459,32 +1459,32 @@ static command_rec shire_cmds[] = { (void *) XtOffsetOf (shib_dir_config, bUseHeaders), OR_AUTHCFG, FLAG, "Export attributes using custom HTTP headers"}, - {NULL} + {nullptr} }; extern "C"{ handler_rec shib_handlers[] = { { "shib-handler", shib_handler }, - { NULL } + { nullptr } }; module MODULE_VAR_EXPORT mod_shib = { STANDARD_MODULE_STUFF, - NULL, /* initializer */ + nullptr, /* initializer */ create_shib_dir_config, /* dir config creater */ merge_shib_dir_config, /* dir merger --- default is to override */ create_shib_server_config, /* server config */ merge_shib_server_config, /* merge server config */ shire_cmds, /* command table */ shib_handlers, /* handlers */ - NULL, /* filename translation */ + nullptr, /* filename translation */ shib_check_user, /* check_user_id */ shib_auth_checker, /* check auth */ - NULL, /* check access */ - NULL, /* type_checker */ + nullptr, /* check access */ + nullptr, /* type_checker */ shib_fixups, /* fixups */ - NULL, /* logger */ - NULL, /* header parser */ + nullptr, /* logger */ + nullptr, /* header parser */ shib_child_init, /* child_init */ shib_child_exit, /* child_exit */ shib_post_read /* post read-request */ @@ -1495,17 +1495,17 @@ module MODULE_VAR_EXPORT mod_shib = { extern "C" void shib_register_hooks (apr_pool_t *p) { #ifdef SHIB_DEFERRED_HEADERS - ap_register_output_filter("SHIB_HEADERS_OUT", do_output_filter, NULL, AP_FTYPE_CONTENT_SET); - ap_hook_insert_filter(set_output_filter, NULL, NULL, APR_HOOK_LAST); - ap_register_output_filter("SHIB_HEADERS_ERR", do_error_filter, NULL, AP_FTYPE_CONTENT_SET); - ap_hook_insert_error_filter(set_error_filter, NULL, NULL, APR_HOOK_LAST); - ap_hook_post_read_request(shib_post_read, NULL, NULL, APR_HOOK_MIDDLE); + ap_register_output_filter("SHIB_HEADERS_OUT", do_output_filter, nullptr, AP_FTYPE_CONTENT_SET); + ap_hook_insert_filter(set_output_filter, nullptr, nullptr, APR_HOOK_LAST); + ap_register_output_filter("SHIB_HEADERS_ERR", do_error_filter, nullptr, AP_FTYPE_CONTENT_SET); + ap_hook_insert_error_filter(set_error_filter, nullptr, nullptr, APR_HOOK_LAST); + ap_hook_post_read_request(shib_post_read, nullptr, nullptr, APR_HOOK_MIDDLE); #endif - ap_hook_child_init(shib_child_init, NULL, NULL, APR_HOOK_MIDDLE); - ap_hook_check_user_id(shib_check_user, NULL, NULL, APR_HOOK_MIDDLE); - ap_hook_auth_checker(shib_auth_checker, NULL, NULL, APR_HOOK_FIRST); - ap_hook_handler(shib_handler, NULL, NULL, APR_HOOK_LAST); - ap_hook_fixups(shib_fixups, NULL, NULL, APR_HOOK_MIDDLE); + ap_hook_child_init(shib_child_init, nullptr, nullptr, APR_HOOK_MIDDLE); + ap_hook_check_user_id(shib_check_user, nullptr, nullptr, APR_HOOK_MIDDLE); + ap_hook_auth_checker(shib_auth_checker, nullptr, nullptr, APR_HOOK_FIRST); + ap_hook_handler(shib_handler, nullptr, nullptr, APR_HOOK_LAST); + ap_hook_fixups(shib_fixups, nullptr, nullptr, APR_HOOK_MIDDLE); } // SHIB Module commands @@ -1523,7 +1523,7 @@ static command_rec shib_cmds[] = { (void *) offsetof (shib_server_config, szScheme), RSRC_CONF, "URL scheme to force into generated URLs for a vhost"), - AP_INIT_TAKE2("ShibRequestSetting", (config_fn_t)shib_table_set, NULL, + AP_INIT_TAKE2("ShibRequestSetting", (config_fn_t)shib_table_set, nullptr, OR_AUTHCFG, "Set arbitrary Shibboleth request property for content"), AP_INIT_FLAG("ShibDisable", (config_fn_t)ap_set_flag_slot, @@ -1563,7 +1563,7 @@ static command_rec shib_cmds[] = { (void *) offsetof (shib_dir_config, bUseHeaders), OR_AUTHCFG, "Export attributes using custom HTTP headers"), - {NULL} + {nullptr} }; module AP_MODULE_DECLARE_DATA mod_shib = { diff --git a/apache/mod_shib13.vcxproj b/apache/mod_shib13.vcxproj new file mode 100644 index 0000000..8fb71a1 --- /dev/null +++ b/apache/mod_shib13.vcxproj @@ -0,0 +1,251 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {D243B43E-728E-4F32-BDFF-B3A897037C6D} + mod_shib_13 + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + true + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + true + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + false + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + true + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + .so + .so + .so + .so + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Release/mod_shib13.tlb + + + + + MaxSpeed + OnlyExplicitInline + ..;\Apache\include;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;EAPI;%(PreprocessorDefinitions) + true + true + Level3 + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + xerces-c_3.lib;ApacheCore.lib;xmltooling-lite1.lib;%(AdditionalDependencies) + ..\..\cpp-xmltooling\$(Configuration);\Apache\libexec;%(AdditionalLibraryDirectories) + + + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Release/mod_shib13.tlb + + + + + MaxSpeed + OnlyExplicitInline + ..;\Apache\include;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;EAPI;%(PreprocessorDefinitions) + true + true + Level3 + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + xerces-c_3.lib;ApacheCore.lib;xmltooling-lite1.lib;%(AdditionalDependencies) + ..\..\cpp-xmltooling\$(Platform)\$(Configuration);\Apache\libexec;%(AdditionalLibraryDirectories) + .\Release/mod_shib_13.pdb + + + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Debug/mod_shib13.tlb + + + + + Disabled + ..;\Apache\include;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + _WINDOWS;EAPI;WIN32;_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + true + Level3 + EditAndContinue + Default + true + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + xerces-c_3D.lib;ApacheCore.lib;xmltooling-lite1D.lib;%(AdditionalDependencies) + ..\..\cpp-xmltooling\$(Configuration);\Apache\libexec;%(AdditionalLibraryDirectories) + true + + + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Debug/mod_shib13.tlb + + + + + Disabled + ..;\Apache\include;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + _WINDOWS;EAPI;WIN32;_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + true + Level3 + ProgramDatabase + Default + true + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + xerces-c_3D.lib;ApacheCore.lib;xmltooling-lite1D.lib;%(AdditionalDependencies) + ..\..\cpp-xmltooling\$(Platform)\$(Configuration);\Apache\libexec;%(AdditionalLibraryDirectories) + true + + + + + + + + + + true + true + true + true + + + + + + + + + + + + {81f0f7a6-dc36-46ef-957f-f9e81d4403f7} + false + + + + + + \ No newline at end of file diff --git a/apache/mod_shib20.vcxproj b/apache/mod_shib20.vcxproj new file mode 100644 index 0000000..b7a3d94 --- /dev/null +++ b/apache/mod_shib20.vcxproj @@ -0,0 +1,255 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {68E9568B-476C-4289-B93C-893432378ADC} + mod_shib_20 + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + true + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + true + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)\ + $(ProjectName)-$(Configuration)\ + false + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(ProjectName)-$(Configuration)\ + false + $(SolutionDir)$(Configuration)\ + $(ProjectName)-$(Configuration)\ + true + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(ProjectName)-$(Configuration)\ + true + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + .so + .so + .so + .so + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\mod_shib20___Win32_Release/mod_shib20.tlb + + + + + MaxSpeed + OnlyExplicitInline + ..;\Apache2.0.63\Apache2\include;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + true + true + Level3 + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + xerces-c_3.lib;libapr.lib;libaprutil.lib;libhttpd.lib;xmltooling-lite1.lib;%(AdditionalDependencies) + ..\..\cpp-xmltooling\$(Configuration);\Apache2.0.63\Apache2\lib;%(AdditionalLibraryDirectories) + + + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\mod_shib20___Win32_Release/mod_shib20.tlb + + + + + MaxSpeed + OnlyExplicitInline + ..;\Apache2.0.63\Apache2\include;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + true + true + Level3 + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + xerces-c_3.lib;libapr.lib;libaprutil.lib;libhttpd.lib;xmltooling-lite1.lib;%(AdditionalDependencies) + ..\..\cpp-xmltooling\$(Platform)\$(Configuration);\Apache2.0.63\Apache2\lib;%(AdditionalLibraryDirectories) + .\mod_shib20___Win32_Release/mod_shib_20.pdb + + + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\mod_shib20___Win32_Debug/mod_shib20.tlb + + + + + Disabled + ..;\Apache2.0.63\Apache2\include;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + _WINDOWS;WIN32;_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + true + true + Level3 + EditAndContinue + Default + true + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + xerces-c_3D.lib;libapr.lib;libaprutil.lib;libhttpd.lib;xmltooling-lite1D.lib;%(AdditionalDependencies) + ..\..\cpp-xmltooling\$(Configuration);\Apache2.0.63\Apache2\lib;%(AdditionalLibraryDirectories) + true + + + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\mod_shib20___Win32_Debug/mod_shib20.tlb + + + + + Disabled + ..;\Apache2.0.63\Apache2\include;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + _WINDOWS;WIN32;_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + true + true + Level3 + ProgramDatabase + Default + true + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + xerces-c_3D.lib;libapr.lib;libaprutil.lib;libhttpd.lib;xmltooling-lite1D.lib;%(AdditionalDependencies) + ..\..\cpp-xmltooling\$(Platform)\$(Configuration);\Apache2.0.63\Apache2\lib;%(AdditionalLibraryDirectories) + true + + + + + + + + + + true + true + true + true + + + + + + + + + + + + {81f0f7a6-dc36-46ef-957f-f9e81d4403f7} + false + + + + + + \ No newline at end of file diff --git a/apache/mod_shib22.vcxproj b/apache/mod_shib22.vcxproj new file mode 100644 index 0000000..9e2f803 --- /dev/null +++ b/apache/mod_shib22.vcxproj @@ -0,0 +1,262 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {B44C0852-83B8-4FB2-A86E-097C9C8256D0} + mod_shib_22 + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + true + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + true + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)\ + $(ProjectName)-$(Configuration)\ + false + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(ProjectName)-$(Configuration)\ + false + $(SolutionDir)$(Configuration)\ + $(ProjectName)-$(Configuration)\ + true + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(ProjectName)-$(Configuration)\ + true + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + .so + .so + .so + .so + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\mod_shib22___Win32_Release/mod_shib22.tlb + + + + + MaxSpeed + OnlyExplicitInline + ..;\Apache2.2.14\include;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_WINDOWS;%(PreprocessorDefinitions) + true + true + true + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + xerces-c_3.lib;xmltooling-lite1.lib;libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) + ..\..\cpp-xmltooling\$(Configuration);\Apache2.2.14\lib;%(AdditionalLibraryDirectories) + + + + + true + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\mod_shib22___Win32_Release/mod_shib22.tlb + + + + + MaxSpeed + OnlyExplicitInline + ..;\httpd-2.2-x64\include;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_WINDOWS;%(PreprocessorDefinitions) + true + true + true + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + xerces-c_3.lib;xmltooling-lite1.lib;libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) + ..\..\cpp-xmltooling\$(Platform)\$(Configuration);C:\httpd-2.2-x64\lib;%(AdditionalLibraryDirectories) + + + + + true + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\mod_shib22___Win32_Debug/mod_shib22.tlb + + + + + Disabled + ..;\Apache2.2.14\include;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDebugDLL + true + true + Level3 + EditAndContinue + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + xerces-c_3D.lib;xmltooling-lite1D.lib;libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) + ..\..\cpp-xmltooling\$(Configuration);\Apache2.2.14\lib;%(AdditionalLibraryDirectories) + true + + + + + true + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\mod_shib22___Win32_Debug/mod_shib22.tlb + + + + + Disabled + ..;\httpd-2.2-x64\include;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDebugDLL + true + true + Level3 + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + xerces-c_3D.lib;xmltooling-lite1D.lib;libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) + ..\..\cpp-xmltooling\$(Platform)\$(Configuration);C:\httpd-2.2-x64\lib;%(AdditionalLibraryDirectories) + true + + + + + true + + + + + + + + true + true + true + true + + + + + + + + + + + + {81f0f7a6-dc36-46ef-957f-f9e81d4403f7} + false + + + + + + \ No newline at end of file diff --git a/fastcgi/Makefile.am b/fastcgi/Makefile.am index 1c4ba8c..232c0b7 100644 --- a/fastcgi/Makefile.am +++ b/fastcgi/Makefile.am @@ -22,9 +22,9 @@ endif EXTRA_DIST = \ shibauthorizer.cpp \ - shibauthorizer.vcproj \ + shibauthorizer.vcxproj \ shibauthorizer.rc \ shibresponder.cpp \ - shibresponder.vcproj \ + shibresponder.vcxproj \ shibresponder.rc \ resource.h diff --git a/fastcgi/shibauthorizer.cpp b/fastcgi/shibauthorizer.cpp index b7babb5..10355f6 100644 --- a/fastcgi/shibauthorizer.cpp +++ b/fastcgi/shibauthorizer.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -67,7 +67,7 @@ class ShibTargetFCGIAuth : public AbstractSPRequest public: map m_request_headers; - ShibTargetFCGIAuth(FCGX_Request* req, const char* scheme=NULL, const char* hostname=NULL, int port=0) + ShibTargetFCGIAuth(FCGX_Request* req, const char* scheme=nullptr, const char* hostname=nullptr, int port=0) : AbstractSPRequest(SHIBSP_LOGCAT".FastCGI"), m_req(req) { const char* server_name_str = hostname; if (!server_name_str || !*server_name_str) @@ -289,7 +289,7 @@ int main(void) } try { - if (!g_Config->instantiate(NULL, true)) + if (!g_Config->instantiate(nullptr, true)) throw runtime_error("unknown error"); } catch (exception& ex) { diff --git a/fastcgi/shibauthorizer.vcxproj b/fastcgi/shibauthorizer.vcxproj new file mode 100644 index 0000000..d6b0e1a --- /dev/null +++ b/fastcgi/shibauthorizer.vcxproj @@ -0,0 +1,236 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {8CF7DDFA-EAA0-416E-853E-3DCB210C4AE0} + + + + Application + MultiByte + + + Application + MultiByte + true + + + Application + MultiByte + + + Application + MultiByte + true + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)\ + $(ProjectName)-$(Configuration)\ + false + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(ProjectName)-$(Configuration)\ + false + $(SolutionDir)$(Configuration)\ + $(ProjectName)-$(Configuration)\ + true + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(ProjectName)-$(Configuration)\ + true + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + .\shibauthorizer___Win32_Release/shibauthorizer.tlb + + + + + MaxSpeed + OnlyExplicitInline + .;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + xerces-c_3.lib;xmltooling1.lib;libfcgi.lib;%(AdditionalDependencies) + ..\..\cpp-xmltooling\$(Configuration);\fcgi-2.4.0-VC9\Win32\$(Configuration);%(AdditionalLibraryDirectories) + Console + + + + + + + X64 + .\shibauthorizer___Win32_Release/shibauthorizer.tlb + + + + + MaxSpeed + OnlyExplicitInline + .;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + xerces-c_3.lib;xmltooling1.lib;libfcgi.lib;%(AdditionalDependencies) + ..\..\cpp-xmltooling\$(Platform)\$(Configuration);\fcgi-2.4.0-VC9\Win32\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) + .\shibauthorizer___Win32_Release/shibauthorizer.pdb + Console + + + + + + + .\shibauthorizer___Win32_Debug/shibauthorizer.tlb + + + + + Disabled + .;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + Level3 + EditAndContinue + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + xerces-c_3D.lib;xmltooling1D.lib;libfcgi.lib;%(AdditionalDependencies) + ..\..\cpp-xmltooling\$(Configuration);\fcgi-2.4.0-VC9\Win32\$(Configuration);%(AdditionalLibraryDirectories) + true + Console + + + + + + + X64 + .\shibauthorizer___Win32_Debug/shibauthorizer.tlb + + + + + Disabled + .;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + Level3 + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + xerces-c_3D.lib;xmltooling1D.lib;libfcgi.lib;%(AdditionalDependencies) + ..\..\cpp-xmltooling\$(Platform)\$(Configuration);\fcgi-2.4.0-VC9\Win32\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) + true + Console + + + + + + + + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + + + + + + {81f0f7a6-dc36-46ef-957f-f9e81d4403f7} + false + + + + + + \ No newline at end of file diff --git a/fastcgi/shibresponder.cpp b/fastcgi/shibresponder.cpp index c99d945..0ce5744 100644 --- a/fastcgi/shibresponder.cpp +++ b/fastcgi/shibresponder.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -67,7 +67,7 @@ class ShibTargetFCGI : public AbstractSPRequest string m_scheme,m_hostname; public: - ShibTargetFCGI(FCGX_Request* req, char* post_data, const char* scheme=NULL, const char* hostname=NULL, int port=0) + ShibTargetFCGI(FCGX_Request* req, char* post_data, const char* scheme=nullptr, const char* hostname=nullptr, int port=0) : AbstractSPRequest(SHIBSP_LOGCAT".FastCGI"), m_req(req), m_body(post_data) { const char* server_name_str = hostname; @@ -289,7 +289,7 @@ int main(void) } try { - if (!g_Config->instantiate(NULL, true)) + if (!g_Config->instantiate(nullptr, true)) throw runtime_error("unknown error"); } catch (exception& ex) { diff --git a/fastcgi/shibresponder.vcxproj b/fastcgi/shibresponder.vcxproj new file mode 100644 index 0000000..0768e86 --- /dev/null +++ b/fastcgi/shibresponder.vcxproj @@ -0,0 +1,237 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {B2423DCE-048D-4BAA-9AB9-F5D1FCDD3D25} + shibresponder + + + + Application + MultiByte + + + Application + MultiByte + true + + + Application + MultiByte + + + Application + MultiByte + true + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)\ + $(ProjectName)-$(Configuration)\ + false + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(ProjectName)-$(Configuration)\ + false + $(SolutionDir)$(Configuration)\ + $(ProjectName)-$(Configuration)\ + true + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(ProjectName)-$(Configuration)\ + true + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + .\shibresponder___Win32_Release/shibresponder.tlb + + + + + MaxSpeed + OnlyExplicitInline + .;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + xerces-c_3.lib;xmltooling1.lib;libfcgi.lib;%(AdditionalDependencies) + ..\..\cpp-xmltooling\$(Configuration);\fcgi-2.4.0-VC9\Win32\$(Configuration);%(AdditionalLibraryDirectories) + Console + + + + + + + X64 + .\shibresponder___Win32_Release/shibresponder.tlb + + + + + MaxSpeed + OnlyExplicitInline + .;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + xerces-c_3.lib;xmltooling1.lib;libfcgi.lib;%(AdditionalDependencies) + ..\..\cpp-xmltooling\$(Platform)\$(Configuration);\fcgi-2.4.0-VC9\Win32\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) + .\shibresponder___Win32_Release/shibresponder.pdb + Console + + + + + + + .\shibresponder___Win32_Debug/shibresponder.tlb + + + + + Disabled + .;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + Level3 + EditAndContinue + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + xerces-c_3D.lib;xmltooling1D.lib;libfcgi.lib;%(AdditionalDependencies) + ..\..\cpp-xmltooling\$(Configuration);\fcgi-2.4.0-VC9\Win32\$(Configuration);%(AdditionalLibraryDirectories) + true + Console + + + + + + + X64 + .\shibresponder___Win32_Debug/shibresponder.tlb + + + + + Disabled + .;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + Level3 + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + xerces-c_3D.lib;xmltooling1D.lib;libfcgi.lib;%(AdditionalDependencies) + ..\..\cpp-xmltooling\$(Platform)\$(Configuration);\fcgi-2.4.0-VC9\Win32\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) + true + Console + + + + + + + + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + + + + + + {81f0f7a6-dc36-46ef-957f-f9e81d4403f7} + false + + + + + + \ No newline at end of file diff --git a/isapi_shib/isapi_shib.cpp b/isapi_shib/isapi_shib.cpp index 95948af..58bc86b 100644 --- a/isapi_shib/isapi_shib.cpp +++ b/isapi_shib/isapi_shib.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,7 +17,7 @@ /** * isapi_shib.cpp * - * Shibboleth ISAPI filter + * Shibboleth ISAPI filter. */ #define SHIBSP_LITE @@ -69,10 +69,10 @@ namespace { struct site_t { site_t(const DOMElement* e) { - auto_ptr_char n(e->getAttributeNS(NULL,name)); - auto_ptr_char s(e->getAttributeNS(NULL,scheme)); - auto_ptr_char p(e->getAttributeNS(NULL,port)); - auto_ptr_char p2(e->getAttributeNS(NULL,sslport)); + auto_ptr_char n(e->getAttributeNS(nullptr,name)); + auto_ptr_char s(e->getAttributeNS(nullptr,scheme)); + auto_ptr_char p(e->getAttributeNS(nullptr,port)); + auto_ptr_char p2(e->getAttributeNS(nullptr,sslport)); if (n.get()) m_name=n.get(); if (s.get()) m_scheme=s.get(); if (p.get()) m_port=p.get(); @@ -91,7 +91,7 @@ namespace { }; HINSTANCE g_hinstDLL; - SPConfig* g_Config = NULL; + SPConfig* g_Config = nullptr; map g_Sites; bool g_bNormalizeRequest = true; string g_unsetHeaderValue,g_spoofKey; @@ -108,10 +108,10 @@ BOOL LogEvent( PSID lpUserSid, LPCSTR message) { - LPCSTR messages[] = {message, NULL}; + LPCSTR messages[] = {message, nullptr}; HANDLE hElog = RegisterEventSource(lpUNCServerName, "Shibboleth ISAPI Filter"); - BOOL res = ReportEvent(hElog, wType, 0, dwEventID, lpUserSid, 1, 0, messages, NULL); + BOOL res = ReportEvent(hElog, wType, 0, dwEventID, lpUserSid, 1, 0, messages, nullptr); return (DeregisterEventSource(hElog) && res); } @@ -139,7 +139,7 @@ extern "C" BOOL WINAPI GetExtensionVersion(HSE_VERSION_INFO* pVer) return FALSE; if (!g_Config) { - LogEvent(NULL, EVENTLOG_ERROR_TYPE, 2100, NULL, + LogEvent(nullptr, EVENTLOG_ERROR_TYPE, 2100, nullptr, "Extension mode startup not possible, is the DLL loaded as a filter?"); return FALSE; } @@ -159,7 +159,7 @@ extern "C" BOOL WINAPI GetFilterVersion(PHTTP_FILTER_VERSION pVer) if (!pVer) return FALSE; else if (g_Config) { - LogEvent(NULL, EVENTLOG_ERROR_TYPE, 2100, NULL, + LogEvent(nullptr, EVENTLOG_ERROR_TYPE, 2100, nullptr, "Reentrant filter initialization, ignoring..."); return TRUE; } @@ -174,21 +174,21 @@ extern "C" BOOL WINAPI GetFilterVersion(PHTTP_FILTER_VERSION pVer) SPConfig::Handlers ); if (!g_Config->init()) { - g_Config=NULL; - LogEvent(NULL, EVENTLOG_ERROR_TYPE, 2100, NULL, + g_Config=nullptr; + LogEvent(nullptr, EVENTLOG_ERROR_TYPE, 2100, nullptr, "Filter startup failed during library initialization, check native log for help."); return FALSE; } try { - if (!g_Config->instantiate(NULL, true)) + if (!g_Config->instantiate(nullptr, true)) throw runtime_error("unknown error"); } catch (exception& ex) { g_Config->term(); - g_Config=NULL; - LogEvent(NULL, EVENTLOG_ERROR_TYPE, 2100, NULL, ex.what()); - LogEvent(NULL, EVENTLOG_ERROR_TYPE, 2100, NULL, + g_Config=nullptr; + LogEvent(nullptr, EVENTLOG_ERROR_TYPE, 2100, nullptr, ex.what()); + LogEvent(nullptr, EVENTLOG_ERROR_TYPE, 2100, nullptr, "Filter startup failed to load configuration, check native log for details."); return FALSE; } @@ -221,11 +221,11 @@ extern "C" BOOL WINAPI GetFilterVersion(PHTTP_FILTER_VERSION pVer) } else { _set_invalid_parameter_handler(old); - LogEvent(NULL, EVENTLOG_ERROR_TYPE, 2100, NULL, + LogEvent(nullptr, EVENTLOG_ERROR_TYPE, 2100, nullptr, "Filter failed to generate a random anti-spoofing key (if this is Windows 2000 set one manually)."); locker.assign(); // pops lock on SP config g_Config->term(); - g_Config=NULL; + g_Config=nullptr; return FALSE; } } @@ -239,7 +239,7 @@ extern "C" BOOL WINAPI GetFilterVersion(PHTTP_FILTER_VERSION pVer) g_bSafeHeaderNames = flag.first && flag.second; const DOMElement* child = XMLHelper::getFirstChildElement(props->getElement(),Site); while (child) { - auto_ptr_char id(child->getAttributeNS(NULL,id)); + auto_ptr_char id(child->getAttributeNS(nullptr,id)); if (id.get()) g_Sites.insert(pair(id.get(),site_t(child))); child=XMLHelper::getNextSiblingElement(child,Site); @@ -254,7 +254,7 @@ extern "C" BOOL WINAPI GetFilterVersion(PHTTP_FILTER_VERSION pVer) SF_NOTIFY_NONSECURE_PORT | SF_NOTIFY_PREPROC_HEADERS | SF_NOTIFY_LOG); - LogEvent(NULL, EVENTLOG_INFORMATION_TYPE, 7701, NULL, "Filter initialized..."); + LogEvent(nullptr, EVENTLOG_INFORMATION_TYPE, 7701, nullptr, "Filter initialized..."); return TRUE; } @@ -262,8 +262,8 @@ extern "C" BOOL WINAPI TerminateFilter(DWORD) { if (g_Config) g_Config->term(); - g_Config = NULL; - LogEvent(NULL, EVENTLOG_INFORMATION_TYPE, 7701, NULL, "Filter shut down..."); + g_Config = nullptr; + LogEvent(nullptr, EVENTLOG_INFORMATION_TYPE, 7701, nullptr, "Filter shut down..."); return TRUE; } @@ -280,7 +280,7 @@ extern "C" BOOL WINAPI TerminateFilter(DWORD) class dynabuf { public: - dynabuf() { bufptr=NULL; buflen=0; } + dynabuf() { bufptr=nullptr; buflen=0; } dynabuf(size_t s) { bufptr=new char[buflen=s]; *bufptr=0; } ~dynabuf() { delete[] bufptr; } size_t length() const { return bufptr ? strlen(bufptr) : 0; } @@ -311,8 +311,8 @@ void dynabuf::reserve(size_t s, bool keep) bool dynabuf::operator==(const char* s) const { - if (buflen==NULL || s==NULL) - return (buflen==NULL && s==NULL); + if (buflen==0 || s==nullptr) + return (buflen==0 && s==nullptr); else return strcmp(bufptr,s)==0; } @@ -441,8 +441,8 @@ public: } const char* getQueryString() const { const char* uri = getRequestURI(); - uri = (uri ? strchr(uri, '?') : NULL); - return uri ? (uri + 1) : NULL; + uri = (uri ? strchr(uri, '?') : nullptr); + return uri ? (uri + 1) : nullptr; } const char* getMethod() const { if (m_method.empty()) { @@ -475,7 +475,7 @@ public: void log(SPLogLevel level, const string& msg) { AbstractSPRequest::log(level,msg); if (level >= SPCrit) - LogEvent(NULL, EVENTLOG_ERROR_TYPE, 2100, NULL, msg.c_str()); + LogEvent(nullptr, EVENTLOG_ERROR_TYPE, 2100, nullptr, msg.c_str()); } string makeSafeHeader(const char* rawname) const { string hdr; @@ -526,8 +526,8 @@ public: void setRemoteUser(const char* user) { setHeader("remote-user", user); if (!user || !*user) - m_pfc->pFilterContext = NULL; - else if (m_pfc->pFilterContext = m_pfc->AllocMem(m_pfc, sizeof(char) * (strlen(user) + 1), NULL)) + m_pfc->pFilterContext = nullptr; + else if (m_pfc->pFilterContext = m_pfc->AllocMem(m_pfc, sizeof(char) * (strlen(user) + 1), 0)) strcpy(reinterpret_cast(m_pfc->pFilterContext), user); } string getRemoteUser() const { @@ -596,7 +596,7 @@ public: DWORD WriteClientError(PHTTP_FILTER_CONTEXT pfc, const char* msg) { - LogEvent(NULL, EVENTLOG_ERROR_TYPE, 2100, NULL, msg); + LogEvent(nullptr, EVENTLOG_ERROR_TYPE, 2100, nullptr, msg); static const char* ctype="Connection: close\r\nContent-Type: text/html\r\n\r\n"; pfc->ServerSupportFunction(pfc,SF_REQ_SEND_RESPONSE_HEADER,"200 OK",(DWORD)ctype,0); static const char* xmsg="Shibboleth Filter Error" @@ -663,11 +663,11 @@ extern "C" DWORD WINAPI HttpFilterProc(PHTTP_FILTER_CONTEXT pfc, DWORD notificat return WriteClientError(pfc,"Shibboleth Filter detected unexpected IIS error."); } catch (exception& e) { - LogEvent(NULL, EVENTLOG_ERROR_TYPE, 2100, NULL, e.what()); + LogEvent(nullptr, EVENTLOG_ERROR_TYPE, 2100, nullptr, e.what()); return WriteClientError(pfc,"Shibboleth Filter caught an exception, check Event Log for details."); } catch(...) { - LogEvent(NULL, EVENTLOG_ERROR_TYPE, 2100, NULL, "Shibboleth Filter threw an unknown exception."); + LogEvent(nullptr, EVENTLOG_ERROR_TYPE, 2100, nullptr, "Shibboleth Filter threw an unknown exception."); if (g_catchAll) return WriteClientError(pfc,"Shibboleth Filter threw an unknown exception."); throw; @@ -682,7 +682,7 @@ extern "C" DWORD WINAPI HttpFilterProc(PHTTP_FILTER_CONTEXT pfc, DWORD notificat DWORD WriteClientError(LPEXTENSION_CONTROL_BLOCK lpECB, const char* msg) { - LogEvent(NULL, EVENTLOG_ERROR_TYPE, 2100, NULL, msg); + LogEvent(nullptr, EVENTLOG_ERROR_TYPE, 2100, nullptr, msg); static const char* ctype="Connection: close\r\nContent-Type: text/html\r\n\r\n"; lpECB->ServerSupportFunction(lpECB->ConnID,HSE_REQ_SEND_RESPONSE_HEADER,"200 OK",0,(LPDWORD)ctype); static const char* xmsg="Shibboleth Error

Shibboleth Error

"; @@ -829,7 +829,7 @@ public: void log(SPLogLevel level, const string& msg) const { AbstractSPRequest::log(level,msg); if (level >= SPCrit) - LogEvent(NULL, EVENTLOG_ERROR_TYPE, 2100, NULL, msg.c_str()); + LogEvent(nullptr, EVENTLOG_ERROR_TYPE, 2100, nullptr, msg.c_str()); } string getHeader(const char* name) const { string hdr("HTTP_"); @@ -942,7 +942,7 @@ public: ccex.CertContext.pbCertEncoded = (BYTE*)CertificateBuf; DWORD dwSize = sizeof(ccex); - if (m_lpECB->ServerSupportFunction(m_lpECB->ConnID, HSE_REQ_GET_CERT_INFO_EX, (LPVOID)&ccex, (LPDWORD)dwSize, NULL)) { + if (m_lpECB->ServerSupportFunction(m_lpECB->ConnID, HSE_REQ_GET_CERT_INFO_EX, (LPVOID)&ccex, (LPDWORD)dwSize, nullptr)) { if (ccex.CertContext.cbCertEncoded) { xsecsize_t outlen; XMLByte* serialized = Base64::encode(reinterpret_cast(CertificateBuf), ccex.CertContext.cbCertEncoded, &outlen); @@ -997,11 +997,11 @@ extern "C" DWORD WINAPI HttpExtensionProc(LPEXTENSION_CONTROL_BLOCK lpECB) return WriteClientError(lpECB,"Server detected unexpected IIS error."); } catch (exception& e) { - LogEvent(NULL, EVENTLOG_ERROR_TYPE, 2100, NULL, e.what()); + LogEvent(nullptr, EVENTLOG_ERROR_TYPE, 2100, nullptr, e.what()); return WriteClientError(lpECB,"Shibboleth Extension caught an exception, check Event Log for details."); } catch(...) { - LogEvent(NULL, EVENTLOG_ERROR_TYPE, 2100, NULL, "Shibboleth Extension threw an unknown exception."); + LogEvent(nullptr, EVENTLOG_ERROR_TYPE, 2100, nullptr, "Shibboleth Extension threw an unknown exception."); if (g_catchAll) return WriteClientError(lpECB,"Shibboleth Extension threw an unknown exception."); throw; diff --git a/isapi_shib/isapi_shib.vcxproj b/isapi_shib/isapi_shib.vcxproj new file mode 100644 index 0000000..2ca8c02 --- /dev/null +++ b/isapi_shib/isapi_shib.vcxproj @@ -0,0 +1,243 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {87C25D4E-8D19-4513-B0BA-BC668BC2DEE3} + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + false + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + true + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Release/isapi_shib.tlb + + + + + MaxSpeed + OnlyExplicitInline + .;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_WINDOWS;WIN32_LEAN_AND_MEAN;_WIN32_WINNT=0x0400;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + true + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + /export:GetExtensionVersion /export:GetFilterVersion /export:TerminateExtension /export:TerminateFilter /export:HttpFilterProc /export:HttpExtensionProc %(AdditionalOptions) + xerces-c_3.lib;xmltooling-lite1.lib;%(AdditionalDependencies) + ..\..\cpp-xmltooling\$(Configuration);%(AdditionalLibraryDirectories) + false + + + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Release/isapi_shib.tlb + + + + + MaxSpeed + OnlyExplicitInline + .;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_WINDOWS;WIN32_LEAN_AND_MEAN;_WIN32_WINNT=0x0400;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + true + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + /export:GetExtensionVersion /export:GetFilterVersion /export:TerminateExtension /export:TerminateFilter /export:HttpFilterProc /export:HttpExtensionProc %(AdditionalOptions) + xerces-c_3.lib;xmltooling-lite1.lib;%(AdditionalDependencies) + ..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) + .\Release/isapi_shib.pdb + false + + + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Debug/isapi_shib.tlb + + + + + Disabled + .;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + _WINDOWS;WIN32;_DEBUG;WIN32_LEAN_AND_MEAN;_WIN32_WINNT=0x0400;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + true + Level3 + EditAndContinue + true + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + /export:GetExtensionVersion /export:GetFilterVersion /export:TerminateExtension /export:TerminateFilter /export:HttpFilterProc /export:HttpExtensionProc %(AdditionalOptions) + xerces-c_3D.lib;xmltooling-lite1D.lib;%(AdditionalDependencies) + ..\..\cpp-xmltooling\$(Configuration);%(AdditionalLibraryDirectories) + true + false + + + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Debug/isapi_shib.tlb + + + + + Disabled + .;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + _WINDOWS;WIN32;_DEBUG;WIN32_LEAN_AND_MEAN;_WIN32_WINNT=0x0400;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + true + Level3 + ProgramDatabase + true + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + /export:GetExtensionVersion /export:GetFilterVersion /export:TerminateExtension /export:TerminateFilter /export:HttpFilterProc /export:HttpExtensionProc %(AdditionalOptions) + xerces-c_3D.lib;xmltooling-lite1D.lib;%(AdditionalDependencies) + ..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) + true + false + + + + + + + + + + + + + + + + {81f0f7a6-dc36-46ef-957f-f9e81d4403f7} + false + + + + + + \ No newline at end of file diff --git a/memcache-store/Makefile.am b/memcache-store/Makefile.am index fa11fd8..db992f5 100644 --- a/memcache-store/Makefile.am +++ b/memcache-store/Makefile.am @@ -17,4 +17,4 @@ memcache_store_la_LDFLAGS = -module -avoid-version $(XMLSEC_LIBS) install-exec-hook: for la in $(plugin_LTLIBRARIES) ; do rm -f $(DESTDIR)$(plugindir)/$$la ; done -EXTRA_DIST = memcache-store.vcproj memcache-store.rc resource.h +EXTRA_DIST = memcache-store.vcxproj memcache-store.rc resource.h diff --git a/memcache-store/memcache-store.cpp b/memcache-store/memcache-store.cpp index 278fbde..7222503 100644 --- a/memcache-store/memcache-store.cpp +++ b/memcache-store/memcache-store.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,7 +17,7 @@ /** * memcache-store.cpp * - * Storage Service using memcache (pre memcache tags) + * Storage Service using memcache (pre memcache tags). */ #if defined (_MSC_VER) || defined(__BORLANDC__) @@ -127,17 +127,17 @@ namespace xmltooling { ~MemcacheStorageService(); bool createString(const char* context, const char* key, const char* value, time_t expiration); - int readString(const char* context, const char* key, string* pvalue=NULL, time_t* pexpiration=NULL, int version=0); - int updateString(const char* context, const char* key, const char* value=NULL, time_t expiration=0, int version=0); + int readString(const char* context, const char* key, string* pvalue=nullptr, time_t* pexpiration=nullptr, int version=0); + int updateString(const char* context, const char* key, const char* value=nullptr, time_t expiration=0, int version=0); bool deleteString(const char* context, const char* key); bool createText(const char* context, const char* key, const char* value, time_t expiration) { return createString(context, key, value, expiration); } - int readText(const char* context, const char* key, string* pvalue=NULL, time_t* pexpiration=NULL, int version=0) { + int readText(const char* context, const char* key, string* pvalue=nullptr, time_t* pexpiration=nullptr, int version=0) { return readString(context, key, pvalue, pexpiration, version); } - int updateText(const char* context, const char* key, const char* value=NULL, time_t expiration=0, int version=0) { + int updateText(const char* context, const char* key, const char* value=nullptr, time_t expiration=0, int version=0) { return updateString(context, key, value, expiration, version); } bool deleteText(const char* context, const char* key) { @@ -473,7 +473,7 @@ bool MemcacheBase::replaceMemcache(const char *key, MemcacheBase::MemcacheBase(const DOMElement* e) : m_root(e), log(Category::getInstance("XMLTooling.MemcacheBase")), m_prefix("") { - auto_ptr_char p(e ? e->getAttributeNS(NULL,prefix) : NULL); + auto_ptr_char p(e ? e->getAttributeNS(nullptr,prefix) : nullptr); if (p.get() && *p.get()) { log.debug("INIT: GOT key prefix: %s", p.get()); m_prefix = p.get(); @@ -482,8 +482,8 @@ MemcacheBase::MemcacheBase(const DOMElement* e) : m_root(e), log(Category::getIn m_lock = Mutex::create(); log.debug("Lock created"); - memc = memcached_create(NULL); - if (memc == NULL) { + memc = memcached_create(nullptr); + if (memc == nullptr) { throw XMLToolingException("MemcacheBase::Memcache(): memcached_create() failed"); } @@ -494,7 +494,7 @@ MemcacheBase::MemcacheBase(const DOMElement* e) : m_root(e), log(Category::getIn log.debug("CRC hash set"); int32_t send_timeout = 999999; - const XMLCh* tag = e ? e->getAttributeNS(NULL, sendTimeout) : NULL; + const XMLCh* tag = e ? e->getAttributeNS(nullptr, sendTimeout) : nullptr; if (tag && *tag) { send_timeout = XMLString::parseInt(tag); } @@ -502,7 +502,7 @@ MemcacheBase::MemcacheBase(const DOMElement* e) : m_root(e), log(Category::getIn memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_SND_TIMEOUT, send_timeout); int32_t recv_timeout = 999999; - tag = e ? e->getAttributeNS(NULL, sendTimeout) : NULL; + tag = e ? e->getAttributeNS(nullptr, sendTimeout) : nullptr; if (tag && *tag) { recv_timeout = XMLString::parseInt(tag); } @@ -510,7 +510,7 @@ MemcacheBase::MemcacheBase(const DOMElement* e) : m_root(e), log(Category::getIn memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_RCV_TIMEOUT, recv_timeout); int32_t poll_timeout = 1000; - tag = e ? e->getAttributeNS(NULL, pollTimeout) : NULL; + tag = e ? e->getAttributeNS(nullptr, pollTimeout) : nullptr; if (tag && *tag) { poll_timeout = XMLString::parseInt(tag); } @@ -518,7 +518,7 @@ MemcacheBase::MemcacheBase(const DOMElement* e) : m_root(e), log(Category::getIn memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_POLL_TIMEOUT, poll_timeout); int32_t fail_limit = 5; - tag = e ? e->getAttributeNS(NULL, failLimit) : NULL; + tag = e ? e->getAttributeNS(nullptr, failLimit) : nullptr; if (tag && *tag) { fail_limit = XMLString::parseInt(tag); } @@ -526,7 +526,7 @@ MemcacheBase::MemcacheBase(const DOMElement* e) : m_root(e), log(Category::getIn memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_SERVER_FAILURE_LIMIT, fail_limit); int32_t retry_timeout = 30; - tag = e ? e->getAttributeNS(NULL, retryTimeout) : NULL; + tag = e ? e->getAttributeNS(nullptr, retryTimeout) : nullptr; if (tag && *tag) { retry_timeout = XMLString::parseInt(tag); } @@ -534,7 +534,7 @@ MemcacheBase::MemcacheBase(const DOMElement* e) : m_root(e), log(Category::getIn memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_RETRY_TIMEOUT, retry_timeout); int32_t nonblock_set = 1; - tag = e ? e->getAttributeNS(NULL, nonBlocking) : NULL; + tag = e ? e->getAttributeNS(nullptr, nonBlocking) : nullptr; if (tag && *tag) { nonblock_set = XMLString::parseInt(tag); } @@ -542,7 +542,7 @@ MemcacheBase::MemcacheBase(const DOMElement* e) : m_root(e), log(Category::getIn memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_NO_BLOCK, nonblock_set); // Grab hosts from the configuration. - e = e ? XMLHelper::getFirstChildElement(e,Hosts) : NULL; + e = e ? XMLHelper::getFirstChildElement(e,Hosts) : nullptr; if (!e || !e->hasChildNodes()) { throw XMLToolingException("Memcache StorageService requires Hosts element in configuration."); } @@ -568,7 +568,7 @@ MemcacheBase::~MemcacheBase() { MemcacheStorageService::MemcacheStorageService(const DOMElement* e) : MemcacheBase(e), m_log(Category::getInstance("XMLTooling.MemcacheStorageService")), m_buildMap(false) { - const XMLCh* tag=e ? e->getAttributeNS(NULL,buildMap) : NULL; + const XMLCh* tag=e ? e->getAttributeNS(nullptr,buildMap) : nullptr; if (tag && *tag && XMLString::parseInt(tag) != 0) { m_buildMap = true; m_log.debug("Cache built with buildMap ON"); @@ -690,12 +690,12 @@ int MemcacheStorageService::updateString(const char* context, const char* key, c log.debug("updateString ctx: %s - key: %s", context, key); time_t final_exp = expiration; - time_t *want_expiration = NULL; + time_t *want_expiration = nullptr; if (! final_exp) { want_expiration = &final_exp; } - int read_res = readString(context, key, NULL, want_expiration, version); + int read_res = readString(context, key, nullptr, want_expiration, version); if (!read_res) { // not found @@ -758,7 +758,7 @@ void MemcacheStorageService::updateContext(const char* context, time_t expiratio // Update expiration times string value; - int read_res = readString(context, iter->c_str(), &value, NULL, 0); + int read_res = readString(context, iter->c_str(), &value, nullptr, 0); if (!read_res) { // not found diff --git a/memcache-store/memcache-store.vcxproj b/memcache-store/memcache-store.vcxproj new file mode 100644 index 0000000..ae86cb8 --- /dev/null +++ b/memcache-store/memcache-store.vcxproj @@ -0,0 +1,198 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {666A63A7-983F-4C19-8411-207F24305198} + memcachestore + Win32Proj + + + + DynamicLibrary + MultiByte + true + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + true + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + true + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + false + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + .so + .so + .so + .so + + + + Disabled + .;..;..\..\cpp-xmltooling;..\..\..\libmemcached;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDebugDLL + true + Level3 + EditAndContinue + + + _DEBUG;%(PreprocessorDefinitions) + + + log4shib1D.lib;xerces-c_3D.lib;xmltooling1D.lib;memcached.lib;%(AdditionalDependencies) + ..\..\cpp-xmltooling\$(Configuration);..\..\..\libmemcached\visualc\$(Configuration);%(AdditionalLibraryDirectories) + true + Windows + + + + + + + X64 + + + Disabled + ..\..\cpp-xmltooling;..\..\..\libmemcached\visualc\toolset;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDebugDLL + true + Level3 + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + + + log4shib1D.lib;xerces-c_3D.lib;xmltooling1D.lib;%(AdditionalDependencies) + ..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) + true + Windows + + + + + + + .;..;..\..\cpp-xmltooling;..\..\..\libmemcached;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + Level3 + + + log4shib1.lib;xerces-c_3.lib;xmltooling1.lib;memcached.lib;%(AdditionalDependencies) + ..\..\cpp-xmltooling\$(Configuration);..\..\..\libmemcached\visualc\$(Configuration);%(AdditionalLibraryDirectories) + Windows + true + true + + + + + + + X64 + + + ..\..\cpp-xmltooling;..\..\..\libmemcached\visualc\toolset;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + Level3 + + + log4shib1.lib;xerces-c_3.lib;xmltooling1.lib;%(AdditionalDependencies) + ..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) + true + Windows + true + true + + + + + + + + + + + + + + + + + + + {81f0f7a6-dc36-46ef-957f-f9e81d4403f6} + false + + + + + + \ No newline at end of file diff --git a/nsapi_shib/Makefile.am b/nsapi_shib/Makefile.am index 82c65c0..17b36f5 100644 --- a/nsapi_shib/Makefile.am +++ b/nsapi_shib/Makefile.am @@ -14,4 +14,4 @@ install-exec-hook: endif -EXTRA_DIST = nsapi_shib.vcproj resource.h nsapi_shib.rc nsapi_shib.cpp +EXTRA_DIST = nsapi_shib.vcxproj resource.h nsapi_shib.rc nsapi_shib.cpp diff --git a/nsapi_shib/nsapi_shib.cpp b/nsapi_shib/nsapi_shib.cpp index 8914e7e..2c67868 100644 --- a/nsapi_shib/nsapi_shib.cpp +++ b/nsapi_shib/nsapi_shib.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,7 +17,7 @@ /** * nsapi_shib.cpp * - * Shibboleth NSAPI filter + * Shibboleth NSAPI filter. */ #define SHIBSP_LITE @@ -76,7 +76,7 @@ using namespace std; if (IO_ERROR==net_write(sn->csd,str,strlen(str))) return REQ_EXIT namespace { - SPConfig* g_Config=NULL; + SPConfig* g_Config=nullptr; string g_ServerName; string g_unsetHeaderValue; string g_spoofKey; @@ -103,7 +103,7 @@ extern "C" NSAPI_PUBLIC void nsapi_shib_exit(void*) { if (g_Config) g_Config->term(); - g_Config = NULL; + g_Config = nullptr; } extern "C" NSAPI_PUBLIC int nsapi_shib_init(pblock* pb, ::Session* sn, Request* rq) @@ -144,7 +144,7 @@ extern "C" NSAPI_PUBLIC int nsapi_shib_init(pblock* pb, ::Session* sn, Request* SPConfig::Handlers ); if (!g_Config->init(schemadir,prefix)) { - g_Config=NULL; + g_Config=nullptr; pblock_nvinsert("error","unable to initialize Shibboleth libraries",pb); return REQ_ABORTED; } @@ -158,11 +158,11 @@ extern "C" NSAPI_PUBLIC int nsapi_shib_init(pblock* pb, ::Session* sn, Request* catch (exception& ex) { pblock_nvinsert("error",ex.what(),pb); g_Config->term(); - g_Config=NULL; + g_Config=nullptr; return REQ_ABORTED; } - daemon_atrestart(nsapi_shib_exit,NULL); + daemon_atrestart(nsapi_shib_exit,nullptr); ServiceProvider* sp=g_Config->getServiceProvider(); Locker locker(sp); @@ -195,7 +195,7 @@ extern "C" NSAPI_PUBLIC int nsapi_shib_init(pblock* pb, ::Session* sn, Request* pblock_nvinsert("error", "module failed to generate a random anti-spoofing key (if this is Windows 2000 set one manually)", pb); locker.assign(); // pops lock on SP config g_Config->term(); - g_Config=NULL; + g_Config=nullptr; return REQ_ABORTED; } } @@ -293,7 +293,7 @@ public: return pblock_findval("method", m_rq->reqpb); } string getContentType() const { - char* content_type = NULL; + char* content_type = nullptr; if (request_header("content-type", &content_type, m_sn, m_rq) != REQ_PROCEED) return ""; return content_type ? content_type : ""; @@ -301,7 +301,7 @@ public: long getContentLength() const { if (m_gotBody) return m_body.length(); - char* content_length=NULL; + char* content_length=nullptr; if (request_header("content-length", &content_length, m_sn, m_rq) != REQ_PROCEED) return 0; return content_length ? atoi(content_length) : 0; @@ -321,10 +321,10 @@ public: const char* getRequestBody() const { if (m_gotBody) return m_body.c_str(); - char* content_length=NULL; + char* content_length=nullptr; if (request_header("content-length", &content_length, m_sn, m_rq) != REQ_PROCEED || !content_length) { m_gotBody = true; - return NULL; + return nullptr; } else if (atoi(content_length) > 1024*1024) // 1MB? throw opensaml::SecurityPolicyException("Blocked request body exceeding 1M size limit."); @@ -382,7 +382,7 @@ public: } string getHeader(const char* name) const { // NSAPI headers tend to be lower case. We'll special case "cookie" since it's used a lot. - char* hdr = NULL; + char* hdr = nullptr; int cookie = strcmp(name, "Cookie"); if (cookie == 0) name = "cookie"; @@ -435,7 +435,7 @@ public: } pblock_nvinsert("connection","close",m_rq->srvhdrs); pblock_nninsert("content-length", msg.length(), m_rq->srvhdrs); - protocol_status(m_sn, m_rq, status, NULL); + protocol_status(m_sn, m_rq, status, nullptr); protocol_start_response(m_sn, m_rq); net_write(m_sn->csd,const_cast(msg.c_str()),msg.length()); return REQ_EXIT; @@ -448,7 +448,7 @@ public: pblock_nvinsert("cache-control", "private,no-store,no-cache", m_rq->srvhdrs); pblock_nvinsert("location", url, m_rq->srvhdrs); pblock_nvinsert("connection","close",m_rq->srvhdrs); - protocol_status(m_sn, m_rq, PROTOCOL_REDIRECT, NULL); + protocol_status(m_sn, m_rq, PROTOCOL_REDIRECT, nullptr); protocol_start_response(m_sn, m_rq); return REQ_ABORTED; } @@ -554,16 +554,16 @@ public: SunRequestMapper(const xercesc::DOMElement* e); ~SunRequestMapper() { delete m_mapper; delete m_stKey; delete m_propsKey; } Lockable* lock() { return m_mapper->lock(); } - void unlock() { m_stKey->setData(NULL); m_propsKey->setData(NULL); m_mapper->unlock(); } + void unlock() { m_stKey->setData(nullptr); m_propsKey->setData(nullptr); m_mapper->unlock(); } Settings getSettings(const HTTPRequest& request) const; - const PropertySet* getParent() const { return NULL; } + const PropertySet* getParent() const { return nullptr; } void setParent(const PropertySet*) {} - pair getBool(const char* name, const char* ns=NULL) const; - pair getString(const char* name, const char* ns=NULL) const; - pair getXMLString(const char* name, const char* ns=NULL) const; - pair getUnsignedInt(const char* name, const char* ns=NULL) const; - pair getInt(const char* name, const char* ns=NULL) const; + pair getBool(const char* name, const char* ns=nullptr) const; + pair getString(const char* name, const char* ns=nullptr) const; + pair getXMLString(const char* name, const char* ns=nullptr) const; + pair getUnsignedInt(const char* name, const char* ns=nullptr) const; + pair getInt(const char* name, const char* ns=nullptr) const; void getAll(map& properties) const; const PropertySet* getPropertySet(const char* name, const char* ns=shibspconstants::ASCII_SHIB2SPCONFIG_NS) const; const xercesc::DOMElement* getElement() const; @@ -579,11 +579,11 @@ RequestMapper* SunRequestMapFactory(const xercesc::DOMElement* const & e) return new SunRequestMapper(e); } -SunRequestMapper::SunRequestMapper(const xercesc::DOMElement* e) : m_mapper(NULL), m_stKey(NULL), m_propsKey(NULL) +SunRequestMapper::SunRequestMapper(const xercesc::DOMElement* e) : m_mapper(nullptr), m_stKey(nullptr), m_propsKey(nullptr) { m_mapper = SPConfig::getConfig().RequestMapperManager.newPlugin(XML_REQUEST_MAPPER,e); - m_stKey=ThreadKey::create(NULL); - m_propsKey=ThreadKey::create(NULL); + m_stKey=ThreadKey::create(nullptr); + m_propsKey=ThreadKey::create(nullptr); } RequestMapper::Settings SunRequestMapper::getSettings(const HTTPRequest& request) const @@ -621,13 +621,13 @@ pair SunRequestMapper::getString(const char* name, const char* return make_pair(true,param); } } - return s ? s->getString(name,ns) : pair(false,NULL); + return s ? s->getString(name,ns) : pair(false,nullptr); } pair SunRequestMapper::getXMLString(const char* name, const char* ns) const { const PropertySet* s=reinterpret_cast(m_propsKey->getData()); - return s ? s->getXMLString(name,ns) : pair(false,NULL); + return s ? s->getXMLString(name,ns) : pair(false,nullptr); } pair SunRequestMapper::getUnsignedInt(const char* name, const char* ns) const @@ -638,7 +638,7 @@ pair SunRequestMapper::getUnsignedInt(const char* name, const // Override int properties. const char* param=pblock_findval(name,stn->m_pb); if (param) - return pair(true,strtol(param,NULL,10)); + return pair(true,strtol(param,nullptr,10)); } return s ? s->getUnsignedInt(name,ns) : pair(false,0); } @@ -678,11 +678,11 @@ void SunRequestMapper::getAll(map& properties) const const PropertySet* SunRequestMapper::getPropertySet(const char* name, const char* ns) const { const PropertySet* s=reinterpret_cast(m_propsKey->getData()); - return s ? s->getPropertySet(name,ns) : NULL; + return s ? s->getPropertySet(name,ns) : nullptr; } const xercesc::DOMElement* SunRequestMapper::getElement() const { const PropertySet* s=reinterpret_cast(m_propsKey->getData()); - return s ? s->getElement() : NULL; + return s ? s->getElement() : nullptr; } diff --git a/nsapi_shib/nsapi_shib.vcxproj b/nsapi_shib/nsapi_shib.vcxproj new file mode 100644 index 0000000..431c080 --- /dev/null +++ b/nsapi_shib/nsapi_shib.vcxproj @@ -0,0 +1,240 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {1396D80A-8672-4224-9B02-95F3F4207CDB} + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + true + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + true + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + false + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + true + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Release/nsapi_shib.tlb + + + + + MaxSpeed + OnlyExplicitInline + .;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + NDEBUG;_WINDOWS;WIN32;%(PreprocessorDefinitions) + true + true + Level3 + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + xerces-c_3.lib;xmltooling-lite1.lib;ns-httpd30.lib;%(AdditionalDependencies) + ..\..\cpp-xmltooling\$(Configuration);%(AdditionalLibraryDirectories) + + + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Release/nsapi_shib.tlb + + + + + MaxSpeed + OnlyExplicitInline + .;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + NDEBUG;_WINDOWS;WIN32;%(PreprocessorDefinitions) + true + true + Level3 + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + xerces-c_3.lib;xmltooling-lite1.lib;ns-httpd30.lib;%(AdditionalDependencies) + ..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) + .\Release/nsapi_shib.pdb + + + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Debug/nsapi_shib.tlb + + + + + Disabled + .;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + _WINDOWS;WIN32;_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + true + Level3 + EditAndContinue + Default + true + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + xerces-c_3D.lib;xmltooling-lite1D.lib;ns-httpd30.lib;%(AdditionalDependencies) + ..\..\cpp-xmltooling\$(Configuration);%(AdditionalLibraryDirectories) + true + + + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Debug/nsapi_shib.tlb + + + + + Disabled + .;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + _WINDOWS;WIN32;_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + true + Level3 + ProgramDatabase + Default + true + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + xerces-c_3D.lib;xmltooling-lite1D.lib;ns-httpd30.lib;%(AdditionalDependencies) + ..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) + true + + + + + + + + + + + + + + + + + + + {81f0f7a6-dc36-46ef-957f-f9e81d4403f7} + false + + + + + + \ No newline at end of file diff --git a/odbc-store/Makefile.am b/odbc-store/Makefile.am index c18fe5b..774f423 100644 --- a/odbc-store/Makefile.am +++ b/odbc-store/Makefile.am @@ -17,4 +17,4 @@ odbc_store_la_LDFLAGS = -module -avoid-version $(XMLSEC_LIBS) install-exec-hook: for la in $(plugin_LTLIBRARIES) ; do rm -f $(DESTDIR)$(plugindir)/$$la ; done -EXTRA_DIST = odbc-store.vcproj odbc-store.rc resource.h +EXTRA_DIST = odbc-store.vcxproj odbc-store.rc resource.h diff --git a/odbc-store/odbc-store.cpp b/odbc-store/odbc-store.cpp index 546eefc..0e9c089 100644 --- a/odbc-store/odbc-store.cpp +++ b/odbc-store/odbc-store.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -68,8 +68,8 @@ using namespace std; /* table definitions CREATE TABLE version ( - major int NOT NULL, - minor int NOT NULL + major int NOT nullptr, + minor int NOT nullptr ) CREATE TABLE strings ( @@ -103,7 +103,7 @@ namespace { ~ODBCConn() { SQLRETURN sr = SQL_SUCCESS; if (!autoCommit) - sr = SQLSetConnectAttr(handle, SQL_ATTR_AUTOCOMMIT, (SQLPOINTER)SQL_AUTOCOMMIT_ON, NULL); + sr = SQLSetConnectAttr(handle, SQL_ATTR_AUTOCOMMIT, (SQLPOINTER)SQL_AUTOCOMMIT_ON, 0); SQLDisconnect(handle); SQLFreeHandle(SQL_HANDLE_DBC,handle); if (!SQL_SUCCEEDED(sr)) @@ -123,10 +123,10 @@ namespace { bool createString(const char* context, const char* key, const char* value, time_t expiration) { return createRow(STRING_TABLE, context, key, value, expiration); } - int readString(const char* context, const char* key, string* pvalue=NULL, time_t* pexpiration=NULL, int version=0) { + int readString(const char* context, const char* key, string* pvalue=nullptr, time_t* pexpiration=nullptr, int version=0) { return readRow(STRING_TABLE, context, key, pvalue, pexpiration, version, false); } - int updateString(const char* context, const char* key, const char* value=NULL, time_t expiration=0, int version=0) { + int updateString(const char* context, const char* key, const char* value=nullptr, time_t expiration=0, int version=0) { return updateRow(STRING_TABLE, context, key, value, expiration, version); } bool deleteString(const char* context, const char* key) { @@ -136,10 +136,10 @@ namespace { bool createText(const char* context, const char* key, const char* value, time_t expiration) { return createRow(TEXT_TABLE, context, key, value, expiration); } - int readText(const char* context, const char* key, string* pvalue=NULL, time_t* pexpiration=NULL, int version=0) { + int readText(const char* context, const char* key, string* pvalue=nullptr, time_t* pexpiration=nullptr, int version=0) { return readRow(TEXT_TABLE, context, key, pvalue, pexpiration, version, true); } - int updateText(const char* context, const char* key, const char* value=NULL, time_t expiration=0, int version=0) { + int updateText(const char* context, const char* key, const char* value=nullptr, time_t expiration=0, int version=0) { return updateRow(TEXT_TABLE, context, key, value, expiration, version); } bool deleteText(const char* context, const char* key) { @@ -175,7 +175,7 @@ namespace { SQLHDBC getHDBC(); SQLHSTMT getHSTMT(SQLHDBC); pair getVersion(SQLHDBC); - pair log_error(SQLHANDLE handle, SQLSMALLINT htype, const char* checkfor=NULL); + pair log_error(SQLHANDLE handle, SQLSMALLINT htype, const char* checkfor=nullptr); static void* cleanup_fn(void*); void cleanup(); @@ -258,19 +258,19 @@ namespace { }; ODBCStorageService::ODBCStorageService(const DOMElement* e) : m_log(Category::getInstance("XMLTooling.StorageService")), - m_cleanupInterval(900), shutdown_wait(NULL), cleanup_thread(NULL), shutdown(false), m_henv(SQL_NULL_HANDLE), m_isolation(SQL_TXN_SERIALIZABLE) + m_cleanupInterval(900), shutdown_wait(nullptr), cleanup_thread(nullptr), shutdown(false), m_henv(SQL_NULL_HANDLE), m_isolation(SQL_TXN_SERIALIZABLE) { #ifdef _DEBUG xmltooling::NDC ndc("ODBCStorageService"); #endif - const XMLCh* tag=e ? e->getAttributeNS(NULL,cleanupInterval) : NULL; + const XMLCh* tag=e ? e->getAttributeNS(nullptr,cleanupInterval) : nullptr; if (tag && *tag) m_cleanupInterval = XMLString::parseInt(tag); if (!m_cleanupInterval) m_cleanupInterval = 900; - auto_ptr_char iso(e ? e->getAttributeNS(NULL,isolationLevel) : NULL); + auto_ptr_char iso(e ? e->getAttributeNS(nullptr,isolationLevel) : nullptr); if (iso.get() && *iso.get()) { if (!strcmp(iso.get(),"SERIALIZABLE")) m_isolation = SQL_TXN_SERIALIZABLE; @@ -299,7 +299,7 @@ ODBCStorageService::ODBCStorageService(const DOMElement* e) : m_log(Category::ge } // Grab connection string from the configuration. - e = e ? XMLHelper::getFirstChildElement(e,ConnectionString) : NULL; + e = e ? XMLHelper::getFirstChildElement(e,ConnectionString) : nullptr; if (!e || !e->hasChildNodes()) { SQLFreeHandle(SQL_HANDLE_ENV, m_henv); throw XMLToolingException("ODBC StorageService requires ConnectionString element in configuration."); @@ -337,7 +337,7 @@ ODBCStorageService::~ODBCStorageService() { shutdown = true; shutdown_wait->signal(); - cleanup_thread->join(NULL); + cleanup_thread->join(nullptr); delete shutdown_wait; if (m_henv != SQL_NULL_HANDLE) SQLFreeHandle(SQL_HANDLE_ENV, m_henv); @@ -381,14 +381,14 @@ SQLHDBC ODBCStorageService::getHDBC() throw IOException("ODBC StorageService failed to allocate a connection handle."); } - sr=SQLDriverConnect(handle,NULL,(SQLCHAR*)m_connstring.c_str(),m_connstring.length(),NULL,0,NULL,SQL_DRIVER_NOPROMPT); + sr=SQLDriverConnect(handle,nullptr,(SQLCHAR*)m_connstring.c_str(),m_connstring.length(),nullptr,0,nullptr,SQL_DRIVER_NOPROMPT); if (!SQL_SUCCEEDED(sr)) { m_log.error("failed to connect to database"); log_error(handle, SQL_HANDLE_DBC); throw IOException("ODBC StorageService failed to connect to database."); } - sr = SQLSetConnectAttr(handle, SQL_ATTR_TXN_ISOLATION, (SQLPOINTER)m_isolation, NULL); + sr = SQLSetConnectAttr(handle, SQL_ATTR_TXN_ISOLATION, (SQLPOINTER)m_isolation, 0); if (!SQL_SUCCEEDED(sr)) throw IOException("ODBC StorageService failed to set transaction isolation level."); @@ -421,8 +421,8 @@ pair ODBCStorageService::getVersion(SQLHDBC conn) SQLINTEGER major; SQLINTEGER minor; - SQLBindCol(stmt,1,SQL_C_SLONG,&major,0,NULL); - SQLBindCol(stmt,2,SQL_C_SLONG,&minor,0,NULL); + SQLBindCol(stmt,1,SQL_C_SLONG,&major,0,nullptr); + SQLBindCol(stmt,2,SQL_C_SLONG,&minor,0,nullptr); if ((sr=SQLFetch(stmt)) != SQL_NO_DATA) return pair(major,minor); @@ -524,7 +524,7 @@ int ODBCStorageService::readRow( // Prepare and exectute select statement. char timebuf[32]; - timestampFromTime(time(NULL), timebuf); + timestampFromTime(time(nullptr), timebuf); char *scontext = makeSafeSQL(context); char *skey = makeSafeSQL(key); ostringstream q; @@ -532,7 +532,7 @@ int ODBCStorageService::readRow( if (pexpiration) q << ",expires"; if (pvalue) - q << ",CASE version WHEN " << version << " THEN NULL ELSE value END"; + q << ",CASE version WHEN " << version << " THEN nullptr ELSE value END"; q << " FROM " << table << " WHERE context='" << scontext << "' AND id='" << skey << "' AND expires > " << timebuf; freeSafeSQL(scontext, context); freeSafeSQL(skey, key); @@ -549,9 +549,9 @@ int ODBCStorageService::readRow( SQLSMALLINT ver; SQL_TIMESTAMP_STRUCT expiration; - SQLBindCol(stmt,1,SQL_C_SSHORT,&ver,0,NULL); + SQLBindCol(stmt,1,SQL_C_SSHORT,&ver,0,nullptr); if (pexpiration) - SQLBindCol(stmt,2,SQL_C_TYPE_TIMESTAMP,&expiration,0,NULL); + SQLBindCol(stmt,2,SQL_C_TYPE_TIMESTAMP,&expiration,0,nullptr); if ((sr=SQLFetch(stmt)) == SQL_NO_DATA) return 0; @@ -589,7 +589,7 @@ int ODBCStorageService::updateRow(const char *table, const char* context, const // Get statement handle. Disable auto-commit mode to wrap select + update. ODBCConn conn(getHDBC()); - SQLRETURN sr = SQLSetConnectAttr(conn, SQL_ATTR_AUTOCOMMIT, SQL_AUTOCOMMIT_OFF, NULL); + SQLRETURN sr = SQLSetConnectAttr(conn, SQL_ATTR_AUTOCOMMIT, SQL_AUTOCOMMIT_OFF, 0); if (!SQL_SUCCEEDED(sr)) throw IOException("ODBC StorageService failed to disable auto-commit mode."); conn.autoCommit = false; @@ -597,7 +597,7 @@ int ODBCStorageService::updateRow(const char *table, const char* context, const // First, fetch the current version for later, which also ensures the record still exists. char timebuf[32]; - timestampFromTime(time(NULL), timebuf); + timestampFromTime(time(nullptr), timebuf); char *scontext = makeSafeSQL(context); char *skey = makeSafeSQL(key); string q("SELECT version FROM "); @@ -615,7 +615,7 @@ int ODBCStorageService::updateRow(const char *table, const char* context, const } SQLSMALLINT ver; - SQLBindCol(stmt,1,SQL_C_SSHORT,&ver,0,NULL); + SQLBindCol(stmt,1,SQL_C_SSHORT,&ver,0,nullptr); if ((sr=SQLFetch(stmt)) == SQL_NO_DATA) { freeSafeSQL(scontext, context); freeSafeSQL(skey, key); @@ -739,7 +739,7 @@ void ODBCStorageService::cleanup() if (shutdown) break; try { - reap(NULL); + reap(nullptr); } catch (exception& ex) { m_log.error("cleanup thread swallowed exception: %s", ex.what()); @@ -750,7 +750,7 @@ void ODBCStorageService::cleanup() mutex->unlock(); delete mutex; - Thread::exit(NULL); + Thread::exit(nullptr); } void* ODBCStorageService::cleanup_fn(void* cache_p) @@ -764,7 +764,7 @@ void* ODBCStorageService::cleanup_fn(void* cache_p) // Now run the cleanup process. cache->cleanup(); - return NULL; + return nullptr; } void ODBCStorageService::updateContext(const char *table, const char* context, time_t expiration) @@ -781,7 +781,7 @@ void ODBCStorageService::updateContext(const char *table, const char* context, t timestampFromTime(expiration, timebuf); char nowbuf[32]; - timestampFromTime(time(NULL), nowbuf); + timestampFromTime(time(nullptr), nowbuf); char *scontext = makeSafeSQL(context); string q("UPDATE "); @@ -810,7 +810,7 @@ void ODBCStorageService::reap(const char *table, const char* context) // Prepare and execute delete statement. char nowbuf[32]; - timestampFromTime(time(NULL), nowbuf); + timestampFromTime(time(nullptr), nowbuf); string q; if (context) { char *scontext = makeSafeSQL(context); diff --git a/odbc-store/odbc-store.vcxproj b/odbc-store/odbc-store.vcxproj new file mode 100644 index 0000000..d21b7b3 --- /dev/null +++ b/odbc-store/odbc-store.vcxproj @@ -0,0 +1,192 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {666A63A7-983F-4C19-8411-207F24305197} + odbcstore + Win32Proj + + + + DynamicLibrary + MultiByte + true + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + true + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + true + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + false + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + .so + .so + .so + .so + + + + Disabled + ..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDebugDLL + true + Level3 + EditAndContinue + + + _DEBUG;%(PreprocessorDefinitions) + + + log4shib1D.lib;xerces-c_3D.lib;xmltooling1D.lib;%(AdditionalDependencies) + ..\..\cpp-xmltooling\$(Configuration);%(AdditionalLibraryDirectories) + true + Windows + + + + + + + X64 + + + Disabled + ..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDebugDLL + true + Level3 + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + + + log4shib1D.lib;xerces-c_3D.lib;xmltooling1D.lib;%(AdditionalDependencies) + ..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) + true + Windows + + + + + + + ..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + Level3 + + + log4shib1.lib;xerces-c_3.lib;xmltooling1.lib;%(AdditionalDependencies) + ..\..\cpp-xmltooling\$(Configuration);%(AdditionalLibraryDirectories) + Windows + true + true + + + + + + + X64 + + + ..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + Level3 + + + log4shib1.lib;xerces-c_3.lib;xmltooling1.lib;%(AdditionalDependencies) + ..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) + true + Windows + true + true + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/shibd/Makefile.am b/shibd/Makefile.am index 2563e00..909f343 100644 --- a/shibd/Makefile.am +++ b/shibd/Makefile.am @@ -11,4 +11,4 @@ shibd_LDADD = \ shibd_LDFLAGS = $(XMLSEC_LIBS) -EXTRA_DIST = shibd.vcproj shibd_win32.cpp resource.h shibd.rc +EXTRA_DIST = shibd.vcxproj shibd_win32.cpp resource.h shibd.rc diff --git a/shibd/shibd.cpp b/shibd/shibd.cpp index eee5c8b..054aa45 100644 --- a/shibd/shibd.cpp +++ b/shibd/shibd.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,11 +15,7 @@ */ /* - * shar.cpp -- the shibd "main" code. All the functionality is elsewhere - * - * Created By: Derek Atkins - * - * $Id: shar.cpp 2164 2007-02-11 05:26:18 +0000 (Sun, 11 Feb 2007) cantor $ + * shibd.cpp -- the shibd "main" code. All the functionality is elsewhere */ @@ -56,13 +52,13 @@ using namespace xmltooling; using namespace std; bool shibd_shutdown = false; -const char* shar_config = NULL; -const char* shar_schemadir = NULL; -const char* shar_prefix = NULL; +const char* shar_config = nullptr; +const char* shar_schemadir = nullptr; +const char* shar_prefix = nullptr; bool shar_checkonly = false; bool shar_version = false; static bool unlink_socket = false; -const char* pidfile = NULL; +const char* pidfile = nullptr; #ifdef WIN32 @@ -191,7 +187,7 @@ static int setup_signals(void) sa.sa_handler = SIG_IGN; sa.sa_flags = SA_RESTART; - if (sigaction(SIGPIPE, &sa, NULL) < 0) { + if (sigaction(SIGPIPE, &sa, nullptr) < 0) { return -1; } @@ -199,16 +195,16 @@ static int setup_signals(void) sa.sa_handler = term_handler; sa.sa_flags = SA_RESTART; - if (sigaction(SIGHUP, &sa, NULL) < 0) { + if (sigaction(SIGHUP, &sa, nullptr) < 0) { return -1; } - if (sigaction(SIGINT, &sa, NULL) < 0) { + if (sigaction(SIGINT, &sa, nullptr) < 0) { return -1; } - if (sigaction(SIGQUIT, &sa, NULL) < 0) { + if (sigaction(SIGQUIT, &sa, nullptr) < 0) { return -1; } - if (sigaction(SIGTERM, &sa, NULL) < 0) { + if (sigaction(SIGTERM, &sa, nullptr) < 0) { return -1; } @@ -216,14 +212,14 @@ static int setup_signals(void) memset(&sa, 0, sizeof (sa)); sa.sa_handler = run_handler; - if (sigaction(SIGUSR1, &sa, NULL) < 0) { + if (sigaction(SIGUSR1, &sa, nullptr) < 0) { return -1; } memset(&sa, 0, sizeof (sa)); sa.sa_handler = child_handler; - if (sigaction(SIGCHLD, &sa, NULL) < 0) { + if (sigaction(SIGCHLD, &sa, nullptr) < 0) { return -1; } } diff --git a/shibd/shibd.vcxproj b/shibd/shibd.vcxproj new file mode 100644 index 0000000..33a0836 --- /dev/null +++ b/shibd/shibd.vcxproj @@ -0,0 +1,223 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {F13141B5-6C87-40BB-8D4E-5CC56EBB4C59} + shibd + + + + Application + MultiByte + + + Application + MultiByte + true + + + Application + MultiByte + + + Application + MultiByte + true + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + false + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + true + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + + + + + MaxSpeed + OnlyExplicitInline + .;..;..\..\cpp-opensaml2;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + true + true + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + wsock32.lib;log4shib1.lib;xmltooling1.lib;%(AdditionalDependencies) + ..\..\cpp-opensaml2\$(Configuration);..\..\cpp-xmltooling\$(Configuration);%(AdditionalLibraryDirectories) + Console + + + + + + + X64 + + + + + MaxSpeed + OnlyExplicitInline + .;..;..\..\cpp-opensaml2;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + true + true + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + wsock32.lib;log4shib1.lib;xmltooling1.lib;%(AdditionalDependencies) + ..\..\cpp-opensaml2\$(Platform)\$(Configuration);..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) + Console + + + + + + + + + + + Disabled + .;..;..\..\cpp-opensaml2;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + _CONSOLE;WIN32;_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + true + true + Level3 + EditAndContinue + true + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + wsock32.lib;log4shib1D.lib;xmltooling1D.lib;%(AdditionalDependencies) + ..\..\cpp-opensaml2\$(Configuration);..\..\cpp-xmltooling\$(Configuration);%(AdditionalLibraryDirectories) + true + Console + + + + + + + X64 + + + + + Disabled + .;..;..\..\cpp-opensaml2;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories) + _CONSOLE;WIN32;_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + true + true + Level3 + ProgramDatabase + true + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + wsock32.lib;log4shib1D.lib;xmltooling1D.lib;%(AdditionalDependencies) + ..\..\cpp-opensaml2\$(Platform)\$(Configuration);..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) + true + Console + + + + + + + + + + + + + + + + + + + + {81f0f7a6-dc36-46ef-957f-f9e81d4403f6} + false + + + + + + \ No newline at end of file diff --git a/shibd/shibd_win32.cpp b/shibd/shibd_win32.cpp index 7069a91..96315d1 100644 --- a/shibd/shibd_win32.cpp +++ b/shibd/shibd_win32.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2007 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,10 +16,6 @@ /* * shar_win32.cpp -- the SHAR "main" code on Win32 - * - * Created By: Scott Cantor (cantor.2@osu.edu) - * - * $Id: shar_win32.cpp 2150 2007-02-02 04:06:15 +0000 (Fri, 02 Feb 2007) cantor $ */ #include "config_win32.h" @@ -45,8 +41,8 @@ SERVICE_STATUS_HANDLE sshStatusHandle; DWORD dwErr = 0; BOOL bConsole = FALSE; char szErr[256]; -LPCSTR lpszInstall = NULL; -LPCSTR lpszRemove = NULL; +LPCSTR lpszInstall = nullptr; +LPCSTR lpszRemove = nullptr; // internal function prototypes VOID WINAPI service_ctrl(DWORD dwCtrlCode); @@ -135,7 +131,7 @@ int main(int argc, char *argv[]) SetConsoleCtrlHandler(&BreakHandler,TRUE); if ((i=real_main(1))!=0) { - LogEvent(NULL, EVENTLOG_ERROR_TYPE, 2100, NULL, "shibd startup failed, check shibd.log for further details"); + LogEvent(nullptr, EVENTLOG_ERROR_TYPE, 2100, nullptr, "shibd startup failed, check shibd.log for further details"); return i; } return real_main(0); @@ -169,11 +165,11 @@ int main(int argc, char *argv[]) SERVICE_TABLE_ENTRY dispatchTable[] = { { "SHIBD", (LPSERVICE_MAIN_FUNCTION)service_main }, - { NULL, NULL } + { nullptr, nullptr } }; if (!StartServiceCtrlDispatcher(dispatchTable)) - LogEvent(NULL, EVENTLOG_ERROR_TYPE, 2100, NULL, "StartServiceCtrlDispatcher failed."); + LogEvent(nullptr, EVENTLOG_ERROR_TYPE, 2100, nullptr, "StartServiceCtrlDispatcher failed."); return 0; } @@ -188,11 +184,11 @@ VOID ServiceStart (DWORD dwArgc, LPSTR *lpszArgv) if (real_main(1)!=0) { - LogEvent(NULL, EVENTLOG_ERROR_TYPE, 2100, NULL, "shibd startup failed, check shibd.log for further details"); + LogEvent(nullptr, EVENTLOG_ERROR_TYPE, 2100, nullptr, "shibd startup failed, check shibd.log for further details"); return; } - LogEvent(NULL, EVENTLOG_INFORMATION_TYPE, 7700, NULL, "shibd started successfully."); + LogEvent(nullptr, EVENTLOG_INFORMATION_TYPE, 7700, nullptr, "shibd started successfully."); if (!ReportStatusToSCMgr(SERVICE_RUNNING, NO_ERROR, 0)) return; @@ -209,7 +205,7 @@ VOID ServiceStart (DWORD dwArgc, LPSTR *lpszArgv) VOID ServiceStop() { if (!bConsole) - LogEvent(NULL, EVENTLOG_INFORMATION_TYPE, 7701, NULL, "shibd stopping..."); + LogEvent(nullptr, EVENTLOG_INFORMATION_TYPE, 7701, nullptr, "shibd stopping..."); shibd_shutdown=true; } @@ -336,7 +332,7 @@ BOOL ReportStatusToSCMgr(DWORD dwCurrentState, // Report the status of the service to the service control manager. // if (!(fResult = SetServiceStatus(sshStatusHandle, &ssStatus))) - LogEvent(NULL, EVENTLOG_ERROR_TYPE, 2100, NULL, "SetServiceStatus failed."); + LogEvent(nullptr, EVENTLOG_ERROR_TYPE, 2100, nullptr, "SetServiceStatus failed."); } return fResult; } @@ -354,7 +350,7 @@ void CmdInstallService(LPCSTR name) char szPath[256]; - if ( GetModuleFileName( NULL, szPath, 256 ) == 0 ) + if ( GetModuleFileName( nullptr, szPath, 256 ) == 0 ) { printf("Unable to install %s - %s\n", name, GetLastErrorText(szErr, 256)); return; @@ -371,8 +367,8 @@ void CmdInstallService(LPCSTR name) cmd = cmd + " -schemadir " + shar_schemadir; schSCManager = OpenSCManager( - NULL, // machine (NULL == local) - NULL, // database (NULL == default) + nullptr, // machine (nullptr == local) + nullptr, // database (nullptr == default) SC_MANAGER_ALL_ACCESS // access required ); @@ -388,11 +384,11 @@ void CmdInstallService(LPCSTR name) SERVICE_AUTO_START, // start type SERVICE_ERROR_NORMAL, // error control type cmd.c_str(), // service's command line - NULL, // no load ordering group - NULL, // no tag identifier - NULL, // dependencies - NULL, // LocalSystem account - NULL); // no password + nullptr, // no load ordering group + nullptr, // no tag identifier + nullptr, // dependencies + nullptr, // LocalSystem account + nullptr); // no password if ( schService ) { @@ -419,8 +415,8 @@ void CmdRemoveService(LPCSTR name) _snprintf(realName,sizeof(realName),"shibd_%s",name); schSCManager = OpenSCManager( - NULL, // machine (NULL == local) - NULL, // database (NULL == default) + nullptr, // machine (nullptr == local) + nullptr, // database (nullptr == default) SC_MANAGER_ALL_ACCESS // access required ); if ( schSCManager ) @@ -489,15 +485,15 @@ void CmdRemoveService(LPCSTR name) LPTSTR GetLastErrorText( LPSTR lpszBuf, DWORD dwSize ) { DWORD dwRet; - LPSTR lpszTemp = NULL; + LPSTR lpszTemp = nullptr; dwRet = FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |FORMAT_MESSAGE_ARGUMENT_ARRAY, - NULL, + nullptr, GetLastError(), LANG_NEUTRAL, (LPSTR)&lpszTemp, 0, - NULL ); + nullptr ); // supplied buffer is not long enough if ( !dwRet || ( (long)dwSize < (long)dwRet+14 ) ) @@ -521,9 +517,9 @@ BOOL LogEvent( PSID lpUserSid, LPCSTR message) { - LPCSTR messages[] = {message, NULL}; + LPCSTR messages[] = {message, nullptr}; HANDLE hElog = RegisterEventSource(lpUNCServerName, "Shibboleth Daemon"); - BOOL res = ReportEvent(hElog, wType, 0, dwEventID, lpUserSid, 1, 0, messages, NULL); + BOOL res = ReportEvent(hElog, wType, 0, dwEventID, lpUserSid, 1, 0, messages, nullptr); return (DeregisterEventSource(hElog) && res); } diff --git a/shibsp/AbstractSPRequest.cpp b/shibsp/AbstractSPRequest.cpp index eb0c320..5fefc01 100644 --- a/shibsp/AbstractSPRequest.cpp +++ b/shibsp/AbstractSPRequest.cpp @@ -51,8 +51,8 @@ void SPRequest::setAuthType(const char* authtype) } AbstractSPRequest::AbstractSPRequest(const char* category) - : m_sp(NULL), m_mapper(NULL), m_app(NULL), m_sessionTried(false), m_session(NULL), - m_log(&Category::getInstance(category)), m_parser(NULL) + : m_sp(nullptr), m_mapper(nullptr), m_app(nullptr), m_sessionTried(false), m_session(nullptr), + m_log(&Category::getInstance(category)), m_parser(nullptr) { m_sp=SPConfig::getConfig().getServiceProvider(); m_sp->lock(); @@ -126,9 +126,9 @@ Session* AbstractSPRequest::getSession(bool checkTimeout, bool ignoreAddress, bo } } - // The cache will either silently pass a session or NULL back, or throw an exception out. + // The cache will either silently pass a session or nullptr back, or throw an exception out. Session* session = getServiceProvider().getSessionCache()->find( - getApplication(), *this, ignoreAddress ? NULL : getRemoteAddr().c_str(), checkTimeout ? &timeout : NULL + getApplication(), *this, ignoreAddress ? nullptr : getRemoteAddr().c_str(), checkTimeout ? &timeout : nullptr ); if (cache) m_session = session; @@ -205,7 +205,7 @@ const char* AbstractSPRequest::getParameter(const char* name) const m_parser=new CGIParser(*this); pair bounds=m_parser->getParameters(name); - return (bounds.first==bounds.second) ? NULL : bounds.first->second; + return (bounds.first==bounds.second) ? nullptr : bounds.first->second; } vector::size_type AbstractSPRequest::getParameters(const char* name, vector& values) const @@ -252,7 +252,7 @@ const char* AbstractSPRequest::getHandlerURL(const char* resource) const throw ConfigurationException("Target resource was not an absolute URL."); bool ssl_only=true; - const char* handler=NULL; + const char* handler=nullptr; const PropertySet* props=getApplication().getPropertySet("Sessions"); if (props) { pair p=props->getBool("handlerSSL"); @@ -283,7 +283,7 @@ const char* AbstractSPRequest::getHandlerURL(const char* resource) const // // note: if ssl_only is true, make sure the protocol is https - const char* path = NULL; + const char* path = nullptr; // Decide whether to use the handler or the resource for the "protocol" const char* prot; diff --git a/shibsp/AbstractSPRequest.h b/shibsp/AbstractSPRequest.h index 318f68c..6d497bd 100644 --- a/shibsp/AbstractSPRequest.h +++ b/shibsp/AbstractSPRequest.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -68,7 +68,7 @@ namespace shibsp { std::string getRemoteAddr() const; const char* getParameter(const char* name) const; std::vector::size_type getParameters(const char* name, std::vector& values) const; - const char* getHandlerURL(const char* resource=NULL) const; + const char* getHandlerURL(const char* resource=nullptr) const; void log(SPLogLevel level, const std::string& msg) const; bool isPriorityEnabled(SPLogLevel level) const; diff --git a/shibsp/Application.h b/shibsp/Application.h index 676b24c..9669a3b 100644 --- a/shibsp/Application.h +++ b/shibsp/Application.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -126,14 +126,14 @@ namespace shibsp { * @param lifetime if non-null, will be populated with a suggested lifetime for the cookie, or 0 if session-bound * @return a pair containing the cookie name and the string to append to the cookie value */ - virtual std::pair getCookieNameProps(const char* prefix, time_t* lifetime=NULL) const; + virtual std::pair getCookieNameProps(const char* prefix, time_t* lifetime=nullptr) const; #ifndef SHIBSP_LITE /** * Returns a MetadataProvider for use with this Application. * * @param required true iff an exception should be thrown if no MetadataProvider is available - * @return a MetadataProvider instance, or NULL + * @return a MetadataProvider instance, or nullptr */ virtual opensaml::saml2md::MetadataProvider* getMetadataProvider(bool required=true) const=0; @@ -141,35 +141,35 @@ namespace shibsp { * Returns a TrustEngine for use with this Application. * * @param required true iff an exception should be thrown if no TrustEngine is available - * @return a TrustEngine instance, or NULL + * @return a TrustEngine instance, or nullptr */ virtual xmltooling::TrustEngine* getTrustEngine(bool required=true) const=0; /** * Returns an AttributeExtractor for use with this Application. * - * @return an AttributeExtractor, or NULL + * @return an AttributeExtractor, or nullptr */ virtual AttributeExtractor* getAttributeExtractor() const=0; /** * Returns an AttributeFilter for use with this Application. * - * @return an AttributeFilter, or NULL + * @return an AttributeFilter, or nullptr */ virtual AttributeFilter* getAttributeFilter() const=0; /** * Returns an AttributeResolver for use with this Application. * - * @return an AttributeResolver, or NULL + * @return an AttributeResolver, or nullptr */ virtual AttributeResolver* getAttributeResolver() const=0; /** * Returns the CredentialResolver instance associated with this Application. * - * @return a CredentialResolver, or NULL + * @return a CredentialResolver, or nullptr */ virtual xmltooling::CredentialResolver* getCredentialResolver() const=0; @@ -193,7 +193,7 @@ namespace shibsp { * @deprecated * Returns any additional audience values associated with this Application. * - * @return additional audience values associated with the Application, or NULL + * @return additional audience values associated with the Application, or nullptr */ virtual const std::vector* getAudiences() const=0; #endif @@ -252,7 +252,7 @@ namespace shibsp { /** * Returns the default SessionInitiator when automatically requesting a session. * - * @return the default SessionInitiator, or NULL + * @return the default SessionInitiator, or nullptr */ virtual const SessionInitiator* getDefaultSessionInitiator() const=0; @@ -260,7 +260,7 @@ namespace shibsp { * Returns a SessionInitiator with a particular ID when automatically requesting a session. * * @param id an identifier unique to the Application - * @return the designated SessionInitiator, or NULL + * @return the designated SessionInitiator, or nullptr */ virtual const SessionInitiator* getSessionInitiatorById(const char* id) const=0; @@ -268,7 +268,7 @@ namespace shibsp { * Returns the default AssertionConsumerService Handler * for use in AuthnRequest messages. * - * @return the default AssertionConsumerService, or NULL + * @return the default AssertionConsumerService, or nullptr */ virtual const Handler* getDefaultAssertionConsumerService() const=0; @@ -277,7 +277,7 @@ namespace shibsp { * for use in AuthnRequest messages. * * @param index an index unique to an application - * @return the designated AssertionConsumerService, or NULL + * @return the designated AssertionConsumerService, or nullptr */ virtual const Handler* getAssertionConsumerServiceByIndex(unsigned short index) const=0; @@ -295,7 +295,7 @@ namespace shibsp { * * @param path the PATH_INFO appended to the end of a base Handler location * that invokes the Handler - * @return the mapped Handler, or NULL + * @return the mapped Handler, or nullptr */ virtual const Handler* getHandler(const char* path) const=0; diff --git a/shibsp/Makefile.am b/shibsp/Makefile.am index 0061c00..334f513 100644 --- a/shibsp/Makefile.am +++ b/shibsp/Makefile.am @@ -235,5 +235,12 @@ paths.h: ${srcdir}/paths.h.in Makefile ${top_builddir}/config.status install-exec-hook: for la in $(lib_LTLIBRARIES) ; do rm -f $(DESTDIR)$(libdir)/$$la ; done -EXTRA_DIST = shibsp.vcproj shibsp-lite.vcproj paths.h.in resource.h shibsp.rc +EXTRA_DIST = \ + shibsp.vcxproj \ + shibsp-lite.vcxproj \ + shibsp.vcxproj.filters \ + shibsp-lite.vcxproj.filters \ + paths.h.in \ + resource.h \ + shibsp.rc BUILT_SOURCES = paths.h diff --git a/shibsp/SPConfig.cpp b/shibsp/SPConfig.cpp index c5c8d4e..7a4585b 100644 --- a/shibsp/SPConfig.cpp +++ b/shibsp/SPConfig.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -98,11 +98,11 @@ SPConfig& SPConfig::getConfig() return g_config; } -SPConfig::SPConfig() : attribute_value_delimeter(';'), m_serviceProvider(NULL), +SPConfig::SPConfig() : attribute_value_delimeter(';'), m_serviceProvider(nullptr), #ifndef SHIBSP_LITE - m_artifactResolver(NULL), + m_artifactResolver(nullptr), #endif - m_features(0), m_configDoc(NULL) + m_features(0), m_configDoc(nullptr) { } @@ -268,7 +268,7 @@ bool SPConfig::init(const char* catalog_path, const char* inst_prefix) if (isEnabled(OutOfProcess)) m_artifactResolver = new ArtifactResolver(); #endif - srand(static_cast(std::time(NULL))); + srand(static_cast(std::time(nullptr))); log.info("%s library initialization complete", PACKAGE_STRING); return true; @@ -282,12 +282,12 @@ void SPConfig::term() Category& log=Category::getInstance(SHIBSP_LOGCAT".Config"); log.info("%s library shutting down", PACKAGE_STRING); - setServiceProvider(NULL); + setServiceProvider(nullptr); if (m_configDoc) m_configDoc->release(); - m_configDoc = NULL; + m_configDoc = nullptr; #ifndef SHIBSP_LITE - setArtifactResolver(NULL); + setArtifactResolver(nullptr); #endif ArtifactResolutionServiceManager.deregisterFactories(); @@ -364,7 +364,7 @@ bool SPConfig::instantiate(const char* config, bool rethrow) dummydoc = XMLToolingConfig::getConfig().getParser().parse(snippet); XercesJanitor docjanitor(dummydoc); static const XMLCh _type[] = UNICODE_LITERAL_4(t,y,p,e); - auto_ptr_char type(dummydoc->getDocumentElement()->getAttributeNS(NULL,_type)); + auto_ptr_char type(dummydoc->getDocumentElement()->getAttributeNS(nullptr,_type)); if (type.get() && *type.get()) setServiceProvider(ServiceProviderManager.newPlugin(type.get(), dummydoc->getDocumentElement())); else diff --git a/shibsp/SPConfig.h b/shibsp/SPConfig.h index 3764eda..e8afff6 100644 --- a/shibsp/SPConfig.h +++ b/shibsp/SPConfig.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,7 +17,7 @@ /** * @file shibsp/SPConfig.h * - * Library configuration + * Library configuration. */ #ifndef __shibsp_config_h__ @@ -124,7 +124,7 @@ namespace shibsp { * @param inst_prefix installation prefix for software * @return true iff initialization was successful */ - virtual bool init(const char* catalog_path=NULL, const char* inst_prefix=NULL); + virtual bool init(const char* catalog_path=nullptr, const char* inst_prefix=nullptr); /** * Shuts down library @@ -146,7 +146,7 @@ namespace shibsp { /** * Returns the global ServiceProvider instance. * - * @return global ServiceProvider or NULL + * @return global ServiceProvider or nullptr */ ServiceProvider* getServiceProvider() const; @@ -158,7 +158,7 @@ namespace shibsp { * @param rethrow true iff caught exceptions should be rethrown instead of just returning the status * @return true iff instantiation was successful */ - virtual bool instantiate(const char* config=NULL, bool rethrow=false); + virtual bool instantiate(const char* config=nullptr, bool rethrow=false); #ifndef SHIBSP_LITE /** @@ -174,7 +174,7 @@ namespace shibsp { /** * Returns the global ArtifactResolver instance. * - * @return global ArtifactResolver or NULL + * @return global ArtifactResolver or nullptr */ const opensaml::MessageDecoder::ArtifactResolver* getArtifactResolver() const; #endif diff --git a/shibsp/SPRequest.h b/shibsp/SPRequest.h index 6ce9eff..af95123 100644 --- a/shibsp/SPRequest.h +++ b/shibsp/SPRequest.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -77,7 +77,7 @@ namespace shibsp { * @param checkTimeout true iff the last-used timestamp should be updated and any timeout policy enforced * @param ignoreAddress true iff all address checking should be ignored, regardless of policy * @param cache true iff the request should hold the Session lock itself and unlock during cleanup - * @return pointer to Session, or NULL + * @return pointer to Session, or nullptr */ virtual Session* getSession(bool checkTimeout=true, bool ignoreAddress=false, bool cache=true)=0; @@ -88,7 +88,7 @@ namespace shibsp { * @param resource resource URL to compute handler for * @return base location of handler */ - virtual const char* getHandlerURL(const char* resource=NULL) const=0; + virtual const char* getHandlerURL(const char* resource=nullptr) const=0; /** * Returns a non-spoofable request header value, if possible. @@ -119,14 +119,14 @@ namespace shibsp { /** * Establish REMOTE_USER identity in request. * - * @param user REMOTE_USER value to set or NULL to clear + * @param user REMOTE_USER value to set or nullptr to clear */ virtual void setRemoteUser(const char* user)=0; /** * Establish AUTH_TYPE for request. * - * @param authtype AUTH_TYPE value to set or NULL to clear + * @param authtype AUTH_TYPE value to set or nullptr to clear */ virtual void setAuthType(const char* authtype); diff --git a/shibsp/ServiceProvider.cpp b/shibsp/ServiceProvider.cpp index fa6ac37..e166771 100644 --- a/shibsp/ServiceProvider.cpp +++ b/shibsp/ServiceProvider.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -56,12 +56,12 @@ namespace shibsp { ) { // The properties we need can be set in the RequestMap, or the Errors element. - bool mderror = dynamic_cast(tp.getRichException())!=NULL; + bool mderror = dynamic_cast(tp.getRichException())!=nullptr; bool accesserror = (strcmp(page, "access")==0); - pair redirectErrors = pair(false,NULL); - pair pathname = pair(false,NULL); + pair redirectErrors = pair(false,nullptr); + pair pathname = pair(false,nullptr); - // Strictly for error handling, detect a NULL application and point at the default. + // Strictly for error handling, detect a nullptr application and point at the default. if (!app) app = request.getServiceProvider().getApplication("default"); @@ -175,7 +175,7 @@ pair ServiceProvider::doAuthentication(SPRequest& request, bool handl #endif Category& log = Category::getInstance(SHIBSP_LOGCAT".ServiceProvider"); - const Application* app=NULL; + const Application* app=nullptr; string targetURL = request.getRequestURL(); try { @@ -239,14 +239,14 @@ pair ServiceProvider::doAuthentication(SPRequest& request, bool handl // Fix for secadv 20050901 clearHeaders(request); - Session* session = NULL; + Session* session = nullptr; try { session = request.getSession(); } catch (exception& e) { log.warn("error during session lookup: %s", e.what()); // If it's not a retryable session failure, we throw to the outer handler for reporting. - if (dynamic_cast(&e)==NULL) + if (dynamic_cast(&e)==nullptr) throw; } @@ -256,7 +256,7 @@ pair ServiceProvider::doAuthentication(SPRequest& request, bool handl return make_pair(true,request.returnOK()); // No session, but we require one. Initiate a new session using the indicated method. - const SessionInitiator* initiator=NULL; + const SessionInitiator* initiator=nullptr; if (requireSessionWith.first) { initiator=app->getSessionInitiatorById(requireSessionWith.second); if (!initiator) { @@ -296,7 +296,7 @@ pair ServiceProvider::doAuthorization(SPRequest& request) const #endif Category& log = Category::getInstance(SHIBSP_LOGCAT".ServiceProvider"); - const Application* app=NULL; + const Application* app=nullptr; string targetURL = request.getRequestURL(); try { @@ -321,7 +321,7 @@ pair ServiceProvider::doAuthorization(SPRequest& request) const // Do we have an access control plugin? if (settings.second) { - const Session* session = NULL; + const Session* session = nullptr; try { session = request.getSession(false); } @@ -367,14 +367,14 @@ pair ServiceProvider::doExport(SPRequest& request, bool requireSessio #endif Category& log = Category::getInstance(SHIBSP_LOGCAT".ServiceProvider"); - const Application* app=NULL; + const Application* app=nullptr; string targetURL = request.getRequestURL(); try { RequestMapper::Settings settings = request.getRequestSettings(); app = &(request.getApplication()); - const Session* session = NULL; + const Session* session = nullptr; try { session = request.getSession(false); } @@ -416,7 +416,7 @@ pair ServiceProvider::doExport(SPRequest& request, bool requireSessio pair exp=settings.first->getBool("exportAssertion"); if (exp.first && exp.second) { const PropertySet* sessions=app->getPropertySet("Sessions"); - pair exportLocation = sessions ? sessions->getString("exportLocation") : pair(false,NULL); + pair exportLocation = sessions ? sessions->getString("exportLocation") : pair(false,nullptr); if (!exportLocation.first) log.warn("can't export assertions without an exportLocation Sessions property"); else { @@ -500,7 +500,7 @@ pair ServiceProvider::doHandler(SPRequest& request) const #endif Category& log = Category::getInstance(SHIBSP_LOGCAT".ServiceProvider"); - const Application* app=NULL; + const Application* app=nullptr; string targetURL = request.getRequestURL(); try { diff --git a/shibsp/ServiceProvider.h b/shibsp/ServiceProvider.h index 2d0694a..2a4e4b7 100644 --- a/shibsp/ServiceProvider.h +++ b/shibsp/ServiceProvider.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -85,8 +85,8 @@ namespace shibsp { /** * Returns a StorageService instance based on an ID. * - * @param id a NULL-terminated key identifying the StorageService to the configuration - * @return a StorageService if available, or NULL + * @param id a nullptr-terminated key identifying the StorageService to the configuration + * @return a StorageService if available, or nullptr */ virtual xmltooling::StorageService* getStorageService(const char* id) const=0; #endif @@ -145,7 +145,7 @@ namespace shibsp { * Returns an Application instance matching the specified ID. * * @param applicationId the ID of the application - * @return pointer to the application, or NULL + * @return pointer to the application, or nullptr */ virtual const Application* getApplication(const char* applicationId) const=0; diff --git a/shibsp/SessionCache.h b/shibsp/SessionCache.h index 38fa126..932f9de 100644 --- a/shibsp/SessionCache.h +++ b/shibsp/SessionCache.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -192,7 +192,7 @@ namespace shibsp { * Returns an assertion cached by the session. * * @param id identifier of the assertion to retrieve - * @return pointer to assertion, or NULL + * @return pointer to assertion, or nullptr */ virtual const opensaml::Assertion* getAssertion(const char* id) const=0; @@ -248,15 +248,15 @@ namespace shibsp { const xmltooling::HTTPRequest& httpRequest, xmltooling::HTTPResponse& httpResponse, time_t expires, - const opensaml::saml2md::EntityDescriptor* issuer=NULL, - const XMLCh* protocol=NULL, - const opensaml::saml2::NameID* nameid=NULL, - const XMLCh* authn_instant=NULL, - const XMLCh* session_index=NULL, - const XMLCh* authncontext_class=NULL, - const XMLCh* authncontext_decl=NULL, - const std::vector* tokens=NULL, - const std::vector* attributes=NULL + const opensaml::saml2md::EntityDescriptor* issuer=nullptr, + const XMLCh* protocol=nullptr, + const opensaml::saml2::NameID* nameid=nullptr, + const XMLCh* authn_instant=nullptr, + const XMLCh* session_index=nullptr, + const XMLCh* authncontext_class=nullptr, + const XMLCh* authncontext_decl=nullptr, + const std::vector* tokens=nullptr, + const std::vector* attributes=nullptr )=0; /** @@ -301,14 +301,14 @@ namespace shibsp { * @param application reference to Application that owns the Session * @param request request from client bound to session * @param client_addr network address of client (if known) - * @param timeout inactivity timeout to enforce (0 for none, NULL to bypass check/update of last access) - * @return pointer to locked Session, or NULL + * @param timeout inactivity timeout to enforce (0 for none, nullptr to bypass check/update of last access) + * @return pointer to locked Session, or nullptr */ virtual Session* find( const Application& application, const xmltooling::HTTPRequest& request, - const char* client_addr=NULL, - time_t* timeout=NULL + const char* client_addr=nullptr, + time_t* timeout=nullptr )=0; /** @@ -323,14 +323,14 @@ namespace shibsp { * @param application reference to Application that owns the Session * @param request request from client bound to session * @param client_addr network address of client (if known) - * @param timeout inactivity timeout to enforce (0 for none, NULL to bypass check/update of last access) - * @return pointer to locked Session, or NULL + * @param timeout inactivity timeout to enforce (0 for none, nullptr to bypass check/update of last access) + * @return pointer to locked Session, or nullptr */ virtual Session* find( const Application& application, xmltooling::HTTPRequest& request, - const char* client_addr=NULL, - time_t* timeout=NULL + const char* client_addr=nullptr, + time_t* timeout=nullptr ); /** @@ -340,7 +340,7 @@ namespace shibsp { * @param request request from client containing session, or a reference to it * @param response optional response to client enabling removal of session or reference */ - virtual void remove(const Application& application, const xmltooling::HTTPRequest& request, xmltooling::HTTPResponse* response=NULL)=0; + virtual void remove(const Application& application, const xmltooling::HTTPRequest& request, xmltooling::HTTPResponse* response=nullptr)=0; }; /** SessionCache implementation backed by a StorageService. */ diff --git a/shibsp/SessionCacheEx.h b/shibsp/SessionCacheEx.h index 61a35fb..7ad21a0 100644 --- a/shibsp/SessionCacheEx.h +++ b/shibsp/SessionCacheEx.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -51,7 +51,7 @@ namespace shibsp { * @param application reference to Application that owns the session(s) * @param issuer source of session(s) * @param nameid name identifier associated with the session(s) to terminate - * @param indexes indexes of sessions, or NULL for all sessions associated with other parameters + * @param indexes indexes of sessions, or nullptr for all sessions associated with other parameters * @param expires logout expiration * @param sessions on exit, contains the IDs of the matching sessions found */ @@ -74,10 +74,10 @@ namespace shibsp { * @param application reference to Application that owns the Session * @param key session key * @param client_addr network address of client (if known) - * @param timeout inactivity timeout to enforce (0 for none, NULL to bypass check/update of last access) - * @return pointer to locked Session, or NULL + * @param timeout inactivity timeout to enforce (0 for none, nullptr to bypass check/update of last access) + * @return pointer to locked Session, or nullptr */ - virtual Session* find(const Application& application, const char* key, const char* client_addr=NULL, time_t* timeout=NULL)=0; + virtual Session* find(const Application& application, const char* key, const char* client_addr=nullptr, time_t* timeout=nullptr)=0; /** * Deletes an existing session. diff --git a/shibsp/attribute/Attribute.cpp b/shibsp/attribute/Attribute.cpp index 8b99f45..ceedaef 100644 --- a/shibsp/attribute/Attribute.cpp +++ b/shibsp/attribute/Attribute.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -92,14 +92,14 @@ void shibsp::registerAttributeDecoders() } AttributeDecoder::AttributeDecoder(const DOMElement *e) - : m_caseSensitive(true), m_internal(false), m_hashAlg(e ? e->getAttributeNS(NULL, hashAlg) : NULL) + : m_caseSensitive(true), m_internal(false), m_hashAlg(e ? e->getAttributeNS(nullptr, hashAlg) : nullptr) { if (e) { - const XMLCh* flag = e->getAttributeNS(NULL, caseSensitive); + const XMLCh* flag = e->getAttributeNS(nullptr, caseSensitive); if (flag && (*flag == chLatin_f || *flag == chDigit_0)) m_caseSensitive = false; - flag = e->getAttributeNS(NULL, internal); + flag = e->getAttributeNS(nullptr, internal); if (flag && (*flag == chLatin_t || *flag == chDigit_1)) m_internal = true; } @@ -128,7 +128,7 @@ Attribute* AttributeDecoder::_decode(Attribute* attr) const newdest.pop_back(); } delete attr; - return newdest.empty() ? NULL : simple.release(); + return newdest.empty() ? nullptr : simple.release(); } } @@ -240,7 +240,7 @@ const char* Attribute::getString(size_t index) const const char* Attribute::getScope(size_t index) const { - return NULL; + return nullptr; } void Attribute::removeValue(size_t index) @@ -251,7 +251,7 @@ void Attribute::removeValue(size_t index) DDF Attribute::marshall() const { - DDF ddf(NULL); + DDF ddf(nullptr); ddf.structure().addmember(m_id.front().c_str()).list(); if (!m_caseSensitive) ddf.addmember("case_insensitive"); @@ -261,7 +261,7 @@ DDF Attribute::marshall() const DDF alias; DDF aliases = ddf.addmember("aliases").list(); for (std::vector::const_iterator a = m_id.begin() + 1; a != m_id.end(); ++a) { - alias = DDF(NULL).string(a->c_str()); + alias = DDF(nullptr).string(a->c_str()); aliases.add(alias); } } diff --git a/shibsp/attribute/Attribute.h b/shibsp/attribute/Attribute.h index 39dae79..c734909 100644 --- a/shibsp/attribute/Attribute.h +++ b/shibsp/attribute/Attribute.h @@ -154,7 +154,7 @@ namespace shibsp { * Gets the string equivalent of the value at the specified position (starting from zero). * * @param index position of value - * @return the specified value in its "string" form, or NULL if undefined + * @return the specified value in its "string" form, or nullptr if undefined */ virtual const char* getString(size_t index) const; @@ -162,7 +162,7 @@ namespace shibsp { * Gets the "scope" of the value at the specified position (starting from zero). * * @param index position of value - * @return the specified value's "scope", or NULL if attribute is unscoped + * @return the specified value's "scope", or nullptr if attribute is unscoped */ virtual const char* getScope(size_t index) const; diff --git a/shibsp/attribute/AttributeDecoder.h b/shibsp/attribute/AttributeDecoder.h index a4ffd04..c5c9764 100644 --- a/shibsp/attribute/AttributeDecoder.h +++ b/shibsp/attribute/AttributeDecoder.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -78,13 +78,13 @@ namespace shibsp { * @param xmlObject XMLObject to decode * @param assertingParty name of the party asserting the attribute * @param relyingParty name of the party relying on the attribute - * @return a resolved Attribute, or NULL + * @return a resolved Attribute, or nullptr */ virtual Attribute* decode( const std::vector& ids, const xmltooling::XMLObject* xmlObject, - const char* assertingParty=NULL, - const char* relyingParty=NULL + const char* assertingParty=nullptr, + const char* relyingParty=nullptr ) const=0; }; diff --git a/shibsp/attribute/DOMAttributeDecoder.cpp b/shibsp/attribute/DOMAttributeDecoder.cpp index d996be3..33509e3 100644 --- a/shibsp/attribute/DOMAttributeDecoder.cpp +++ b/shibsp/attribute/DOMAttributeDecoder.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2009 Internet2 + * Copyright 2009-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -41,7 +41,7 @@ namespace shibsp { ~DOMAttributeDecoder() {} Attribute* decode( - const vector& ids, const XMLObject* xmlObject, const char* assertingParty=NULL, const char* relyingParty=NULL + const vector& ids, const XMLObject* xmlObject, const char* assertingParty=nullptr, const char* relyingParty=nullptr ) const; private: @@ -62,15 +62,15 @@ namespace shibsp { }; DOMAttributeDecoder::DOMAttributeDecoder(const DOMElement* e) - : AttributeDecoder(e), m_formatter(e ? e->getAttributeNS(NULL,formatter) : NULL) + : AttributeDecoder(e), m_formatter(e ? e->getAttributeNS(nullptr,formatter) : nullptr) { Category& log = Category::getInstance(SHIBSP_LOGCAT".AttributeDecoder.DOM"); - e = e ? XMLHelper::getFirstChildElement(e, Mapping) : NULL; + e = e ? XMLHelper::getFirstChildElement(e, Mapping) : nullptr; while (e) { - if (e->hasAttributeNS(NULL, _from) && e->hasAttributeNS(NULL, _to)) { - auto_ptr f(XMLHelper::getNodeValueAsQName(e->getAttributeNodeNS(NULL, _from))); - auto_ptr_char t(e->getAttributeNS(NULL, _to)); + if (e->hasAttributeNS(nullptr, _from) && e->hasAttributeNS(nullptr, _to)) { + auto_ptr f(XMLHelper::getNodeValueAsQName(e->getAttributeNodeNS(nullptr, _from))); + auto_ptr_char t(e->getAttributeNS(nullptr, _to)); if (f.get() && t.get() && *t.get()) { if (log.isDebugEnabled()) log.debug("mapping (%s) to (%s)", f->toString().c_str(), t.get()); @@ -94,7 +94,7 @@ Attribute* DOMAttributeDecoder::decode( if (!xmlObject || !XMLString::equals(saml1::Attribute::LOCAL_NAME, xmlObject->getElementQName().getLocalPart())) { log.warn("XMLObject type not recognized by DOMAttributeDecoder, no values returned"); - return NULL; + return nullptr; } auto_ptr attr(new ExtensibleAttribute(ids, m_formatter.get())); @@ -130,7 +130,7 @@ Attribute* DOMAttributeDecoder::decode( } else { log.warn("XMLObject type not recognized by DOMAttributeDecoder, no values returned"); - return NULL; + return nullptr; } } @@ -145,7 +145,7 @@ Attribute* DOMAttributeDecoder::decode( log.warn("skipping AttributeValue without a backing DOM"); } - return dest.integer() ? _decode(attr.release()) : NULL; + return dest.integer() ? _decode(attr.release()) : nullptr; } DDF DOMAttributeDecoder::convert(DOMElement* e, bool nameit) const @@ -153,7 +153,7 @@ DDF DOMAttributeDecoder::convert(DOMElement* e, bool nameit) const const XMLCh* nsURI; const XMLCh* local; map,string>::const_iterator mapping; - DDF obj = DDF(NULL).structure(); + DDF obj = DDF(nullptr).structure(); if (nameit) { // Name this structure. diff --git a/shibsp/attribute/ExtensibleAttribute.cpp b/shibsp/attribute/ExtensibleAttribute.cpp index cede806..ad04d98 100644 --- a/shibsp/attribute/ExtensibleAttribute.cpp +++ b/shibsp/attribute/ExtensibleAttribute.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2009 Internet2 + * Copyright 2009-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -73,7 +73,7 @@ const char* ExtensibleAttribute::getString(size_t index) const const char* ExtensibleAttribute::getScope(size_t index) const { - return NULL; + return nullptr; } void ExtensibleAttribute::removeValue(size_t index) diff --git a/shibsp/attribute/KeyInfoAttributeDecoder.cpp b/shibsp/attribute/KeyInfoAttributeDecoder.cpp index 741d5da..c9e966e 100644 --- a/shibsp/attribute/KeyInfoAttributeDecoder.cpp +++ b/shibsp/attribute/KeyInfoAttributeDecoder.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2009 Internet2 + * Copyright 2009-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -48,7 +48,7 @@ namespace shibsp { } Attribute* decode( - const vector& ids, const XMLObject* xmlObject, const char* assertingParty=NULL, const char* relyingParty=NULL + const vector& ids, const XMLObject* xmlObject, const char* assertingParty=nullptr, const char* relyingParty=nullptr ) const; private: @@ -59,7 +59,7 @@ namespace shibsp { if (!alg || !*alg) alg = "SHA1"; dest.push_back(string()); - dest.back() = SecurityHelper::getDEREncoding(*cred.get(), m_hash ? alg : NULL); + dest.back() = SecurityHelper::getDEREncoding(*cred.get(), m_hash ? alg : nullptr); if (dest.back().empty()) dest.pop_back(); } @@ -88,13 +88,13 @@ namespace shibsp { KeyInfoAttributeDecoder::KeyInfoAttributeDecoder(const DOMElement* e) : AttributeDecoder(e), m_hash(false), - m_keyInfoHashAlg(e ? e->getAttributeNS(NULL, keyInfoHashAlg) : NULL), - m_keyInfoResolver(NULL) { - const XMLCh* flag = e ? e->getAttributeNS(NULL, _hash) : NULL; + m_keyInfoHashAlg(e ? e->getAttributeNS(nullptr, keyInfoHashAlg) : nullptr), + m_keyInfoResolver(nullptr) { + const XMLCh* flag = e ? e->getAttributeNS(nullptr, _hash) : nullptr; m_hash = (flag && (*flag == chLatin_t || *flag == chDigit_1)); - e = e ? XMLHelper::getFirstChildElement(e,_KeyInfoResolver) : NULL; + e = e ? XMLHelper::getFirstChildElement(e,_KeyInfoResolver) : nullptr; if (e) { - auto_ptr_char t(e->getAttributeNS(NULL, _type)); + auto_ptr_char t(e->getAttributeNS(nullptr, _type)); if (t.get() && *t.get()) m_keyInfoResolver = XMLToolingConfig::getConfig().KeyInfoResolverManager.newPlugin(t.get(), e); else @@ -110,7 +110,7 @@ Attribute* KeyInfoAttributeDecoder::decode( if (!xmlObject || !XMLString::equals(saml1::Attribute::LOCAL_NAME, xmlObject->getElementQName().getLocalPart())) { log.warn("XMLObject type not recognized by KeyInfoAttributeDecoder, no values returned"); - return NULL; + return nullptr; } auto_ptr attr(new SimpleAttribute(ids)); @@ -146,7 +146,7 @@ Attribute* KeyInfoAttributeDecoder::decode( } else { log.warn("XMLObject type not recognized by KeyInfoAttributeDecoder, no values returned"); - return NULL; + return nullptr; } } @@ -165,5 +165,5 @@ Attribute* KeyInfoAttributeDecoder::decode( } } - return dest.empty() ? NULL : _decode(attr.release()); + return dest.empty() ? nullptr : _decode(attr.release()); } diff --git a/shibsp/attribute/NameIDAttributeDecoder.cpp b/shibsp/attribute/NameIDAttributeDecoder.cpp index 82ff313..6b03fae 100644 --- a/shibsp/attribute/NameIDAttributeDecoder.cpp +++ b/shibsp/attribute/NameIDAttributeDecoder.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,7 +17,7 @@ /** * NameIDAttributeDecoder.cpp * - * Decodes SAML into NameIDAttributes + * Decodes SAML into NameIDAttributes. */ #include "internal.h" @@ -41,15 +41,15 @@ namespace shibsp { { public: NameIDAttributeDecoder(const DOMElement* e) - : AttributeDecoder(e), m_formatter(e ? e->getAttributeNS(NULL, formatter) : NULL), m_defaultQualifiers(false) { - const XMLCh* flag = e ? e->getAttributeNS(NULL, defaultQualifiers) : NULL; + : AttributeDecoder(e), m_formatter(e ? e->getAttributeNS(nullptr, formatter) : nullptr), m_defaultQualifiers(false) { + const XMLCh* flag = e ? e->getAttributeNS(nullptr, defaultQualifiers) : nullptr; if (flag && (*flag == chLatin_t || *flag == chDigit_1)) m_defaultQualifiers = true; } ~NameIDAttributeDecoder() {} shibsp::Attribute* decode( - const vector& ids, const XMLObject* xmlObject, const char* assertingParty=NULL, const char* relyingParty=NULL + const vector& ids, const XMLObject* xmlObject, const char* assertingParty=nullptr, const char* relyingParty=nullptr ) const; private: @@ -111,7 +111,7 @@ shibsp::Attribute* NameIDAttributeDecoder::decode( } else { log.warn("XMLObject type not recognized by NameIDAttributeDecoder, no values returned"); - return NULL; + return nullptr; } } @@ -137,7 +137,7 @@ shibsp::Attribute* NameIDAttributeDecoder::decode( } } - return dest.empty() ? NULL : _decode(nameid.release()); + return dest.empty() ? nullptr : _decode(nameid.release()); } const NameIDType* saml2name = dynamic_cast(xmlObject); @@ -162,11 +162,11 @@ shibsp::Attribute* NameIDAttributeDecoder::decode( } else { log.warn("XMLObject type not recognized by NameIDAttributeDecoder, no values returned"); - return NULL; + return nullptr; } } - return dest.empty() ? NULL : _decode(nameid.release()); + return dest.empty() ? nullptr : _decode(nameid.release()); } void NameIDAttributeDecoder::extract( diff --git a/shibsp/attribute/NameIDFromScopedAttributeDecoder.cpp b/shibsp/attribute/NameIDFromScopedAttributeDecoder.cpp index ab72dfb..1751341 100644 --- a/shibsp/attribute/NameIDFromScopedAttributeDecoder.cpp +++ b/shibsp/attribute/NameIDFromScopedAttributeDecoder.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -46,21 +46,21 @@ namespace shibsp { NameIDFromScopedAttributeDecoder(const DOMElement* e) : AttributeDecoder(e), m_delimeter('@'), - m_format(e ? e->getAttributeNS(NULL,format) : NULL), - m_formatter(e ? e->getAttributeNS(NULL,formatter) : NULL), + m_format(e ? e->getAttributeNS(nullptr,format) : nullptr), + m_formatter(e ? e->getAttributeNS(nullptr,formatter) : nullptr), m_defaultQualifiers(false) { - if (e && e->hasAttributeNS(NULL,scopeDelimeter)) { - auto_ptr_char d(e->getAttributeNS(NULL,scopeDelimeter)); + if (e && e->hasAttributeNS(nullptr,scopeDelimeter)) { + auto_ptr_char d(e->getAttributeNS(nullptr,scopeDelimeter)); m_delimeter = *(d.get()); } - const XMLCh* flag = e ? e->getAttributeNS(NULL, defaultQualifiers) : NULL; + const XMLCh* flag = e ? e->getAttributeNS(nullptr, defaultQualifiers) : nullptr; if (flag && (*flag == chLatin_t || *flag == chDigit_1)) m_defaultQualifiers = true; } ~NameIDFromScopedAttributeDecoder() {} shibsp::Attribute* decode( - const vector& ids, const XMLObject* xmlObject, const char* assertingParty=NULL, const char* relyingParty=NULL + const vector& ids, const XMLObject* xmlObject, const char* assertingParty=nullptr, const char* relyingParty=nullptr ) const; private: @@ -84,7 +84,7 @@ shibsp::Attribute* NameIDFromScopedAttributeDecoder::decode( char* val; char* scope; const XMLCh* xmlscope; - xmltooling::QName scopeqname(NULL,Scope); + xmltooling::QName scopeqname(nullptr,Scope); auto_ptr nameid( new NameIDAttribute(ids, (m_formatter.get() && *m_formatter.get()) ? m_formatter.get() : DEFAULT_NAMEID_FORMATTER) ); @@ -123,7 +123,7 @@ shibsp::Attribute* NameIDFromScopedAttributeDecoder::decode( } else { log.warn("XMLObject type not recognized by NameIDFromScopedAttributeDecoder, no values returned"); - return NULL; + return nullptr; } } @@ -134,7 +134,7 @@ shibsp::Attribute* NameIDFromScopedAttributeDecoder::decode( dest.push_back(NameIDAttribute::Value()); NameIDAttribute::Value& destval = dest.back(); const AttributeExtensibleXMLObject* aexo=dynamic_cast(*v); - xmlscope = aexo ? aexo->getAttribute(scopeqname) : NULL; + xmlscope = aexo ? aexo->getAttribute(scopeqname) : nullptr; if (!xmlscope || !*xmlscope) { // Terminate the value at the scope delimiter. if (scope = strchr(val, m_delimeter)) @@ -158,9 +158,9 @@ shibsp::Attribute* NameIDFromScopedAttributeDecoder::decode( } } - return dest.empty() ? NULL : _decode(nameid.release()); + return dest.empty() ? nullptr : _decode(nameid.release()); } log.warn("XMLObject type not recognized by NameIDFromScopedAttributeDecoder, no values returned"); - return NULL; + return nullptr; } diff --git a/shibsp/attribute/ScopedAttributeDecoder.cpp b/shibsp/attribute/ScopedAttributeDecoder.cpp index 424ee7c..42ffd25 100644 --- a/shibsp/attribute/ScopedAttributeDecoder.cpp +++ b/shibsp/attribute/ScopedAttributeDecoder.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -41,15 +41,15 @@ namespace shibsp { { public: ScopedAttributeDecoder(const DOMElement* e) : AttributeDecoder(e), m_delimiter('@') { - if (e && e->hasAttributeNS(NULL,scopeDelimiter)) { - auto_ptr_char d(e->getAttributeNS(NULL,scopeDelimiter)); + if (e && e->hasAttributeNS(nullptr,scopeDelimiter)) { + auto_ptr_char d(e->getAttributeNS(nullptr,scopeDelimiter)); m_delimiter = *(d.get()); } } ~ScopedAttributeDecoder() {} shibsp::Attribute* decode( - const vector& ids, const XMLObject* xmlObject, const char* assertingParty=NULL, const char* relyingParty=NULL + const vector& ids, const XMLObject* xmlObject, const char* assertingParty=nullptr, const char* relyingParty=nullptr ) const; private: @@ -69,7 +69,7 @@ shibsp::Attribute* ScopedAttributeDecoder::decode( char* val; char* scope; const XMLCh* xmlscope; - xmltooling::QName scopeqname(NULL,Scope); + xmltooling::QName scopeqname(nullptr,Scope); auto_ptr scoped(new ScopedAttribute(ids, m_delimiter)); vector< pair >& dest = scoped->getValues(); vector::const_iterator v,stop; @@ -106,7 +106,7 @@ shibsp::Attribute* ScopedAttributeDecoder::decode( } else { log.warn("XMLObject type not recognized by ScopedAttributeDecoder, no values returned"); - return NULL; + return nullptr; } } @@ -115,7 +115,7 @@ shibsp::Attribute* ScopedAttributeDecoder::decode( val = toUTF8((*v)->getTextContent()); if (val && *val) { const AttributeExtensibleXMLObject* aexo=dynamic_cast(*v); - xmlscope = aexo ? aexo->getAttribute(scopeqname) : NULL; + xmlscope = aexo ? aexo->getAttribute(scopeqname) : nullptr; if (xmlscope && *xmlscope) { scope = toUTF8(xmlscope); dest.push_back(pair(val,scope)); @@ -145,7 +145,7 @@ shibsp::Attribute* ScopedAttributeDecoder::decode( } } - return dest.empty() ? NULL : _decode(scoped.release()); + return dest.empty() ? nullptr : _decode(scoped.release()); } const NameID* saml2name = dynamic_cast(xmlObject); @@ -170,7 +170,7 @@ shibsp::Attribute* ScopedAttributeDecoder::decode( } else { log.warn("XMLObject type not recognized by ScopedAttributeDecoder, no values returned"); - return NULL; + return nullptr; } } @@ -191,5 +191,5 @@ shibsp::Attribute* ScopedAttributeDecoder::decode( log.warn("ignoring empty NameID"); } delete[] val; - return dest.empty() ? NULL : _decode(scoped.release()); + return dest.empty() ? nullptr : _decode(scoped.release()); } diff --git a/shibsp/attribute/SimpleAttribute.cpp b/shibsp/attribute/SimpleAttribute.cpp index 11af5c8..1a5c394 100644 --- a/shibsp/attribute/SimpleAttribute.cpp +++ b/shibsp/attribute/SimpleAttribute.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2009 Internet2 + * Copyright 2009-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -64,6 +64,6 @@ DDF SimpleAttribute::marshall() const DDF ddf = Attribute::marshall(); DDF vlist = ddf.first(); for (vector::const_iterator i=m_serialized.begin(); i!=m_serialized.end(); ++i) - vlist.add(DDF(NULL).string(i->c_str())); + vlist.add(DDF(nullptr).string(i->c_str())); return ddf; } diff --git a/shibsp/attribute/StringAttributeDecoder.cpp b/shibsp/attribute/StringAttributeDecoder.cpp index c19fc6b..2abb399 100644 --- a/shibsp/attribute/StringAttributeDecoder.cpp +++ b/shibsp/attribute/StringAttributeDecoder.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,7 +17,7 @@ /** * StringAttributeDecoder.cpp * - * Decodes SAML into SimpleAttributes + * Decodes SAML into SimpleAttributes. */ #include "internal.h" @@ -41,7 +41,7 @@ namespace shibsp { ~StringAttributeDecoder() {} shibsp::Attribute* decode( - const vector& ids, const XMLObject* xmlObject, const char* assertingParty=NULL, const char* relyingParty=NULL + const vector& ids, const XMLObject* xmlObject, const char* assertingParty=nullptr, const char* relyingParty=nullptr ) const; }; @@ -92,7 +92,7 @@ shibsp::Attribute* StringAttributeDecoder::decode( } else { log.warn("XMLObject type not recognized by StringAttributeDecoder, no values returned"); - return NULL; + return nullptr; } } @@ -110,7 +110,7 @@ shibsp::Attribute* StringAttributeDecoder::decode( } } - return dest.empty() ? NULL : _decode(simple.release()); + return dest.empty() ? nullptr : _decode(simple.release()); } const NameID* saml2name = dynamic_cast(xmlObject); @@ -135,7 +135,7 @@ shibsp::Attribute* StringAttributeDecoder::decode( } else { log.warn("XMLObject type not recognized by StringAttributeDecoder, no values returned"); - return NULL; + return nullptr; } } @@ -144,5 +144,5 @@ shibsp::Attribute* StringAttributeDecoder::decode( else log.warn("ignoring empty NameID"); delete[] val; - return dest.empty() ? NULL : _decode(simple.release()); + return dest.empty() ? nullptr : _decode(simple.release()); } diff --git a/shibsp/attribute/XMLAttribute.cpp b/shibsp/attribute/XMLAttribute.cpp index 38bc13d..79db4f2 100644 --- a/shibsp/attribute/XMLAttribute.cpp +++ b/shibsp/attribute/XMLAttribute.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2009 Internet2 + * Copyright 2009-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -117,6 +117,6 @@ DDF XMLAttribute::marshall() const ddf.name("XML"); DDF vlist = ddf.first(); for (vector::const_iterator i=m_values.begin(); i!=m_values.end(); ++i) - vlist.add(DDF(NULL).string(i->c_str())); + vlist.add(DDF(nullptr).string(i->c_str())); return ddf; } diff --git a/shibsp/attribute/XMLAttributeDecoder.cpp b/shibsp/attribute/XMLAttributeDecoder.cpp index 4c99938..8c192c5 100644 --- a/shibsp/attribute/XMLAttributeDecoder.cpp +++ b/shibsp/attribute/XMLAttributeDecoder.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2009 Internet2 + * Copyright 2009-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -41,7 +41,7 @@ namespace shibsp { ~XMLAttributeDecoder() {} Attribute* decode( - const vector& ids, const XMLObject* xmlObject, const char* assertingParty=NULL, const char* relyingParty=NULL + const vector& ids, const XMLObject* xmlObject, const char* assertingParty=nullptr, const char* relyingParty=nullptr ) const; private: @@ -62,7 +62,7 @@ Attribute* XMLAttributeDecoder::decode( ) const { if (!xmlObject) - return NULL; + return nullptr; Category& log = Category::getInstance(SHIBSP_LOGCAT".AttributeDecoder.XML"); @@ -86,7 +86,7 @@ Attribute* XMLAttributeDecoder::decode( else { log.warn("skipping XMLObject without a backing DOM"); } - return dest.empty() ? NULL : _decode(attr.release()); + return dest.empty() ? nullptr : _decode(attr.release()); } vector::const_iterator v,stop; @@ -120,7 +120,7 @@ Attribute* XMLAttributeDecoder::decode( } else { log.warn("XMLObject type not recognized by XMLAttributeDecoder, no values returned"); - return NULL; + return nullptr; } } @@ -134,5 +134,5 @@ Attribute* XMLAttributeDecoder::decode( log.warn("skipping AttributeValue without a backing DOM"); } - return dest.empty() ? NULL : _decode(attr.release()); + return dest.empty() ? nullptr : _decode(attr.release()); } diff --git a/shibsp/attribute/filtering/BasicFilteringContext.h b/shibsp/attribute/filtering/BasicFilteringContext.h index 888a324..636e8fa 100644 --- a/shibsp/attribute/filtering/BasicFilteringContext.h +++ b/shibsp/attribute/filtering/BasicFilteringContext.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -44,9 +44,9 @@ namespace shibsp { BasicFilteringContext( const Application& app, const std::vector& attributes, - const opensaml::saml2md::RoleDescriptor* role=NULL, - const XMLCh* authncontext_class=NULL, - const XMLCh* authncontext_decl=NULL + const opensaml::saml2md::RoleDescriptor* role=nullptr, + const XMLCh* authncontext_class=nullptr, + const XMLCh* authncontext_decl=nullptr ); virtual ~BasicFilteringContext(); diff --git a/shibsp/attribute/filtering/FilteringContext.h b/shibsp/attribute/filtering/FilteringContext.h index 422a725..012c1a6 100644 --- a/shibsp/attribute/filtering/FilteringContext.h +++ b/shibsp/attribute/filtering/FilteringContext.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -76,28 +76,28 @@ namespace shibsp { /** * Gets the ID of the requester of the attributes, if known. * - * @return requester of the attributes, or NULL + * @return requester of the attributes, or nullptr */ virtual const XMLCh* getAttributeRequester() const=0; /** * Gets the ID of the issuer of the attributes, if known. * - * @return ID of the issuer of the attributes, or NULL + * @return ID of the issuer of the attributes, or nullptr */ virtual const XMLCh* getAttributeIssuer() const=0; /** * Gets the SAML metadata for the attribute requesting role, if available. * - * @return SAML metadata for the attribute requesting role, or NULL + * @return SAML metadata for the attribute requesting role, or nullptr */ virtual const opensaml::saml2md::RoleDescriptor* getAttributeRequesterMetadata() const=0; /** * Gets the SAML metadata for the attribute issuing role, if available. * - * @return SAML metadata for the attribute issuing role, or NULL + * @return SAML metadata for the attribute issuing role, or nullptr */ virtual const opensaml::saml2md::RoleDescriptor* getAttributeIssuerMetadata() const=0; diff --git a/shibsp/attribute/filtering/impl/AndMatchFunctor.cpp b/shibsp/attribute/filtering/impl/AndMatchFunctor.cpp index 828071d..fc84e25 100644 --- a/shibsp/attribute/filtering/impl/AndMatchFunctor.cpp +++ b/shibsp/attribute/filtering/impl/AndMatchFunctor.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -83,15 +83,15 @@ AndMatchFunctor::AndMatchFunctor(const pairgetAttributeNS(NULL, _ref)); + auto_ptr_char ref(e->getAttributeNS(nullptr, _ref)); if (ref.get() && *ref.get()) { multimap::const_iterator rule = p.first->getMatchFunctors().find(ref.get()); - func = (rule!=p.first->getMatchFunctors().end()) ? rule->second : NULL; + func = (rule!=p.first->getMatchFunctors().end()) ? rule->second : nullptr; } } @@ -105,7 +105,7 @@ AndMatchFunctor::AndMatchFunctor(const pairgetAttributeNS(NULL,_id)); + auto_ptr_char temp(e->getAttributeNS(nullptr,_id)); const char* id = (temp.get() && *temp.get()) ? temp.get() : ""; if (*id && functorMap->getMatchFunctors().count(id)) id = ""; diff --git a/shibsp/attribute/filtering/impl/AttributeIssuerInEntityGroupFunctor.cpp b/shibsp/attribute/filtering/impl/AttributeIssuerInEntityGroupFunctor.cpp index 9701023..c85fcf6 100644 --- a/shibsp/attribute/filtering/impl/AttributeIssuerInEntityGroupFunctor.cpp +++ b/shibsp/attribute/filtering/impl/AttributeIssuerInEntityGroupFunctor.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -44,7 +44,7 @@ namespace shibsp { const XMLCh* m_group; public: AttributeIssuerInEntityGroupFunctor(const DOMElement* e) { - m_group = e ? e->getAttributeNS(NULL,groupID) : NULL; + m_group = e ? e->getAttributeNS(nullptr,groupID) : nullptr; if (!m_group || !*m_group) throw ConfigurationException("AttributeIssuerInEntityGroup MatchFunctor requires non-empty groupID attribute."); } diff --git a/shibsp/attribute/filtering/impl/AttributeIssuerRegexFunctor.cpp b/shibsp/attribute/filtering/impl/AttributeIssuerRegexFunctor.cpp index b421a11..fa1d029 100644 --- a/shibsp/attribute/filtering/impl/AttributeIssuerRegexFunctor.cpp +++ b/shibsp/attribute/filtering/impl/AttributeIssuerRegexFunctor.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -43,11 +43,11 @@ namespace shibsp { RegularExpression* m_regex; public: AttributeIssuerRegexFunctor(const DOMElement* e) { - const XMLCh* r = e ? e->getAttributeNS(NULL,regex) : NULL; + const XMLCh* r = e ? e->getAttributeNS(nullptr,regex) : nullptr; if (!r || !*r) throw ConfigurationException("AttributeIssuerRegex MatchFunctor requires non-empty regex attribute."); try { - m_regex = new RegularExpression(r, e->getAttributeNS(NULL,options)); + m_regex = new RegularExpression(r, e->getAttributeNS(nullptr,options)); } catch (XMLException& ex) { xmltooling::auto_ptr_char temp(ex.getMessage()); diff --git a/shibsp/attribute/filtering/impl/AttributeIssuerStringFunctor.cpp b/shibsp/attribute/filtering/impl/AttributeIssuerStringFunctor.cpp index e4cb12d..220ac8a 100644 --- a/shibsp/attribute/filtering/impl/AttributeIssuerStringFunctor.cpp +++ b/shibsp/attribute/filtering/impl/AttributeIssuerStringFunctor.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -40,10 +40,10 @@ namespace shibsp { bool m_ignoreCase; public: AttributeIssuerStringFunctor(const DOMElement* e) { - m_value = e ? e->getAttributeNS(NULL,value) : NULL; + m_value = e ? e->getAttributeNS(nullptr,value) : nullptr; if (!m_value || !*m_value) throw ConfigurationException("AttributeIssuerString MatchFunctor requires non-empty value attribute."); - const XMLCh* flag = e ? e->getAttributeNS(NULL,ignoreCase) : NULL; + const XMLCh* flag = e ? e->getAttributeNS(nullptr,ignoreCase) : nullptr; m_ignoreCase = (flag && (*flag == chLatin_t || *flag == chDigit_1)); } diff --git a/shibsp/attribute/filtering/impl/AttributeRequesterInEntityGroupFunctor.cpp b/shibsp/attribute/filtering/impl/AttributeRequesterInEntityGroupFunctor.cpp index 8c37255..e03c12a 100644 --- a/shibsp/attribute/filtering/impl/AttributeRequesterInEntityGroupFunctor.cpp +++ b/shibsp/attribute/filtering/impl/AttributeRequesterInEntityGroupFunctor.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -44,7 +44,7 @@ namespace shibsp { const XMLCh* m_group; public: AttributeRequesterInEntityGroupFunctor(const DOMElement* e) { - m_group = e ? e->getAttributeNS(NULL,groupID) : NULL; + m_group = e ? e->getAttributeNS(nullptr,groupID) : nullptr; if (!m_group || !*m_group) throw ConfigurationException("AttributeRequesterInEntityGroup MatchFunctor requires non-empty groupID attribute."); } diff --git a/shibsp/attribute/filtering/impl/AttributeRequesterRegexFunctor.cpp b/shibsp/attribute/filtering/impl/AttributeRequesterRegexFunctor.cpp index 171a898..b169394 100644 --- a/shibsp/attribute/filtering/impl/AttributeRequesterRegexFunctor.cpp +++ b/shibsp/attribute/filtering/impl/AttributeRequesterRegexFunctor.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -43,11 +43,11 @@ namespace shibsp { RegularExpression* m_regex; public: AttributeRequesterRegexFunctor(const DOMElement* e) { - const XMLCh* r = e ? e->getAttributeNS(NULL,regex) : NULL; + const XMLCh* r = e ? e->getAttributeNS(nullptr,regex) : nullptr; if (!r || !*r) throw ConfigurationException("AttributeRequesterRegex MatchFunctor requires non-empty regex attribute."); try { - m_regex = new RegularExpression(r, e->getAttributeNS(NULL,options)); + m_regex = new RegularExpression(r, e->getAttributeNS(nullptr,options)); } catch (XMLException& ex) { xmltooling::auto_ptr_char temp(ex.getMessage()); diff --git a/shibsp/attribute/filtering/impl/AttributeRequesterStringFunctor.cpp b/shibsp/attribute/filtering/impl/AttributeRequesterStringFunctor.cpp index 82cb30f..ee7a481 100644 --- a/shibsp/attribute/filtering/impl/AttributeRequesterStringFunctor.cpp +++ b/shibsp/attribute/filtering/impl/AttributeRequesterStringFunctor.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -40,10 +40,10 @@ namespace shibsp { bool m_ignoreCase; public: AttributeRequesterStringFunctor(const DOMElement* e) { - m_value = e ? e->getAttributeNS(NULL,value) : NULL; + m_value = e ? e->getAttributeNS(nullptr,value) : nullptr; if (!m_value || !*m_value) throw ConfigurationException("AttributeRequesterString MatchFunctor requires non-empty value attribute."); - const XMLCh* flag = e ? e->getAttributeNS(NULL,ignoreCase) : NULL; + const XMLCh* flag = e ? e->getAttributeNS(nullptr,ignoreCase) : nullptr; m_ignoreCase = (flag && (*flag == chLatin_t || *flag == chDigit_1)); } diff --git a/shibsp/attribute/filtering/impl/AttributeScopeMatchesShibMDScopeFunctor.cpp b/shibsp/attribute/filtering/impl/AttributeScopeMatchesShibMDScopeFunctor.cpp index 5f57d71..96bf8dc 100644 --- a/shibsp/attribute/filtering/impl/AttributeScopeMatchesShibMDScopeFunctor.cpp +++ b/shibsp/attribute/filtering/impl/AttributeScopeMatchesShibMDScopeFunctor.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,7 +17,8 @@ /** * AttributeScopeMatchesShibMDScopeFunctor.cpp * - * A match function that ensures that an attributes value's scope matches a scope given in metadata for the entity or role. + * A match function that ensures that an attributes value's scope matches + * a scope given in metadata for the entity or role. */ #include "internal.h" @@ -59,7 +60,7 @@ namespace shibsp { return false; const Scope* rule; - const XMLCh* widescope=NULL; + const XMLCh* widescope=nullptr; const Extensions* ext = issuer->getExtensions(); if (ext) { const vector& exts = ext->getUnknownXMLObjects(); diff --git a/shibsp/attribute/filtering/impl/AttributeScopeRegexFunctor.cpp b/shibsp/attribute/filtering/impl/AttributeScopeRegexFunctor.cpp index 3b33ac1..b4470b0 100644 --- a/shibsp/attribute/filtering/impl/AttributeScopeRegexFunctor.cpp +++ b/shibsp/attribute/filtering/impl/AttributeScopeRegexFunctor.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,7 +17,8 @@ /** * AttributeScopeRegexFunctor.cpp * - * A match function that evaluates an attribute value's scope against the provided regular expression. + * A match function that evaluates an attribute value's scope against the + * provided regular expression. */ #include "internal.h" @@ -51,12 +52,12 @@ namespace shibsp { public: AttributeScopeRegexFunctor(const DOMElement* e) - : m_attributeID(e ? e->getAttributeNS(NULL,attributeID) : NULL) { - const XMLCh* r = e ? e->getAttributeNS(NULL,regex) : NULL; + : m_attributeID(e ? e->getAttributeNS(nullptr,attributeID) : nullptr) { + const XMLCh* r = e ? e->getAttributeNS(nullptr,regex) : nullptr; if (!r || !*r) throw ConfigurationException("AttributeScopeRegex MatchFunctor requires non-empty regex attribute."); try { - m_regex = new RegularExpression(r, e->getAttributeNS(NULL,options)); + m_regex = new RegularExpression(r, e->getAttributeNS(nullptr,options)); } catch (XMLException& ex) { xmltooling::auto_ptr_char temp(ex.getMessage()); diff --git a/shibsp/attribute/filtering/impl/AttributeScopeStringFunctor.cpp b/shibsp/attribute/filtering/impl/AttributeScopeStringFunctor.cpp index 9a1cdfc..a62121d 100644 --- a/shibsp/attribute/filtering/impl/AttributeScopeStringFunctor.cpp +++ b/shibsp/attribute/filtering/impl/AttributeScopeStringFunctor.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,7 +17,8 @@ /** * AttributeScopeStringFunctor.cpp * - * A match function that matches the scope of an attribute value against the specified value. + * A match function that matches the scope of an attribute value against + * the specified value. */ #include "internal.h" @@ -49,12 +50,12 @@ namespace shibsp { public: AttributeScopeStringFunctor(const DOMElement* e) - : m_value(e ? xmltooling::toUTF8(e->getAttributeNS(NULL,value)) : NULL), m_attributeID(e ? e->getAttributeNS(NULL,attributeID) : NULL) { + : m_value(e ? xmltooling::toUTF8(e->getAttributeNS(nullptr,value)) : nullptr), m_attributeID(e ? e->getAttributeNS(nullptr,attributeID) : nullptr) { if (!m_value || !*m_value) { delete[] m_value; throw ConfigurationException("AttributeScopeString MatchFunctor requires non-empty value attribute."); } - const XMLCh* flag = e ? e->getAttributeNS(NULL,ignoreCase) : NULL; + const XMLCh* flag = e ? e->getAttributeNS(nullptr,ignoreCase) : nullptr; m_ignoreCase = (flag && (*flag == chLatin_t || *flag == chDigit_1)); } diff --git a/shibsp/attribute/filtering/impl/AttributeValueRegexFunctor.cpp b/shibsp/attribute/filtering/impl/AttributeValueRegexFunctor.cpp index ac4952b..d49ff7e 100644 --- a/shibsp/attribute/filtering/impl/AttributeValueRegexFunctor.cpp +++ b/shibsp/attribute/filtering/impl/AttributeValueRegexFunctor.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,7 +17,8 @@ /** * AttributeValueRegexFunctor.cpp * - * A match function that evaluates an attribute's value against the provided regular expression. + * A match function that evaluates an attribute's value against the provided + * regular expression. */ #include "internal.h" @@ -51,12 +52,12 @@ namespace shibsp { public: AttributeValueRegexFunctor(const DOMElement* e) - : m_attributeID(e ? e->getAttributeNS(NULL,attributeID) : NULL) { - const XMLCh* r = e ? e->getAttributeNS(NULL,regex) : NULL; + : m_attributeID(e ? e->getAttributeNS(nullptr,attributeID) : nullptr) { + const XMLCh* r = e ? e->getAttributeNS(nullptr,regex) : nullptr; if (!r || !*r) throw ConfigurationException("AttributeValueRegex MatchFunctor requires non-empty regex attribute."); try { - m_regex = new RegularExpression(r, e->getAttributeNS(NULL,options)); + m_regex = new RegularExpression(r, e->getAttributeNS(nullptr,options)); } catch (XMLException& ex) { xmltooling::auto_ptr_char temp(ex.getMessage()); diff --git a/shibsp/attribute/filtering/impl/AttributeValueStringFunctor.cpp b/shibsp/attribute/filtering/impl/AttributeValueStringFunctor.cpp index 7721fe8..16b2725 100644 --- a/shibsp/attribute/filtering/impl/AttributeValueStringFunctor.cpp +++ b/shibsp/attribute/filtering/impl/AttributeValueStringFunctor.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,7 +17,8 @@ /** * AttributeValueStringFunctor.cpp * - * A match function that matches the value of an attribute against the specified value. + * A match function that matches the value of an attribute against the + * specified value. */ #include "internal.h" @@ -49,12 +50,12 @@ namespace shibsp { public: AttributeValueStringFunctor(const DOMElement* e) - : m_value(e ? xmltooling::toUTF8(e->getAttributeNS(NULL,value)) : NULL), m_attributeID(e ? e->getAttributeNS(NULL,attributeID) : NULL) { + : m_value(e ? xmltooling::toUTF8(e->getAttributeNS(nullptr,value)) : nullptr), m_attributeID(e ? e->getAttributeNS(nullptr,attributeID) : nullptr) { if (!m_value || !*m_value) { delete[] m_value; throw ConfigurationException("AttributeValueString MatchFunctor requires non-empty value attribute."); } - if (e && e->hasAttributeNS(NULL,ignoreCase)) { + if (e && e->hasAttributeNS(nullptr,ignoreCase)) { xmltooling::logging::Category::getInstance(SHIBSP_LOGCAT".AttributeFilter").warn( "ignoreCase property ignored by AttributeValueString MatchFunctor in favor of attribute's caseSensitive property" ); diff --git a/shibsp/attribute/filtering/impl/AuthenticationMethodRegexFunctor.cpp b/shibsp/attribute/filtering/impl/AuthenticationMethodRegexFunctor.cpp index d7e6665..fc3e365 100644 --- a/shibsp/attribute/filtering/impl/AuthenticationMethodRegexFunctor.cpp +++ b/shibsp/attribute/filtering/impl/AuthenticationMethodRegexFunctor.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,8 +17,8 @@ /** * AuthenticationMethodRegexFunctor.cpp * - * A match function that evaluates to true if the user's authentication method matches the provided regular - * expression. + * A match function that evaluates to true if the user's authentication + * method matches the provided regular expression. */ #include "internal.h" @@ -43,11 +43,11 @@ namespace shibsp { RegularExpression* m_regex; public: AuthenticationMethodRegexFunctor(const DOMElement* e) { - const XMLCh* r = e ? e->getAttributeNS(NULL,regex) : NULL; + const XMLCh* r = e ? e->getAttributeNS(nullptr,regex) : nullptr; if (!r || !*r) throw ConfigurationException("AuthenticationMethodRegex MatchFunctor requires non-empty regex attribute."); try { - m_regex = new RegularExpression(r, e->getAttributeNS(NULL,options)); + m_regex = new RegularExpression(r, e->getAttributeNS(nullptr,options)); } catch (XMLException& ex) { xmltooling::auto_ptr_char temp(ex.getMessage()); diff --git a/shibsp/attribute/filtering/impl/AuthenticationMethodStringFunctor.cpp b/shibsp/attribute/filtering/impl/AuthenticationMethodStringFunctor.cpp index f52843a..27b89ae 100644 --- a/shibsp/attribute/filtering/impl/AuthenticationMethodStringFunctor.cpp +++ b/shibsp/attribute/filtering/impl/AuthenticationMethodStringFunctor.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,7 +17,8 @@ /** * AuthenticationMethodStringFunctor.cpp * - * Match functor that compares the user's authentication method against a given string. + * Match functor that compares the user's authentication method against + * a given string. */ #include "internal.h" @@ -39,10 +40,10 @@ namespace shibsp { const XMLCh* m_value; bool m_ignoreCase; public: - AuthenticationMethodStringFunctor(const DOMElement* e) : m_value(e ? e->getAttributeNS(NULL,value) : NULL) { + AuthenticationMethodStringFunctor(const DOMElement* e) : m_value(e ? e->getAttributeNS(nullptr,value) : nullptr) { if (!m_value || !*m_value) throw ConfigurationException("AuthenticationMethodString MatchFunctor requires non-empty value attribute."); - const XMLCh* flag = e ? e->getAttributeNS(NULL,ignoreCase) : NULL; + const XMLCh* flag = e ? e->getAttributeNS(nullptr,ignoreCase) : nullptr; m_ignoreCase = (flag && (*flag == chLatin_t || *flag == chDigit_1)); } diff --git a/shibsp/attribute/filtering/impl/BasicFilteringContext.cpp b/shibsp/attribute/filtering/impl/BasicFilteringContext.cpp index 67ba166..06dada7 100644 --- a/shibsp/attribute/filtering/impl/BasicFilteringContext.cpp +++ b/shibsp/attribute/filtering/impl/BasicFilteringContext.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -45,7 +45,7 @@ BasicFilteringContext::BasicFilteringContext( const RoleDescriptor* role, const XMLCh* authncontext_class, const XMLCh* authncontext_decl - ) : m_app(app), m_role(role), m_issuer(NULL), m_class(authncontext_class), m_decl(authncontext_decl) + ) : m_app(app), m_role(role), m_issuer(nullptr), m_class(authncontext_class), m_decl(authncontext_decl) { if (role) m_issuer = dynamic_cast(role->getParent())->getEntityID(); @@ -84,7 +84,7 @@ const XMLCh* BasicFilteringContext::getAttributeIssuer() const const RoleDescriptor* BasicFilteringContext::getAttributeRequesterMetadata() const { - return NULL; + return nullptr; } const RoleDescriptor* BasicFilteringContext::getAttributeIssuerMetadata() const diff --git a/shibsp/attribute/filtering/impl/ChainingAttributeFilter.cpp b/shibsp/attribute/filtering/impl/ChainingAttributeFilter.cpp index f9ba21e..ca5dbef 100644 --- a/shibsp/attribute/filtering/impl/ChainingAttributeFilter.cpp +++ b/shibsp/attribute/filtering/impl/ChainingAttributeFilter.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2007 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -72,9 +72,9 @@ ChainingAttributeFilter::ChainingAttributeFilter(const DOMElement* e) SPConfig& conf = SPConfig::getConfig(); // Load up the chain of handlers. - e = e ? XMLHelper::getFirstChildElement(e, _AttributeFilter) : NULL; + e = e ? XMLHelper::getFirstChildElement(e, _AttributeFilter) : nullptr; while (e) { - auto_ptr_char type(e->getAttributeNS(NULL,_type)); + auto_ptr_char type(e->getAttributeNS(nullptr,_type)); if (type.get() && *(type.get())) { try { m_filters.push_back(conf.AttributeFilterManager.newPlugin(type.get(),e)); diff --git a/shibsp/attribute/filtering/impl/NotMatchFunctor.cpp b/shibsp/attribute/filtering/impl/NotMatchFunctor.cpp index a0f07b4..142041c 100644 --- a/shibsp/attribute/filtering/impl/NotMatchFunctor.cpp +++ b/shibsp/attribute/filtering/impl/NotMatchFunctor.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -72,7 +72,7 @@ namespace shibsp { static XMLCh RuleReference[] = UNICODE_LITERAL_13(R,u,l,e,R,e,f,e,r,e,n,c,e); }; -NotMatchFunctor::NotMatchFunctor(const pair& p) : m_functor(NULL) +NotMatchFunctor::NotMatchFunctor(const pair& p) : m_functor(nullptr) { const DOMElement* e = XMLHelper::getFirstChildElement(p.second); if (e) { @@ -80,10 +80,10 @@ NotMatchFunctor::NotMatchFunctor(const pairgetAttributeNS(NULL, _ref)); + auto_ptr_char ref(e->getAttributeNS(nullptr, _ref)); if (ref.get() && *ref.get()) { multimap::const_iterator rule = p.first->getMatchFunctors().find(ref.get()); - m_functor = (rule!=p.first->getMatchFunctors().end()) ? rule->second : NULL; + m_functor = (rule!=p.first->getMatchFunctors().end()) ? rule->second : nullptr; } } } @@ -95,7 +95,7 @@ NotMatchFunctor::NotMatchFunctor(const pairgetAttributeNS(NULL,_id)); + auto_ptr_char temp(e->getAttributeNS(nullptr,_id)); const char* id = (temp.get() && *temp.get()) ? temp.get() : ""; if (*id && functorMap->getMatchFunctors().count(id)) id = ""; diff --git a/shibsp/attribute/filtering/impl/NumberOfAttributeValuesFunctor.cpp b/shibsp/attribute/filtering/impl/NumberOfAttributeValuesFunctor.cpp index f1630c3..c2baf67 100644 --- a/shibsp/attribute/filtering/impl/NumberOfAttributeValuesFunctor.cpp +++ b/shibsp/attribute/filtering/impl/NumberOfAttributeValuesFunctor.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -50,13 +50,13 @@ namespace shibsp { public: NumberOfAttributeValuesFunctor(const DOMElement* e) - : m_min(0), m_max(INT_MAX), m_attributeID(e ? e->getAttributeNS(NULL,attributeID) : NULL) { + : m_min(0), m_max(INT_MAX), m_attributeID(e ? e->getAttributeNS(nullptr,attributeID) : nullptr) { if (!m_attributeID.get() || !*m_attributeID.get()) throw ConfigurationException("No attributeID specified."); - const XMLCh* num = e->getAttributeNS(NULL, minimum); + const XMLCh* num = e->getAttributeNS(nullptr, minimum); if (num && *num) m_min = XMLString::parseInt(num); - num = e->getAttributeNS(NULL, maximum); + num = e->getAttributeNS(nullptr, maximum); if (num && *num) m_max = XMLString::parseInt(num); } diff --git a/shibsp/attribute/filtering/impl/OrMatchFunctor.cpp b/shibsp/attribute/filtering/impl/OrMatchFunctor.cpp index 7b260c2..4abe24f 100644 --- a/shibsp/attribute/filtering/impl/OrMatchFunctor.cpp +++ b/shibsp/attribute/filtering/impl/OrMatchFunctor.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -79,15 +79,15 @@ OrMatchFunctor::OrMatchFunctor(const pairgetAttributeNS(NULL, _ref)); + auto_ptr_char ref(e->getAttributeNS(nullptr, _ref)); if (ref.get() && *ref.get()) { multimap::const_iterator rule = p.first->getMatchFunctors().find(ref.get()); - func = (rule!=p.first->getMatchFunctors().end()) ? rule->second : NULL; + func = (rule!=p.first->getMatchFunctors().end()) ? rule->second : nullptr; } } @@ -101,7 +101,7 @@ OrMatchFunctor::OrMatchFunctor(const pairgetAttributeNS(NULL,_id)); + auto_ptr_char temp(e->getAttributeNS(nullptr,_id)); const char* id = (temp.get() && *temp.get()) ? temp.get() : ""; if (*id && functorMap->getMatchFunctors().count(id)) id = ""; diff --git a/shibsp/attribute/filtering/impl/XMLAttributeFilter.cpp b/shibsp/attribute/filtering/impl/XMLAttributeFilter.cpp index a42c883..c522f48 100644 --- a/shibsp/attribute/filtering/impl/XMLAttributeFilter.cpp +++ b/shibsp/attribute/filtering/impl/XMLAttributeFilter.cpp @@ -52,10 +52,10 @@ namespace shibsp { #endif // Each Policy has a functor for determining applicability and a map of - // attribute IDs to Accept/Deny functor pairs (which can include NULLs). + // attribute IDs to Accept/Deny functor pairs (which can include nullptrs). struct SHIBSP_DLLLOCAL Policy { - Policy() : m_applies(NULL) {} + Policy() : m_applies(nullptr) {} const MatchFunctor* m_applies; typedef multimap< string,pair > rules_t; rules_t m_rules; @@ -99,7 +99,7 @@ namespace shibsp { class SHIBSP_DLLLOCAL XMLFilter : public AttributeFilter, public ReloadableXMLFile { public: - XMLFilter(const DOMElement* e) : ReloadableXMLFile(e, Category::getInstance(SHIBSP_LOGCAT".AttributeFilter")), m_impl(NULL) { + XMLFilter(const DOMElement* e) : ReloadableXMLFile(e, Category::getInstance(SHIBSP_LOGCAT".AttributeFilter")), m_impl(nullptr) { background_load(); } ~XMLFilter() { @@ -142,7 +142,7 @@ namespace shibsp { static const XMLCh _ref[] = UNICODE_LITERAL_3(r,e,f); }; -XMLFilterImpl::XMLFilterImpl(const DOMElement* e, Category& log) : m_log(log), m_document(NULL) +XMLFilterImpl::XMLFilterImpl(const DOMElement* e, Category& log) : m_log(log), m_document(nullptr) { #ifdef _DEBUG xmltooling::NDC ndc("XMLFilterImpl"); @@ -171,15 +171,15 @@ XMLFilterImpl::XMLFilterImpl(const DOMElement* e, Category& log) : m_log(log), m } else if (XMLHelper::isNodeNamed(child, SHIB2ATTRIBUTEFILTER_NS, AttributeFilterPolicy)) { e = XMLHelper::getFirstChildElement(child); - MatchFunctor* func = NULL; + MatchFunctor* func = nullptr; if (e && XMLHelper::isNodeNamed(e, SHIB2ATTRIBUTEFILTER_NS, PolicyRequirementRule)) { func = buildFunctor(e, reqFunctors, "PolicyRequirementRule", false); } else if (e && XMLHelper::isNodeNamed(e, SHIB2ATTRIBUTEFILTER_NS, PolicyRequirementRuleReference)) { - auto_ptr_char ref(e->getAttributeNS(NULL, _ref)); + auto_ptr_char ref(e->getAttributeNS(nullptr, _ref)); if (ref.get() && *ref.get()) { multimap::const_iterator prr = m_policyReqRules.find(ref.get()); - func = (prr!=m_policyReqRules.end()) ? prr->second : NULL; + func = (prr!=m_policyReqRules.end()) ? prr->second : nullptr; } } if (func) { @@ -193,7 +193,7 @@ XMLFilterImpl::XMLFilterImpl(const DOMElement* e, Category& log) : m_log(log), m m_policies.back().m_rules.insert(Policy::rules_t::value_type(rule.first, rule.second)); } else if (e && XMLHelper::isNodeNamed(e, SHIB2ATTRIBUTEFILTER_NS, AttributeRuleReference)) { - auto_ptr_char ref(e->getAttributeNS(NULL, _ref)); + auto_ptr_char ref(e->getAttributeNS(nullptr, _ref)); if (ref.get() && *ref.get()) { map< string,pair< string,pair< const MatchFunctor*,const MatchFunctor*> > >::const_iterator ar = m_attrRules.find(ref.get()); if (ar != m_attrRules.end()) @@ -217,17 +217,17 @@ MatchFunctor* XMLFilterImpl::buildFunctor( const DOMElement* e, const FilterPolicyContext& functorMap, const char* logname, bool standalone ) { - auto_ptr_char temp(e->getAttributeNS(NULL,_id)); + auto_ptr_char temp(e->getAttributeNS(nullptr,_id)); const char* id = (temp.get() && *temp.get()) ? temp.get() : ""; if (standalone && !*id) { m_log.warn("skipping stand-alone %s with no id", logname); - return NULL; + return nullptr; } else if (*id && functorMap.getMatchFunctors().count(id)) { if (standalone) { m_log.warn("skipping duplicate stand-alone %s with id (%s)", logname, id); - return NULL; + return nullptr; } else id = ""; @@ -249,35 +249,35 @@ MatchFunctor* XMLFilterImpl::buildFunctor( else m_log.error("%s with no xsi:type", logname); - return NULL; + return nullptr; } pair< string,pair > XMLFilterImpl::buildAttributeRule( const DOMElement* e, const FilterPolicyContext& permMap, const FilterPolicyContext& denyMap, bool standalone ) { - auto_ptr_char temp(e->getAttributeNS(NULL,_id)); + auto_ptr_char temp(e->getAttributeNS(nullptr,_id)); const char* id = (temp.get() && *temp.get()) ? temp.get() : ""; if (standalone && !*id) { m_log.warn("skipping stand-alone AttributeRule with no id"); - return make_pair(string(),pair(NULL,NULL)); + return make_pair(string(),pair(nullptr,nullptr)); } else if (*id && m_attrRules.count(id)) { if (standalone) { m_log.warn("skipping duplicate stand-alone AttributeRule with id (%s)", id); - return make_pair(string(),pair(NULL,NULL)); + return make_pair(string(),pair(nullptr,nullptr)); } else id = ""; } - auto_ptr_char attrID(e->getAttributeNS(NULL,attributeID)); + auto_ptr_char attrID(e->getAttributeNS(nullptr,attributeID)); if (!attrID.get() || !*attrID.get()) m_log.warn("skipping AttributeRule with no attributeID"); - MatchFunctor* perm=NULL; - MatchFunctor* deny=NULL; + MatchFunctor* perm=nullptr; + MatchFunctor* deny=nullptr; e = XMLHelper::getFirstChildElement(e); if (e && XMLHelper::isNodeNamed(e, SHIB2ATTRIBUTEFILTER_NS, PermitValueRule)) { @@ -285,10 +285,10 @@ pair< string,pair > XMLFilterImpl::buil e = XMLHelper::getNextSiblingElement(e); } else if (e && XMLHelper::isNodeNamed(e, SHIB2ATTRIBUTEFILTER_NS, PermitValueRuleReference)) { - auto_ptr_char ref(e->getAttributeNS(NULL, _ref)); + auto_ptr_char ref(e->getAttributeNS(nullptr, _ref)); if (ref.get() && *ref.get()) { multimap::const_iterator pvr = m_permitValRules.find(ref.get()); - perm = (pvr!=m_permitValRules.end()) ? pvr->second : NULL; + perm = (pvr!=m_permitValRules.end()) ? pvr->second : nullptr; } e = XMLHelper::getNextSiblingElement(e); } @@ -297,10 +297,10 @@ pair< string,pair > XMLFilterImpl::buil deny = buildFunctor(e, denyMap, "DenyValueRule", false); } else if (e && XMLHelper::isNodeNamed(e, SHIB2ATTRIBUTEFILTER_NS, DenyValueRuleReference)) { - auto_ptr_char ref(e->getAttributeNS(NULL, _ref)); + auto_ptr_char ref(e->getAttributeNS(nullptr, _ref)); if (ref.get() && *ref.get()) { multimap::const_iterator pvr = m_denyValRules.find(ref.get()); - deny = (pvr!=m_denyValRules.end()) ? pvr->second : NULL; + deny = (pvr!=m_denyValRules.end()) ? pvr->second : nullptr; } } @@ -318,7 +318,7 @@ pair< string,pair > XMLFilterImpl::buil m_log.warn("skipping AttributeRule (%s), permit and denial rule(s) invalid or missing", id); else m_log.warn("skipping AttributeRule, permit and denial rule(s) invalid or missing"); - return pair< string,pair >(string(),pair(NULL,NULL)); + return pair< string,pair >(string(),pair(nullptr,nullptr)); } void XMLFilterImpl::filterAttributes(const FilteringContext& context, vector& attributes) const @@ -464,7 +464,7 @@ pair XMLFilter::background_load() pair raw = ReloadableXMLFile::load(); // If we own it, wrap it. - XercesJanitor docjanitor(raw.first ? raw.second->getOwnerDocument() : NULL); + XercesJanitor docjanitor(raw.first ? raw.second->getOwnerDocument() : nullptr); XMLFilterImpl* impl = new XMLFilterImpl(raw.second, m_log); @@ -478,5 +478,5 @@ pair XMLFilter::background_load() delete m_impl; m_impl = impl; - return make_pair(false,(DOMElement*)NULL); + return make_pair(false,(DOMElement*)nullptr); } diff --git a/shibsp/attribute/resolver/AttributeResolver.h b/shibsp/attribute/resolver/AttributeResolver.h index bcf0232..9f3f773 100644 --- a/shibsp/attribute/resolver/AttributeResolver.h +++ b/shibsp/attribute/resolver/AttributeResolver.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,7 +17,8 @@ /** * @file shibsp/attribute/resolver/AttributeResolver.h * - * A service that transforms or resolves additional attributes for a particular subject. + * A service that transforms or resolves additional attributes for a + * particular subject. */ #ifndef __shibsp_resolver_h__ @@ -82,11 +83,11 @@ namespace shibsp { const Application& application, const opensaml::saml2md::EntityDescriptor* issuer, const XMLCh* protocol, - const opensaml::saml2::NameID* nameid=NULL, - const XMLCh* authncontext_class=NULL, - const XMLCh* authncontext_decl=NULL, - const std::vector* tokens=NULL, - const std::vector* attributes=NULL + const opensaml::saml2::NameID* nameid=nullptr, + const XMLCh* authncontext_class=nullptr, + const XMLCh* authncontext_decl=nullptr, + const std::vector* tokens=nullptr, + const std::vector* attributes=nullptr ) const=0; /** diff --git a/shibsp/attribute/resolver/impl/ChainingAttributeExtractor.cpp b/shibsp/attribute/resolver/impl/ChainingAttributeExtractor.cpp index d46fdff..e80543b 100644 --- a/shibsp/attribute/resolver/impl/ChainingAttributeExtractor.cpp +++ b/shibsp/attribute/resolver/impl/ChainingAttributeExtractor.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -101,9 +101,9 @@ ChainingAttributeExtractor::ChainingAttributeExtractor(const DOMElement* e) SPConfig& conf = SPConfig::getConfig(); // Load up the chain of handlers. - e = e ? XMLHelper::getFirstChildElement(e, _AttributeExtractor) : NULL; + e = e ? XMLHelper::getFirstChildElement(e, _AttributeExtractor) : nullptr; while (e) { - auto_ptr_char type(e->getAttributeNS(NULL,_type)); + auto_ptr_char type(e->getAttributeNS(nullptr,_type)); if (type.get() && *(type.get())) { try { m_extractors.push_back(conf.AttributeExtractorManager.newPlugin(type.get(),e)); diff --git a/shibsp/attribute/resolver/impl/ChainingAttributeResolver.cpp b/shibsp/attribute/resolver/impl/ChainingAttributeResolver.cpp index 4dd7702..0cb6b07 100644 --- a/shibsp/attribute/resolver/impl/ChainingAttributeResolver.cpp +++ b/shibsp/attribute/resolver/impl/ChainingAttributeResolver.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -50,7 +50,7 @@ namespace shibsp { const XMLCh* authncontext_decl, const vector* tokens, const vector* attributes - ) : m_app(application), m_issuer(issuer), m_protocol(protocol), m_nameid(nameid), m_authclass(authncontext_class), m_authdecl(authncontext_decl), m_session(NULL) { + ) : m_app(application), m_issuer(issuer), m_protocol(protocol), m_nameid(nameid), m_authclass(authncontext_class), m_authdecl(authncontext_decl), m_session(nullptr) { if (tokens) m_tokens.assign(tokens->begin(), tokens->end()); if (attributes) @@ -105,11 +105,11 @@ namespace shibsp { const Application& application, const EntityDescriptor* issuer, const XMLCh* protocol, - const NameID* nameid=NULL, - const XMLCh* authncontext_class=NULL, - const XMLCh* authncontext_decl=NULL, - const vector* tokens=NULL, - const vector* attributes=NULL + const NameID* nameid=nullptr, + const XMLCh* authncontext_class=nullptr, + const XMLCh* authncontext_decl=nullptr, + const vector* tokens=nullptr, + const vector* attributes=nullptr ) const { return new ChainingContext(application, issuer, protocol, nameid, authncontext_class, authncontext_decl, tokens, attributes); } @@ -171,9 +171,9 @@ ChainingAttributeResolver::ChainingAttributeResolver(const DOMElement* e) SPConfig& conf = SPConfig::getConfig(); // Load up the chain of handlers. - e = e ? XMLHelper::getFirstChildElement(e, _AttributeResolver) : NULL; + e = e ? XMLHelper::getFirstChildElement(e, _AttributeResolver) : nullptr; while (e) { - auto_ptr_char type(e->getAttributeNS(NULL,_type)); + auto_ptr_char type(e->getAttributeNS(nullptr,_type)); if (type.get() && *(type.get())) { try { m_resolvers.push_back(conf.AttributeResolverManager.newPlugin(type.get(),e)); diff --git a/shibsp/attribute/resolver/impl/DelegationAttributeExtractor.cpp b/shibsp/attribute/resolver/impl/DelegationAttributeExtractor.cpp index f98f2a2..ba9b642 100644 --- a/shibsp/attribute/resolver/impl/DelegationAttributeExtractor.cpp +++ b/shibsp/attribute/resolver/impl/DelegationAttributeExtractor.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2009 Internet2 + * Copyright 2009-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -89,12 +89,12 @@ namespace shibsp { DelegationExtractor::DelegationExtractor(const DOMElement* e) : m_attributeId("delegate"), m_formatter("$Name") { if (e) { - const XMLCh* a = e->getAttributeNS(NULL, attributeId); + const XMLCh* a = e->getAttributeNS(nullptr, attributeId); if (a && *a) { auto_ptr_char temp(a); m_attributeId = temp.get(); } - a = e->getAttributeNS(NULL, formatter); + a = e->getAttributeNS(nullptr, formatter); if (a && *a) { auto_ptr_char temp(a); m_formatter = temp.get(); @@ -125,7 +125,7 @@ void DelegationExtractor::extractAttributes( continue; } - saml2::NameID* n = NULL; + saml2::NameID* n = nullptr; if ((*d)->getEncryptedID()) { CredentialResolver* cr = application.getCredentialResolver(); if (!cr) { @@ -134,7 +134,7 @@ void DelegationExtractor::extractAttributes( try { const XMLCh* recipient = application.getRelyingParty( - issuer ? dynamic_cast(issuer->getParent()) : NULL + issuer ? dynamic_cast(issuer->getParent()) : nullptr )->getXMLString("entityID").second; Locker credlocker(cr); if (issuer) { @@ -158,7 +158,7 @@ void DelegationExtractor::extractAttributes( } if (n) { - DDF val = DDF(NULL).structure(); + DDF val = DDF(nullptr).structure(); if ((*d)->getConfirmationMethod()) { auto_ptr_char temp((*d)->getConfirmationMethod()); val.addmember("ConfirmationMethod").string(temp.get()); diff --git a/shibsp/attribute/resolver/impl/KeyDescriptorAttributeExtractor.cpp b/shibsp/attribute/resolver/impl/KeyDescriptorAttributeExtractor.cpp index 0cb4142..bb397f3 100644 --- a/shibsp/attribute/resolver/impl/KeyDescriptorAttributeExtractor.cpp +++ b/shibsp/attribute/resolver/impl/KeyDescriptorAttributeExtractor.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2009 Internet2 + * Copyright 2009-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -96,20 +96,20 @@ namespace shibsp { static const XMLCh signingId[] = UNICODE_LITERAL_9(s,i,g,n,i,n,g,I,d); }; -KeyDescriptorExtractor::KeyDescriptorExtractor(const DOMElement* e) : m_hashAlg(e ? e->getAttributeNS(NULL, hashAlg) : NULL) +KeyDescriptorExtractor::KeyDescriptorExtractor(const DOMElement* e) : m_hashAlg(e ? e->getAttributeNS(nullptr, hashAlg) : nullptr) { if (e) { - const XMLCh* a = e->getAttributeNS(NULL, hashId); + const XMLCh* a = e->getAttributeNS(nullptr, hashId); if (a && *a) { auto_ptr_char temp(a); m_hashId.push_back(temp.get()); } - a = e->getAttributeNS(NULL, signingId); + a = e->getAttributeNS(nullptr, signingId); if (a && *a) { auto_ptr_char temp(a); m_signingId.push_back(temp.get()); } - a = e->getAttributeNS(NULL, encryptionId); + a = e->getAttributeNS(nullptr, encryptionId); if (a && *a) { auto_ptr_char temp(a); m_encryptionId.push_back(temp.get()); diff --git a/shibsp/attribute/resolver/impl/QueryAttributeResolver.cpp b/shibsp/attribute/resolver/impl/QueryAttributeResolver.cpp index f080088..5013173 100644 --- a/shibsp/attribute/resolver/impl/QueryAttributeResolver.cpp +++ b/shibsp/attribute/resolver/impl/QueryAttributeResolver.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -64,7 +64,7 @@ namespace shibsp { { public: QueryContext(const Application& application, const Session& session) - : m_query(true), m_app(application), m_session(&session), m_metadata(NULL), m_entity(NULL), m_nameid(NULL) { + : m_query(true), m_app(application), m_session(&session), m_metadata(nullptr), m_entity(nullptr), m_nameid(nullptr) { m_protocol = XMLString::transcode(session.getProtocol()); m_class = XMLString::transcode(session.getAuthnContextClassRef()); m_decl = XMLString::transcode(session.getAuthnContextDeclRef()); @@ -74,11 +74,11 @@ namespace shibsp { const Application& application, const EntityDescriptor* issuer, const XMLCh* protocol, - const NameID* nameid=NULL, - const XMLCh* authncontext_class=NULL, - const XMLCh* authncontext_decl=NULL, - const vector* tokens=NULL - ) : m_query(true), m_app(application), m_session(NULL), m_metadata(NULL), m_entity(issuer), + const NameID* nameid=nullptr, + const XMLCh* authncontext_class=nullptr, + const XMLCh* authncontext_decl=nullptr, + const vector* tokens=nullptr + ) : m_query(true), m_app(application), m_session(nullptr), m_metadata(nullptr), m_entity(issuer), m_protocol(protocol), m_nameid(nameid), m_class(authncontext_class), m_decl(authncontext_decl) { if (tokens) { @@ -126,7 +126,7 @@ namespace shibsp { return m_entity = m_metadata->getEntityDescriptor(MetadataProviderCriteria(m_app, m_session->getEntityID())).first; } } - return NULL; + return nullptr; } const XMLCh* getProtocol() const { return m_protocol; @@ -180,11 +180,11 @@ namespace shibsp { const Application& application, const EntityDescriptor* issuer, const XMLCh* protocol, - const NameID* nameid=NULL, - const XMLCh* authncontext_class=NULL, - const XMLCh* authncontext_decl=NULL, - const vector* tokens=NULL, - const vector* attributes=NULL + const NameID* nameid=nullptr, + const XMLCh* authncontext_class=nullptr, + const XMLCh* authncontext_decl=nullptr, + const vector* tokens=nullptr, + const vector* attributes=nullptr ) const { return new QueryContext(application,issuer,protocol,nameid,authncontext_class,authncontext_decl,tokens); } @@ -225,12 +225,12 @@ QueryResolver::QueryResolver(const DOMElement* e) : m_log(Category::getInstance( xmltooling::NDC ndc("QueryResolver"); #endif - const XMLCh* pid = e ? e->getAttributeNS(NULL, policyId) : NULL; + const XMLCh* pid = e ? e->getAttributeNS(nullptr, policyId) : nullptr; if (pid && *pid) { auto_ptr_char temp(pid); m_policyId = temp.get(); } - pid = e ? e->getAttributeNS(NULL, subjectMatch) : NULL; + pid = e ? e->getAttributeNS(nullptr, subjectMatch) : nullptr; if (pid && (*pid == chLatin_t || *pid == chDigit_1)) m_subjectMatch = true; @@ -285,13 +285,13 @@ bool QueryResolver::SAML1Query(QueryContext& ctx) const const PropertySet* settings = application.getServiceProvider().getPolicySettings(policyId); pair validate = settings->getBool("validate"); - shibsp::SecurityPolicy policy(application, NULL, validate.first && validate.second, policyId); + shibsp::SecurityPolicy policy(application, nullptr, validate.first && validate.second, policyId); policy.getAudiences().push_back(relyingParty->getXMLString("entityID").second); MetadataCredentialCriteria mcc(*AA); shibsp::SOAPClient soaper(policy); auto_ptr_XMLCh binding(samlconstants::SAML1_BINDING_SOAP); - saml1p::Response* response=NULL; + saml1p::Response* response=nullptr; const vector& endpoints=AA->getAttributeServices(); for (vector::const_iterator ep=endpoints.begin(); !response && ep!=endpoints.end(); ++ep) { if (!XMLString::equals((*ep)->getBinding(),binding.get()) || !(*ep)->getLocation()) @@ -327,7 +327,7 @@ bool QueryResolver::SAML1Query(QueryContext& ctx) const m_log.error("unable to obtain a SAML response from attribute authority"); return false; } - else if (!response->getStatus() || !response->getStatus()->getStatusCode() || response->getStatus()->getStatusCode()->getValue()==NULL || + else if (!response->getStatus() || !response->getStatus()->getStatusCode() || response->getStatus()->getStatusCode()->getValue()==nullptr || *(response->getStatus()->getStatusCode()->getValue()) != saml1p::StatusCode::SUCCESS) { delete response; m_log.error("attribute authority returned a SAML error"); @@ -383,7 +383,7 @@ bool QueryResolver::SAML1Query(QueryContext& ctx) const for (vector::const_iterator s = statements.begin(); s!=statements.end(); ++s) { if (m_subjectMatch) { // Check for subject match. - const NameIdentifier* respName = (*s)->getSubject() ? (*s)->getSubject()->getNameIdentifier() : NULL; + const NameIdentifier* respName = (*s)->getSubject() ? (*s)->getSubject()->getNameIdentifier() : nullptr; if (!respName || !XMLString::equals(respName->getName(), ctx.getNameID()->getName()) || !XMLString::equals(respName->getFormat(), ctx.getNameID()->getFormat()) || !XMLString::equals(respName->getNameQualifier(), ctx.getNameID()->getNameQualifier())) { @@ -441,13 +441,13 @@ bool QueryResolver::SAML2Query(QueryContext& ctx) const pair signedAssertions = relyingParty->getBool("requireSignedAssertions"); pair encryption = relyingParty->getString("encryption"); - shibsp::SecurityPolicy policy(application, NULL, validate.first && validate.second, policyId); + shibsp::SecurityPolicy policy(application, nullptr, validate.first && validate.second, policyId); policy.getAudiences().push_back(relyingParty->getXMLString("entityID").second); MetadataCredentialCriteria mcc(*AA); shibsp::SOAPClient soaper(policy); auto_ptr_XMLCh binding(samlconstants::SAML20_BINDING_SOAP); - saml2p::StatusResponseType* srt=NULL; + saml2p::StatusResponseType* srt=nullptr; const vector& endpoints=AA->getAttributeServices(); for (vector::const_iterator ep=endpoints.begin(); !srt && ep!=endpoints.end(); ++ep) { if (!XMLString::equals((*ep)->getBinding(),binding.get()) || !(*ep)->getLocation()) @@ -508,7 +508,7 @@ bool QueryResolver::SAML2Query(QueryContext& ctx) const return true; } - saml2::Assertion* newtoken = NULL; + saml2::Assertion* newtoken = nullptr; const vector& assertions = const_cast(response)->getAssertions(); if (assertions.empty()) { // Check for encryption. @@ -579,10 +579,10 @@ bool QueryResolver::SAML2Query(QueryContext& ctx) const if (m_subjectMatch) { // Check for subject match. bool ownedName = false; - NameID* respName = newtoken->getSubject() ? newtoken->getSubject()->getNameID() : NULL; + NameID* respName = newtoken->getSubject() ? newtoken->getSubject()->getNameID() : nullptr; if (!respName) { // Check for encryption. - EncryptedID* encname = newtoken->getSubject() ? newtoken->getSubject()->getEncryptedID() : NULL; + EncryptedID* encname = newtoken->getSubject() ? newtoken->getSubject()->getEncryptedID() : nullptr; if (encname) { CredentialResolver* cr=application.getCredentialResolver(); if (!cr) @@ -601,7 +601,7 @@ bool QueryResolver::SAML2Query(QueryContext& ctx) const } } - auto_ptr nameIDwrapper(ownedName ? respName : NULL); + auto_ptr nameIDwrapper(ownedName ? respName : nullptr); if (!respName || !XMLString::equals(respName->getName(), ctx.getNameID()->getName()) || !XMLString::equals(respName->getFormat(), ctx.getNameID()->getFormat()) || diff --git a/shibsp/attribute/resolver/impl/SimpleAggregationAttributeResolver.cpp b/shibsp/attribute/resolver/impl/SimpleAggregationAttributeResolver.cpp index 5492b1f..7f8cc26 100644 --- a/shibsp/attribute/resolver/impl/SimpleAggregationAttributeResolver.cpp +++ b/shibsp/attribute/resolver/impl/SimpleAggregationAttributeResolver.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2009 Internet2 + * Copyright 2009-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -65,26 +65,26 @@ namespace shibsp { SimpleAggregationContext(const Application& application, const Session& session) : m_app(application), m_session(&session), - m_nameid(NULL), - m_entityid(NULL), + m_nameid(nullptr), + m_entityid(nullptr), m_class(XMLString::transcode(session.getAuthnContextClassRef())), m_decl(XMLString::transcode(session.getAuthnContextDeclRef())), - m_inputTokens(NULL), - m_inputAttributes(NULL) { + m_inputTokens(nullptr), + m_inputAttributes(nullptr) { } SimpleAggregationContext( const Application& application, - const NameID* nameid=NULL, - const XMLCh* entityID=NULL, - const XMLCh* authncontext_class=NULL, - const XMLCh* authncontext_decl=NULL, - const vector* tokens=NULL, - const vector* attributes=NULL + const NameID* nameid=nullptr, + const XMLCh* entityID=nullptr, + const XMLCh* authncontext_class=nullptr, + const XMLCh* authncontext_decl=nullptr, + const vector* tokens=nullptr, + const vector* attributes=nullptr ) : m_app(application), - m_session(NULL), + m_session(nullptr), m_nameid(nameid), - m_entityid(entityID ? XMLString::transcode(entityID) : NULL), + m_entityid(entityID ? XMLString::transcode(entityID) : nullptr), m_class(const_cast(authncontext_class)), m_decl(const_cast(authncontext_decl)), m_inputTokens(tokens), @@ -162,14 +162,14 @@ namespace shibsp { const Application& application, const EntityDescriptor* issuer, const XMLCh* protocol, - const NameID* nameid=NULL, - const XMLCh* authncontext_class=NULL, - const XMLCh* authncontext_decl=NULL, - const vector* tokens=NULL, - const vector* attributes=NULL + const NameID* nameid=nullptr, + const XMLCh* authncontext_class=nullptr, + const XMLCh* authncontext_decl=nullptr, + const vector* tokens=nullptr, + const vector* attributes=nullptr ) const { return new SimpleAggregationContext( - application, nameid, (issuer ? issuer->getEntityID() : NULL), authncontext_class, authncontext_decl, tokens, attributes + application, nameid, (issuer ? issuer->getEntityID() : nullptr), authncontext_class, authncontext_decl, tokens, attributes ); } @@ -214,23 +214,23 @@ namespace shibsp { }; SimpleAggregationResolver::SimpleAggregationResolver(const DOMElement* e) - : m_log(Category::getInstance(SHIBSP_LOGCAT".AttributeResolver.SimpleAggregation")), m_subjectMatch(false), m_metadata(NULL), m_trust(NULL) + : m_log(Category::getInstance(SHIBSP_LOGCAT".AttributeResolver.SimpleAggregation")), m_subjectMatch(false), m_metadata(nullptr), m_trust(nullptr) { #ifdef _DEBUG xmltooling::NDC ndc("SimpleAggregationResolver"); #endif - const XMLCh* pid = e ? e->getAttributeNS(NULL, policyId) : NULL; + const XMLCh* pid = e ? e->getAttributeNS(nullptr, policyId) : nullptr; if (pid && *pid) { auto_ptr_char temp(pid); m_policyId = temp.get(); } - pid = e ? e->getAttributeNS(NULL, subjectMatch) : NULL; + pid = e ? e->getAttributeNS(nullptr, subjectMatch) : nullptr; if (pid && (*pid == chLatin_t || *pid == chDigit_1)) m_subjectMatch = true; - pid = e ? e->getAttributeNS(NULL, attributeId) : NULL; + pid = e ? e->getAttributeNS(nullptr, attributeId) : nullptr; if (pid && *pid) { char* dup = XMLString::transcode(pid); char* pos; @@ -244,18 +244,18 @@ SimpleAggregationResolver::SimpleAggregationResolver(const DOMElement* e) if (pos) *pos=0; m_attributeIds.push_back(start); - start = pos ? pos+1 : NULL; + start = pos ? pos+1 : nullptr; } XMLString::release(&dup); - pid = e->getAttributeNS(NULL, format); + pid = e->getAttributeNS(nullptr, format); if (pid && *pid) m_format = pid; } DOMElement* child = XMLHelper::getFirstChildElement(e, _MetadataProvider); if (child) { - auto_ptr_char type(child->getAttributeNS(NULL, _type)); + auto_ptr_char type(child->getAttributeNS(nullptr, _type)); if (!type.get() || !*type.get()) throw ConfigurationException("MetadataProvider element missing type attribute."); m_log.info("building MetadataProvider of type %s...", type.get()); @@ -267,7 +267,7 @@ SimpleAggregationResolver::SimpleAggregationResolver(const DOMElement* e) child = XMLHelper::getFirstChildElement(e, _TrustEngine); if (child) { try { - auto_ptr_char type(child->getAttributeNS(NULL, _type)); + auto_ptr_char type(child->getAttributeNS(nullptr, _type)); if (!type.get() || !*type.get()) throw ConfigurationException("TrustEngine element missing type attribute."); m_log.info("building TrustEngine of type %s...", type.get()); @@ -320,7 +320,7 @@ bool SimpleAggregationResolver::doQuery(SimpleAggregationContext& ctx, const cha const Application& application = ctx.getApplication(); MetadataProviderCriteria mc(application, entityID, &AttributeAuthorityDescriptor::ELEMENT_QNAME, samlconstants::SAML20P_NS); Locker mlocker(m_metadata); - const AttributeAuthorityDescriptor* AA=NULL; + const AttributeAuthorityDescriptor* AA=nullptr; pair mdresult = (m_metadata ? m_metadata : application.getMetadataProvider())->getEntityDescriptor(mc); if (!mdresult.first) { @@ -344,7 +344,7 @@ bool SimpleAggregationResolver::doQuery(SimpleAggregationContext& ctx, const cha pair signedAssertions = relyingParty->getBool("requireSignedAssertions"); pair encryption = relyingParty->getString("encryption"); - shibsp::SecurityPolicy policy(application, NULL, validate.first && validate.second, policyId); + shibsp::SecurityPolicy policy(application, nullptr, validate.first && validate.second, policyId); if (m_metadata) policy.setMetadataProvider(m_metadata); if (m_trust) @@ -355,7 +355,7 @@ bool SimpleAggregationResolver::doQuery(SimpleAggregationContext& ctx, const cha shibsp::SOAPClient soaper(policy); auto_ptr_XMLCh binding(samlconstants::SAML20_BINDING_SOAP); - saml2p::StatusResponseType* srt=NULL; + saml2p::StatusResponseType* srt=nullptr; const vector& endpoints=AA->getAttributeServices(); for (vector::const_iterator ep=endpoints.begin(); !srt && ep!=endpoints.end(); ++ep) { if (!XMLString::equals((*ep)->getBinding(),binding.get()) || !(*ep)->getLocation()) @@ -416,7 +416,7 @@ bool SimpleAggregationResolver::doQuery(SimpleAggregationContext& ctx, const cha return true; } - saml2::Assertion* newtoken = NULL; + saml2::Assertion* newtoken = nullptr; const vector& assertions = const_cast(response)->getAssertions(); if (assertions.empty()) { // Check for encryption. @@ -488,10 +488,10 @@ bool SimpleAggregationResolver::doQuery(SimpleAggregationContext& ctx, const cha if (m_subjectMatch) { // Check for subject match. bool ownedName = false; - NameID* respName = newtoken->getSubject() ? newtoken->getSubject()->getNameID() : NULL; + NameID* respName = newtoken->getSubject() ? newtoken->getSubject()->getNameID() : nullptr; if (!respName) { // Check for encryption. - EncryptedID* encname = newtoken->getSubject() ? newtoken->getSubject()->getEncryptedID() : NULL; + EncryptedID* encname = newtoken->getSubject() ? newtoken->getSubject()->getEncryptedID() : nullptr; if (encname) { CredentialResolver* cr=application.getCredentialResolver(); if (!cr) @@ -510,7 +510,7 @@ bool SimpleAggregationResolver::doQuery(SimpleAggregationContext& ctx, const cha } } - auto_ptr nameIDwrapper(ownedName ? respName : NULL); + auto_ptr nameIDwrapper(ownedName ? respName : nullptr); if (!respName || !XMLString::equals(respName->getName(), name->getName()) || !XMLString::equals(respName->getFormat(), name->getFormat()) || @@ -573,9 +573,9 @@ void SimpleAggregationResolver::resolveAttributes(ResolutionContext& ctx) const SimpleAggregationContext& qctx = dynamic_cast(ctx); // First we manufacture the appropriate NameID to use. - NameID* n=NULL; + NameID* n=nullptr; for (vector::const_iterator a = m_attributeIds.begin(); !n && a != m_attributeIds.end(); ++a) { - const Attribute* attr=NULL; + const Attribute* attr=nullptr; if (qctx.getSession()) { // Input attributes should be available via multimap. pair::const_iterator, multimap::const_iterator> range = diff --git a/shibsp/attribute/resolver/impl/XMLAttributeExtractor.cpp b/shibsp/attribute/resolver/impl/XMLAttributeExtractor.cpp index 2ff01c7..5746cbb 100644 --- a/shibsp/attribute/resolver/impl/XMLAttributeExtractor.cpp +++ b/shibsp/attribute/resolver/impl/XMLAttributeExtractor.cpp @@ -179,7 +179,7 @@ namespace shibsp { class XMLExtractor : public AttributeExtractor, public ReloadableXMLFile { public: - XMLExtractor(const DOMElement* e) : ReloadableXMLFile(e, Category::getInstance(SHIBSP_LOGCAT".AttributeExtractor.XML")), m_impl(NULL) { + XMLExtractor(const DOMElement* e) : ReloadableXMLFile(e, Category::getInstance(SHIBSP_LOGCAT".AttributeExtractor.XML")), m_impl(nullptr) { background_load(); } ~XMLExtractor() { @@ -227,13 +227,13 @@ namespace shibsp { XMLExtractorImpl::XMLExtractorImpl(const DOMElement* e, Category& log) : m_log(log), - m_document(NULL), - m_policyId(e ? e->getAttributeNS(NULL, metadataPolicyId) : NULL), - m_metadata(NULL), - m_trust(NULL), - m_filter(NULL), + m_document(nullptr), + m_policyId(e ? e->getAttributeNS(nullptr, metadataPolicyId) : nullptr), + m_metadata(nullptr), + m_trust(nullptr), + m_filter(nullptr), m_entityAssertions(true), - m_attrLock(NULL) + m_attrLock(nullptr) { #ifdef _DEBUG xmltooling::NDC ndc("XMLExtractorImpl"); @@ -245,7 +245,7 @@ XMLExtractorImpl::XMLExtractorImpl(const DOMElement* e, Category& log) DOMElement* child = XMLHelper::getFirstChildElement(e, shibspconstants::SHIB2ATTRIBUTEMAP_NS, _MetadataProvider); if (child) { try { - auto_ptr_char type(child->getAttributeNS(NULL, _type)); + auto_ptr_char type(child->getAttributeNS(nullptr, _type)); if (!type.get() || !*type.get()) throw ConfigurationException("MetadataProvider element missing type attribute."); m_log.info("building MetadataProvider of type %s...", type.get()); @@ -264,7 +264,7 @@ XMLExtractorImpl::XMLExtractorImpl(const DOMElement* e, Category& log) child = XMLHelper::getFirstChildElement(e, shibspconstants::SHIB2ATTRIBUTEMAP_NS, _TrustEngine); if (child) { try { - auto_ptr_char type(child->getAttributeNS(NULL, _type)); + auto_ptr_char type(child->getAttributeNS(nullptr, _type)); if (!type.get() || !*type.get()) throw ConfigurationException("TrustEngine element missing type attribute."); m_log.info("building TrustEngine of type %s...", type.get()); @@ -282,7 +282,7 @@ XMLExtractorImpl::XMLExtractorImpl(const DOMElement* e, Category& log) child = XMLHelper::getFirstChildElement(e, shibspconstants::SHIB2ATTRIBUTEMAP_NS, _AttributeFilter); if (child) { try { - auto_ptr_char type(child->getAttributeNS(NULL, _type)); + auto_ptr_char type(child->getAttributeNS(nullptr, _type)); if (!type.get() || !*type.get()) throw ConfigurationException("AttributeFilter element missing type attribute."); m_log.info("building AttributeFilter of type %s...", type.get()); @@ -299,14 +299,14 @@ XMLExtractorImpl::XMLExtractorImpl(const DOMElement* e, Category& log) child = XMLHelper::getFirstChildElement(e, shibspconstants::SHIB2ATTRIBUTEMAP_NS, saml1::Attribute::LOCAL_NAME); while (child) { // Check for missing name or id. - const XMLCh* name = child->getAttributeNS(NULL, _name); + const XMLCh* name = child->getAttributeNS(nullptr, _name); if (!name || !*name) { m_log.warn("skipping Attribute with no name"); child = XMLHelper::getNextSiblingElement(child, shibspconstants::SHIB2ATTRIBUTEMAP_NS, saml1::Attribute::LOCAL_NAME); continue; } - auto_ptr_char id(child->getAttributeNS(NULL, _id)); + auto_ptr_char id(child->getAttributeNS(nullptr, _id)); if (!id.get() || !*id.get()) { m_log.warn("skipping Attribute with no id"); child = XMLHelper::getNextSiblingElement(child, shibspconstants::SHIB2ATTRIBUTEMAP_NS, saml1::Attribute::LOCAL_NAME); @@ -318,7 +318,7 @@ XMLExtractorImpl::XMLExtractorImpl(const DOMElement* e, Category& log) continue; } - AttributeDecoder* decoder=NULL; + AttributeDecoder* decoder=nullptr; try { DOMElement* dchild = XMLHelper::getFirstChildElement(child, shibspconstants::SHIB2ATTRIBUTEMAP_NS, _AttributeDecoder); if (dchild) { @@ -327,7 +327,7 @@ XMLExtractorImpl::XMLExtractorImpl(const DOMElement* e, Category& log) decoder = SPConfig::getConfig().AttributeDecoderManager.newPlugin(*q.get(), dchild); } if (!decoder) - decoder = SPConfig::getConfig().AttributeDecoderManager.newPlugin(StringAttributeDecoderType, NULL); + decoder = SPConfig::getConfig().AttributeDecoderManager.newPlugin(StringAttributeDecoderType, nullptr); } catch (exception& ex) { m_log.error("skipping Attribute (%s), error building AttributeDecoder: %s", id.get(), ex.what()); @@ -339,7 +339,7 @@ XMLExtractorImpl::XMLExtractorImpl(const DOMElement* e, Category& log) } // Empty NameFormat implies the usual Shib URI naming defaults. - const XMLCh* format = child->getAttributeNS(NULL, nameFormat); + const XMLCh* format = child->getAttributeNS(nullptr, nameFormat); if (!format || XMLString::equals(format, shibspconstants::SHIB1_ATTRIBUTE_NAMESPACE_URI) || XMLString::equals(format, saml2::Attribute::URI_REFERENCE)) format = &chNull; // ignore default Format/Namespace values @@ -371,7 +371,7 @@ XMLExtractorImpl::XMLExtractorImpl(const DOMElement* e, Category& log) decl.second.push_back(id.get()); m_attributeIds.push_back(id.get()); - name = child->getAttributeNS(NULL, _aliases); + name = child->getAttributeNS(nullptr, _aliases); if (name && *name) { auto_ptr_char aliases(name); char* pos; @@ -391,7 +391,7 @@ XMLExtractorImpl::XMLExtractorImpl(const DOMElement* e, Category& log) else { m_log.warn("skipping alias, REMOTE_USER is a reserved name"); } - start = pos ? pos+1 : NULL; + start = pos ? pos+1 : nullptr; } } @@ -643,7 +643,7 @@ void XMLExtractorImpl::extractAttributes( const vector& attrs = container->getAttributes(); for (vector::const_iterator attr = attrs.begin(); attr != attrs.end(); ++attr) { try { - extractAttributes(application, NULL, relyingParty, *(*attr), holding); + extractAttributes(application, nullptr, relyingParty, *(*attr), holding); } catch (...) { if (useCache) @@ -672,7 +672,7 @@ void XMLExtractorImpl::extractAttributes( } else { // Check subject. - const NameID* subject = (*assert)->getSubject() ? (*assert)->getSubject()->getNameID() : NULL; + const NameID* subject = (*assert)->getSubject() ? (*assert)->getSubject()->getNameID() : nullptr; if (!subject || !XMLString::equals(subject->getFormat(), NameID::ENTITY) || !XMLString::equals(subject->getName(), entityID)) { @@ -696,7 +696,7 @@ void XMLExtractorImpl::extractAttributes( if (m_trust) policy.setTrustEngine(m_trust); // Populate recipient as audience. - const XMLCh* issuer = (*assert)->getIssuer() ? (*assert)->getIssuer()->getName() : NULL; + const XMLCh* issuer = (*assert)->getIssuer() ? (*assert)->getIssuer()->getName() : nullptr; policy.getAudiences().push_back(application.getRelyingParty(issuer)->getXMLString("entityID").second); // Extract assertion information for policy. @@ -747,8 +747,8 @@ void XMLExtractorImpl::extractAttributes( // Override the asserting/relying party names based on this new issuer. const EntityDescriptor* inlineEntity = - policy.getIssuerMetadata() ? dynamic_cast(policy.getIssuerMetadata()->getParent()) : NULL; - auto_ptr_char inlineAssertingParty(inlineEntity ? inlineEntity->getEntityID() : NULL); + policy.getIssuerMetadata() ? dynamic_cast(policy.getIssuerMetadata()->getParent()) : nullptr; + auto_ptr_char inlineAssertingParty(inlineEntity ? inlineEntity->getEntityID() : nullptr); relyingParty = application.getRelyingParty(inlineEntity)->getString("entityID").second; const vector& attrs2 = const_cast(tokencopy->getAttributeStatements().front())->getAttributes(); @@ -830,14 +830,14 @@ void XMLExtractor::extractAttributes( if (!m_impl) return; - const EntityDescriptor* entity = issuer ? dynamic_cast(issuer->getParent()) : NULL; + const EntityDescriptor* entity = issuer ? dynamic_cast(issuer->getParent()) : nullptr; const char* relyingParty = application.getRelyingParty(entity)->getString("entityID").second; // Check for statements. if (XMLString::equals(xmlObject.getElementQName().getLocalPart(), saml1::AttributeStatement::LOCAL_NAME)) { const saml2::AttributeStatement* statement2 = dynamic_cast(&xmlObject); if (statement2) { - auto_ptr_char assertingParty(entity ? entity->getEntityID() : NULL); + auto_ptr_char assertingParty(entity ? entity->getEntityID() : nullptr); m_impl->extractAttributes(application, assertingParty.get(), relyingParty, *statement2, attributes); // Handle EncryptedAttributes inline so we have access to the role descriptor. const vector& encattrs = statement2->getEncryptedAttributes(); @@ -848,7 +848,7 @@ void XMLExtractor::extractAttributes( const saml1::AttributeStatement* statement1 = dynamic_cast(&xmlObject); if (statement1) { - auto_ptr_char assertingParty(entity ? entity->getEntityID() : NULL); + auto_ptr_char assertingParty(entity ? entity->getEntityID() : nullptr); m_impl->extractAttributes(application, assertingParty.get(), relyingParty, *statement1, attributes); return; } @@ -860,7 +860,7 @@ void XMLExtractor::extractAttributes( if (XMLString::equals(xmlObject.getElementQName().getLocalPart(), saml1::Assertion::LOCAL_NAME)) { const saml2::Assertion* token2 = dynamic_cast(&xmlObject); if (token2) { - auto_ptr_char assertingParty(entity ? entity->getEntityID() : NULL); + auto_ptr_char assertingParty(entity ? entity->getEntityID() : nullptr); const vector& statements = token2->getAttributeStatements(); for (vector::const_iterator s = statements.begin(); s!=statements.end(); ++s) { m_impl->extractAttributes(application, assertingParty.get(), relyingParty, *(*s), attributes); @@ -874,7 +874,7 @@ void XMLExtractor::extractAttributes( const saml1::Assertion* token1 = dynamic_cast(&xmlObject); if (token1) { - auto_ptr_char assertingParty(entity ? entity->getEntityID() : NULL); + auto_ptr_char assertingParty(entity ? entity->getEntityID() : nullptr); const vector& statements = token1->getAttributeStatements(); for (vector::const_iterator s = statements.begin(); s!=statements.end(); ++s) m_impl->extractAttributes(application, assertingParty.get(), relyingParty, *(*s), attributes); @@ -887,7 +887,7 @@ void XMLExtractor::extractAttributes( // Check for metadata. if (XMLString::equals(xmlObject.getElementQName().getNamespaceURI(), samlconstants::SAML20MD_NS)) { const RoleDescriptor* roleToExtract = dynamic_cast(&xmlObject); - const EntityDescriptor* entityToExtract = roleToExtract ? dynamic_cast(roleToExtract->getParent()) : NULL; + const EntityDescriptor* entityToExtract = roleToExtract ? dynamic_cast(roleToExtract->getParent()) : nullptr; if (!entityToExtract) throw AttributeExtractionException("Unable to extract attributes, unknown metadata object type."); const Extensions* ext = entityToExtract->getExtensions(); @@ -908,7 +908,7 @@ void XMLExtractor::extractAttributes( m_impl->extractAttributes( application, dynamic_cast(application.getMetadataProvider(false)), - NULL, // not an entity, so inline assertions won't be processed + nullptr, // not an entity, so inline assertions won't be processed relyingParty, *ext, attributes @@ -921,7 +921,7 @@ void XMLExtractor::extractAttributes( // Check for attributes. if (XMLString::equals(xmlObject.getElementQName().getLocalPart(), saml1::Attribute::LOCAL_NAME)) { - auto_ptr_char assertingParty(entity ? entity->getEntityID() : NULL); + auto_ptr_char assertingParty(entity ? entity->getEntityID() : nullptr); const saml2::Attribute* attr2 = dynamic_cast(&xmlObject); if (attr2) return m_impl->extractAttributes(application, assertingParty.get(), relyingParty, *attr2, attributes); @@ -969,13 +969,13 @@ void XMLExtractor::extractAttributes( // Check for NameIDs. const NameID* name2 = dynamic_cast(&xmlObject); if (name2) { - auto_ptr_char assertingParty(entity ? entity->getEntityID() : NULL); + auto_ptr_char assertingParty(entity ? entity->getEntityID() : nullptr); return m_impl->extractAttributes(application, assertingParty.get(), relyingParty, *name2, attributes); } const NameIdentifier* name1 = dynamic_cast(&xmlObject); if (name1) { - auto_ptr_char assertingParty(entity ? entity->getEntityID() : NULL); + auto_ptr_char assertingParty(entity ? entity->getEntityID() : nullptr); return m_impl->extractAttributes(application, assertingParty.get(), relyingParty, *name1, attributes); } @@ -988,7 +988,7 @@ pair XMLExtractor::background_load() pair raw = ReloadableXMLFile::load(); // If we own it, wrap it. - XercesJanitor docjanitor(raw.first ? raw.second->getOwnerDocument() : NULL); + XercesJanitor docjanitor(raw.first ? raw.second->getOwnerDocument() : nullptr); XMLExtractorImpl* impl = new XMLExtractorImpl(raw.second, m_log); @@ -1002,5 +1002,5 @@ pair XMLExtractor::background_load() delete m_impl; m_impl = impl; - return make_pair(false,(DOMElement*)NULL); + return make_pair(false,(DOMElement*)nullptr); } diff --git a/shibsp/binding/impl/ArtifactResolver.cpp b/shibsp/binding/impl/ArtifactResolver.cpp index 3e18aff..d05e00a 100644 --- a/shibsp/binding/impl/ArtifactResolver.cpp +++ b/shibsp/binding/impl/ArtifactResolver.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -65,7 +65,7 @@ saml1p::Response* ArtifactResolver::resolve( bool foundEndpoint = false; auto_ptr_XMLCh binding(samlconstants::SAML1_BINDING_SOAP); - saml1p::Response* response=NULL; + saml1p::Response* response=nullptr; const vector& endpoints=idpDescriptor.getArtifactResolutionServices(); for (vector::const_iterator ep=endpoints.begin(); !response && ep!=endpoints.end(); ++ep) { try { @@ -96,7 +96,7 @@ saml1p::Response* ArtifactResolver::resolve( throw MetadataException("No compatible endpoint found in issuer's metadata."); else if (!response) throw BindingException("Unable to resolve artifact(s) into a SAML response."); - const xmltooling::QName* code = (response->getStatus() && response->getStatus()->getStatusCode()) ? response->getStatus()->getStatusCode()->getValue() : NULL; + const xmltooling::QName* code = (response->getStatus() && response->getStatus()->getStatusCode()) ? response->getStatus()->getStatusCode()->getValue() : nullptr; if (!code || *code != saml1p::StatusCode::SUCCESS) { delete response; throw BindingException("Identity provider returned a SAML error in response to artifact(s)."); @@ -119,7 +119,7 @@ ArtifactResponse* ArtifactResolver::resolve( bool foundEndpoint = false; auto_ptr_XMLCh binding(samlconstants::SAML20_BINDING_SOAP); - ArtifactResponse* response=NULL; + ArtifactResponse* response=nullptr; const vector& endpoints=ssoDescriptor.getArtifactResolutionServices(); for (vector::const_iterator ep=endpoints.begin(); !response && ep!=endpoints.end(); ++ep) { try { diff --git a/shibsp/binding/impl/SOAPClient.cpp b/shibsp/binding/impl/SOAPClient.cpp index e12f4f0..c04ff52 100644 --- a/shibsp/binding/impl/SOAPClient.cpp +++ b/shibsp/binding/impl/SOAPClient.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -43,7 +43,7 @@ using namespace xmltooling; using namespace std; SOAPClient::SOAPClient(SecurityPolicy& policy) - : opensaml::SOAPClient(policy), m_app(policy.getApplication()), m_relyingParty(NULL), m_credResolver(NULL) + : opensaml::SOAPClient(policy), m_app(policy.getApplication()), m_relyingParty(nullptr), m_credResolver(nullptr) { } @@ -72,7 +72,7 @@ void SOAPClient::send(const soap11::Envelope& env, const char* from, MetadataCre to.setXMLAlgorithm(sigalg.second); const Credential* cred = m_credResolver->resolve(&to); // Reset criteria back. - to.setKeyAlgorithm(NULL); + to.setKeyAlgorithm(nullptr); to.setKeySize(0); to.getKeyNames().clear(); @@ -93,7 +93,7 @@ void SOAPClient::send(const soap11::Envelope& env, const char* from, MetadataCre // Sign it. The marshalling step in the base class should be a no-op. vector sigs(1,sig); - env.marshall((DOMDocument*)NULL,&sigs,cred); + env.marshall((DOMDocument*)nullptr,&sigs,cred); } } } @@ -194,10 +194,10 @@ void SOAPClient::prepareTransport(SOAPTransport& transport) void SOAPClient::reset() { - m_relyingParty = NULL; + m_relyingParty = nullptr; if (m_credResolver) m_credResolver->unlock(); - m_credResolver = NULL; + m_credResolver = nullptr; opensaml::SOAPClient::reset(); } diff --git a/shibsp/handler/AbstractHandler.h b/shibsp/handler/AbstractHandler.h index 78f3183..c9b0e59 100644 --- a/shibsp/handler/AbstractHandler.h +++ b/shibsp/handler/AbstractHandler.h @@ -73,8 +73,8 @@ namespace shibsp { AbstractHandler( const xercesc::DOMElement* e, xmltooling::logging::Category& log, - xercesc::DOMNodeFilter* filter=NULL, - const std::map* remapper=NULL + xercesc::DOMNodeFilter* filter=nullptr, + const std::map* remapper=nullptr ); void log(SPRequest::SPLogLevel level, const std::string& msg) const; @@ -91,7 +91,7 @@ namespace shibsp { */ virtual void checkError( const xmltooling::XMLObject* response, - const opensaml::saml2md::RoleDescriptor* role=NULL + const opensaml::saml2md::RoleDescriptor* role=nullptr ) const; /** @@ -103,7 +103,7 @@ namespace shibsp { * @param msg optional message to pass back */ void fillStatus( - opensaml::saml2p::StatusResponseType& response, const XMLCh* code, const XMLCh* subcode=NULL, const char* msg=NULL + opensaml::saml2p::StatusResponseType& response, const XMLCh* code, const XMLCh* subcode=nullptr, const char* msg=nullptr ) const; /** @@ -204,7 +204,7 @@ namespace shibsp { * @param name property name * @param request reference to incoming request * @param type bitmask of property sources to use - * @return a pair consisting of a NULL indicator and the property value iff the indicator is true + * @return a pair consisting of a nullptr indicator and the property value iff the indicator is true */ std::pair getBool(const char* name, const SPRequest& request, unsigned int type=HANDLER_PROPERTY_ALL) const; @@ -214,7 +214,7 @@ namespace shibsp { * @param name property name * @param request reference to incoming request * @param type bitmask of property sources to use - * @return a pair consisting of a NULL indicator and the property value iff the indicator is true + * @return a pair consisting of a nullptr indicator and the property value iff the indicator is true */ std::pair getString(const char* name, const SPRequest& request, unsigned int type=HANDLER_PROPERTY_ALL) const; @@ -224,7 +224,7 @@ namespace shibsp { * @param name property name * @param request reference to incoming request * @param type bitmask of property sources to use - * @return a pair consisting of a NULL indicator and the property value iff the indicator is true + * @return a pair consisting of a nullptr indicator and the property value iff the indicator is true */ std::pair getUnsignedInt(const char* name, const SPRequest& request, unsigned int type=HANDLER_PROPERTY_ALL) const; @@ -234,7 +234,7 @@ namespace shibsp { * @param name property name * @param request reference to incoming request * @param type bitmask of property sources to use - * @return a pair consisting of a NULL indicator and the property value iff the indicator is true + * @return a pair consisting of a nullptr indicator and the property value iff the indicator is true */ std::pair getInt(const char* name, const SPRequest& request, unsigned int type=HANDLER_PROPERTY_ALL) const; diff --git a/shibsp/handler/AssertionConsumerService.h b/shibsp/handler/AssertionConsumerService.h index 4354e97..bbdafd4 100644 --- a/shibsp/handler/AssertionConsumerService.h +++ b/shibsp/handler/AssertionConsumerService.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -77,8 +77,8 @@ namespace shibsp { const xercesc::DOMElement* e, const char* appId, xmltooling::logging::Category& log, - xercesc::DOMNodeFilter* filter=NULL, - const std::map* remapper=NULL + xercesc::DOMNodeFilter* filter=nullptr, + const std::map* remapper=nullptr ); /** @@ -162,13 +162,13 @@ namespace shibsp { */ ResolutionContext* resolveAttributes( const Application& application, - const opensaml::saml2md::RoleDescriptor* issuer=NULL, - const XMLCh* protocol=NULL, - const opensaml::saml1::NameIdentifier* v1nameid=NULL, - const opensaml::saml2::NameID* nameid=NULL, - const XMLCh* authncontext_class=NULL, - const XMLCh* authncontext_decl=NULL, - const std::vector* tokens=NULL + const opensaml::saml2md::RoleDescriptor* issuer=nullptr, + const XMLCh* protocol=nullptr, + const opensaml::saml1::NameIdentifier* v1nameid=nullptr, + const opensaml::saml2::NameID* nameid=nullptr, + const XMLCh* authncontext_class=nullptr, + const XMLCh* authncontext_decl=nullptr, + const std::vector* tokens=nullptr ) const; public: diff --git a/shibsp/handler/LogoutHandler.h b/shibsp/handler/LogoutHandler.h index 7040500..e23f7db 100644 --- a/shibsp/handler/LogoutHandler.h +++ b/shibsp/handler/LogoutHandler.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -89,7 +89,7 @@ namespace shibsp { const Application& application, const xmltooling::HTTPRequest& request, xmltooling::HTTPResponse& response, - const std::map* params=NULL + const std::map* params=nullptr ) const; /** @@ -120,7 +120,7 @@ namespace shibsp { const xmltooling::HTTPRequest& request, xmltooling::HTTPResponse& response, bool local=true, - const char* status=NULL + const char* status=nullptr ) const; /** diff --git a/shibsp/handler/RemotedHandler.h b/shibsp/handler/RemotedHandler.h index d7bdd8a..3511af6 100644 --- a/shibsp/handler/RemotedHandler.h +++ b/shibsp/handler/RemotedHandler.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -60,7 +60,7 @@ namespace shibsp { * @param certs true iff client certificates should be available for the remote request * @return the input dataflow object */ - DDF wrap(const SPRequest& request, const std::vector* headers=NULL, bool certs=false) const; + DDF wrap(const SPRequest& request, const std::vector* headers=nullptr, bool certs=false) const; /** * Unwraps a response by examining an incoming data flow to determine diff --git a/shibsp/handler/impl/AbstractHandler.cpp b/shibsp/handler/impl/AbstractHandler.cpp index 6e1a0ba..e8e8b55 100644 --- a/shibsp/handler/impl/AbstractHandler.cpp +++ b/shibsp/handler/impl/AbstractHandler.cpp @@ -204,7 +204,7 @@ void Handler::preserveRelayState(const Application& application, HTTPResponse& r if (storage) { string rsKey; generateRandomHex(rsKey,5); - if (!storage->createString("RelayState", rsKey.c_str(), relayState.c_str(), time(NULL) + 600)) + if (!storage->createString("RelayState", rsKey.c_str(), relayState.c_str(), time(nullptr) + 600)) throw IOException("Attempted to insert duplicate storage key."); relayState = string(mech.second-3) + ':' + rsKey; } @@ -334,7 +334,7 @@ void Handler::recoverRelayState( AbstractHandler::AbstractHandler( const DOMElement* e, Category& log, DOMNodeFilter* filter, const map* remapper ) : m_log(log), m_configNS(shibspconstants::SHIB2SPCONFIG_NS) { - load(e,NULL,filter,remapper); + load(e,nullptr,filter,remapper); } AbstractHandler::~AbstractHandler() @@ -366,7 +366,7 @@ void AbstractHandler::checkError(const XMLObject* response, const saml2md::RoleD const saml2p::Status* status = r2->getStatus(); if (status) { const saml2p::StatusCode* sc = status->getStatusCode(); - const XMLCh* code = sc ? sc->getValue() : NULL; + const XMLCh* code = sc ? sc->getValue() : nullptr; if (code && !XMLString::equals(code,saml2p::StatusCode::SUCCESS)) { FatalProfileException ex("SAML response contained an error."); annotateException(&ex, role, status); // throws it @@ -379,7 +379,7 @@ void AbstractHandler::checkError(const XMLObject* response, const saml2md::RoleD const saml1p::Status* status = r1->getStatus(); if (status) { const saml1p::StatusCode* sc = status->getStatusCode(); - const xmltooling::QName* code = sc ? sc->getValue() : NULL; + const xmltooling::QName* code = sc ? sc->getValue() : nullptr; if (code && *code != saml1p::StatusCode::SUCCESS) { FatalProfileException ex("SAML response contained an error."); ex.addProperty("statusCode", code->toString().c_str()); @@ -431,7 +431,7 @@ long AbstractHandler::sendMessage( bool signIfPossible ) const { - const EntityDescriptor* entity = role ? dynamic_cast(role->getParent()) : NULL; + const EntityDescriptor* entity = role ? dynamic_cast(role->getParent()) : nullptr; const PropertySet* relyingParty = application.getRelyingParty(entity); pair flag = signIfPossible ? make_pair(true,(const char*)"true") : relyingParty->getString("signing"); if (role && flag.first && @@ -441,7 +441,7 @@ long AbstractHandler::sendMessage( CredentialResolver* credResolver=application.getCredentialResolver(); if (credResolver) { Locker credLocker(credResolver); - const Credential* cred = NULL; + const Credential* cred = nullptr; pair keyName = relyingParty->getString("keyName"); pair sigalg = relyingParty->getXMLString("signingAlg"); if (role) { @@ -532,7 +532,7 @@ void AbstractHandler::preservePostData( rsKey = SAMLArtifact::toHex(rsKey); ostringstream out; out << postData; - if (!storage->createString("PostData", rsKey.c_str(), out.str().c_str(), time(NULL) + 600)) + if (!storage->createString("PostData", rsKey.c_str(), out.str().c_str(), time(nullptr) + 600)) throw IOException("Attempted to insert duplicate storage key."); postkey = string(mech.second-3) + ':' + rsKey; } @@ -692,7 +692,7 @@ DDF AbstractHandler::getPostData(const Application& application, const HTTPReque plimit.second = 1024 * 1024; if (plimit.second == 0 || request.getContentLength() <= plimit.second) { CGIParser cgi(request); - pair params = cgi.getParameters(NULL); + pair params = cgi.getParameters(nullptr); if (params.first == params.second) return DDF("parameters").list(); DDF child; @@ -754,7 +754,7 @@ pair AbstractHandler::getString(const char* name, const SPRequ return getString(name); } - return pair(false,NULL); + return pair(false,nullptr); } pair AbstractHandler::getUnsignedInt(const char* name, const SPRequest& request, unsigned int type) const @@ -762,7 +762,7 @@ pair AbstractHandler::getUnsignedInt(const char* name, const if (type & HANDLER_PROPERTY_REQUEST) { const char* param = request.getParameter(name); if (param && *param) - return pair(true, strtol(param,NULL,10)); + return pair(true, strtol(param,nullptr,10)); } if (type & HANDLER_PROPERTY_MAP) { diff --git a/shibsp/handler/impl/AssertionConsumerService.cpp b/shibsp/handler/impl/AssertionConsumerService.cpp index f5d4e5e..1c1160b 100644 --- a/shibsp/handler/impl/AssertionConsumerService.cpp +++ b/shibsp/handler/impl/AssertionConsumerService.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -63,7 +63,7 @@ AssertionConsumerService::AssertionConsumerService( const DOMElement* e, const char* appId, Category& log, DOMNodeFilter* filter, const map* remapper ) : AbstractHandler(e, log, filter, remapper) #ifndef SHIBSP_LITE - ,m_decoder(NULL), m_role(samlconstants::SAML20MD_NS, opensaml::saml2md::IDPSSODescriptor::LOCAL_NAME) + ,m_decoder(nullptr), m_role(samlconstants::SAML20MD_NS, opensaml::saml2md::IDPSSODescriptor::LOCAL_NAME) #endif { if (!e) @@ -111,7 +111,7 @@ void AssertionConsumerService::receive(DDF& in, ostream& out) { // Find application. const char* aid=in["application_id"].string(); - const Application* app=aid ? SPConfig::getConfig().getServiceProvider()->getApplication(aid) : NULL; + const Application* app=aid ? SPConfig::getConfig().getServiceProvider()->getApplication(aid) : nullptr; if (!app) { // Something's horribly wrong. m_log.error("couldn't find application (%s) for new session", aid ? aid : "(missing)"); @@ -122,7 +122,7 @@ void AssertionConsumerService::receive(DDF& in, ostream& out) auto_ptr req(getRequest(in)); // Wrap a response shim. - DDF ret(NULL); + DDF ret(nullptr); DDFJanitor jout(ret); auto_ptr resp(getResponse(ret)); @@ -166,7 +166,7 @@ pair AssertionConsumerService::processMessage( recoverRelayState(application, httpRequest, httpResponse, relayState); implementProtocol(application, httpRequest, httpResponse, *(policy.get()), settings, *msg.get()); - auto_ptr_char issuer(policy->getIssuer() ? policy->getIssuer()->getName() : NULL); + auto_ptr_char issuer(policy->getIssuer() ? policy->getIssuer()->getName() : nullptr); // History cookie. if (issuer.get() && *issuer.get()) @@ -314,8 +314,8 @@ ResolutionContext* AssertionConsumerService::resolveAttributes( if (mprefix.first) { m_log.debug("extracting metadata-derived attributes..."); try { - // We pass NULL for "issuer" because the IdP isn't the one asserting metadata-based attributes. - extractor->extractAttributes(application, NULL, *issuer, resolvedAttributes); + // We pass nullptr for "issuer" because the IdP isn't the one asserting metadata-based attributes. + extractor->extractAttributes(application, nullptr, *issuer, resolvedAttributes); for (vector::iterator a = resolvedAttributes.begin(); a != resolvedAttributes.end(); ++a) { vector& ids = (*a)->getAliases(); for (vector::iterator id = ids.begin(); id != ids.end(); ++id) @@ -383,7 +383,7 @@ ResolutionContext* AssertionConsumerService::resolveAttributes( auto_ptr ctx( resolver->createResolutionContext( application, - issuer ? dynamic_cast(issuer->getParent()) : NULL, + issuer ? dynamic_cast(issuer->getParent()) : nullptr, protocol, nameid, authncontext_class, @@ -405,7 +405,7 @@ ResolutionContext* AssertionConsumerService::resolveAttributes( if (!resolvedAttributes.empty()) return new DummyContext(resolvedAttributes); - return NULL; + return nullptr; } void AssertionConsumerService::extractMessageDetails(const Assertion& assertion, const XMLCh* protocol, opensaml::SecurityPolicy& policy) const @@ -479,7 +479,7 @@ void AssertionConsumerService::maintainHistory( response.setCookie(CommonDomainCookie::CDCName, c.c_str()); } else { - time_t now=time(NULL) + (days.second * 24 * 60 * 60); + time_t now=time(nullptr) + (days.second * 24 * 60 * 60); #ifdef HAVE_GMTIME_R struct tm res; struct tm* ptime=gmtime_r(&now,&res); diff --git a/shibsp/handler/impl/AssertionLookup.cpp b/shibsp/handler/impl/AssertionLookup.cpp index d842763..05204f8 100644 --- a/shibsp/handler/impl/AssertionLookup.cpp +++ b/shibsp/handler/impl/AssertionLookup.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,7 +17,7 @@ /** * AssertionLookup.cpp * - * Handler for looking assertions in SessionCache + * Handler for looking up assertions in the SessionCache. */ #include "internal.h" @@ -153,7 +153,7 @@ void AssertionLookup::receive(DDF& in, ostream& out) { // Find application. const char* aid=in["application_id"].string(); - const Application* app=aid ? SPConfig::getConfig().getServiceProvider()->getApplication(aid) : NULL; + const Application* app=aid ? SPConfig::getConfig().getServiceProvider()->getApplication(aid) : nullptr; if (!app) { // Something's horribly wrong. m_log.error("couldn't find application (%s) for assertion lookup", aid ? aid : "(missing)"); @@ -165,7 +165,7 @@ void AssertionLookup::receive(DDF& in, ostream& out) //m_log.debug("found %d client certificates", req->getClientCertificates().size()); // Wrap a response shim. - DDF ret(NULL); + DDF ret(nullptr); DDFJanitor jout(ret); auto_ptr resp(getResponse(ret)); @@ -194,7 +194,7 @@ pair AssertionLookup::processMessage(const Application& application, throw FatalProfileException("Session cache does not support assertion lookup."); } - // The cache will either silently pass a session or NULL back, or throw an exception out. + // The cache will either silently pass a session or nullptr back, or throw an exception out. Session* session = cache->find(application, key); if (!session) { m_log.error("valid session (%s) not found for assertion lookup", key); diff --git a/shibsp/handler/impl/ChainingLogoutInitiator.cpp b/shibsp/handler/impl/ChainingLogoutInitiator.cpp index 4fc6776..2475787 100644 --- a/shibsp/handler/impl/ChainingLogoutInitiator.cpp +++ b/shibsp/handler/impl/ChainingLogoutInitiator.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2007 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -101,9 +101,9 @@ ChainingLogoutInitiator::ChainingLogoutInitiator(const DOMElement* e, const char SPConfig& conf = SPConfig::getConfig(); // Load up the chain of handlers. - e = e ? XMLHelper::getFirstChildElement(e, _LogoutInitiator) : NULL; + e = e ? XMLHelper::getFirstChildElement(e, _LogoutInitiator) : nullptr; while (e) { - auto_ptr_char type(e->getAttributeNS(NULL,_type)); + auto_ptr_char type(e->getAttributeNS(nullptr,_type)); if (type.get() && *(type.get())) { try { m_handlers.push_back(conf.LogoutInitiatorManager.newPlugin(type.get(),make_pair(e, appId))); diff --git a/shibsp/handler/impl/ChainingSessionInitiator.cpp b/shibsp/handler/impl/ChainingSessionInitiator.cpp index 468a9e9..f01cd31 100644 --- a/shibsp/handler/impl/ChainingSessionInitiator.cpp +++ b/shibsp/handler/impl/ChainingSessionInitiator.cpp @@ -97,9 +97,9 @@ ChainingSessionInitiator::ChainingSessionInitiator(const DOMElement* e, const ch SPConfig& conf = SPConfig::getConfig(); // Load up the chain of handlers. - e = e ? XMLHelper::getFirstChildElement(e, _SessionInitiator) : NULL; + e = e ? XMLHelper::getFirstChildElement(e, _SessionInitiator) : nullptr; while (e) { - auto_ptr_char type(e->getAttributeNS(NULL,_type)); + auto_ptr_char type(e->getAttributeNS(nullptr,_type)); if (type.get() && *(type.get())) { try { m_handlers.push_back(conf.SessionInitiatorManager.newPlugin(type.get(),make_pair(e, appId))); diff --git a/shibsp/handler/impl/LogoutHandler.cpp b/shibsp/handler/impl/LogoutHandler.cpp index 5d6b087..63e7553 100644 --- a/shibsp/handler/impl/LogoutHandler.cpp +++ b/shibsp/handler/impl/LogoutHandler.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -59,7 +59,7 @@ pair LogoutHandler::sendLogoutPage( { string tname = string(type) + "Logout"; const PropertySet* props = application.getPropertySet("Errors"); - pair prop = props ? props->getString(tname.c_str()) : pair(false,NULL); + pair prop = props ? props->getString(tname.c_str()) : pair(false,nullptr); if (!prop.first) { tname += ".html"; prop.second = tname.c_str(); @@ -96,14 +96,14 @@ pair LogoutHandler::run(SPRequest& request, bool isHandler) const void LogoutHandler::receive(DDF& in, ostream& out) { - DDF ret(NULL); + DDF ret(nullptr); DDFJanitor jout(ret); if (in["notify"].integer() != 1) throw ListenerException("Unsupported operation."); // Find application. const char* aid=in["application_id"].string(); - const Application* app=aid ? SPConfig::getConfig().getServiceProvider()->getApplication(aid) : NULL; + const Application* app=aid ? SPConfig::getConfig().getServiceProvider()->getApplication(aid) : nullptr; if (!app) { // Something's horribly wrong. Category::getInstance(SHIBSP_LOGCAT".Logout").error("couldn't find application (%s) for logout", aid ? aid : "(missing)"); @@ -235,7 +235,7 @@ bool LogoutHandler::notifyBackChannel( env->setBody(body); ElementProxy* msg = new AnyElementImpl(shibspconstants::SHIB2SPNOTIFY_NS, LogoutNotification); body->getUnknownXMLObjects().push_back(msg); - msg->setAttribute(xmltooling::QName(NULL, _type), local ? _local : _global); + msg->setAttribute(xmltooling::QName(nullptr, _type), local ? _local : _global); for (vector::const_iterator s = sessions.begin(); s!=sessions.end(); ++s) { auto_ptr_XMLCh temp(s->c_str()); ElementProxy* child = new AnyElementImpl(shibspconstants::SHIB2SPNOTIFY_NS, SessionID); @@ -273,7 +273,7 @@ bool LogoutHandler::notifyBackChannel( in.addmember("local").integer(1); DDF s = in.addmember("sessions").list(); for (vector::const_iterator i = sessions.begin(); i!=sessions.end(); ++i) { - DDF temp = DDF(NULL).string(i->c_str()); + DDF temp = DDF(nullptr).string(i->c_str()); s.add(temp); } out=application.getServiceProvider().getListenerService()->send(in); diff --git a/shibsp/handler/impl/MetadataGenerator.cpp b/shibsp/handler/impl/MetadataGenerator.cpp index 322b7e3..feafda6 100644 --- a/shibsp/handler/impl/MetadataGenerator.cpp +++ b/shibsp/handler/impl/MetadataGenerator.cpp @@ -205,7 +205,7 @@ void MetadataGenerator::receive(DDF& in, ostream& out) // Find application. const char* aid=in["application_id"].string(); const char* hurl=in["handler_url"].string(); - const Application* app=aid ? SPConfig::getConfig().getServiceProvider()->getApplication(aid) : NULL; + const Application* app=aid ? SPConfig::getConfig().getServiceProvider()->getApplication(aid) : nullptr; if (!app) { // Something's horribly wrong. m_log.error("couldn't find application (%s) for metadata request", aid ? aid : "(missing)"); @@ -216,7 +216,7 @@ void MetadataGenerator::receive(DDF& in, ostream& out) } // Wrap a response shim. - DDF ret(NULL); + DDF ret(nullptr); DDFJanitor jout(ret); auto_ptr resp(getResponse(ret)); @@ -234,7 +234,7 @@ pair MetadataGenerator::processMessage( #ifndef SHIBSP_LITE m_log.debug("processing metadata request"); - const PropertySet* relyingParty=NULL; + const PropertySet* relyingParty=nullptr; if (entityID) { MetadataProvider* m=application.getMetadataProvider(); Locker locker(m); @@ -281,7 +281,7 @@ pair MetadataGenerator::processMessage( } cache = getUnsignedInt("validUntil"); if (cache.first) - entity->setValidUntil(time(NULL) + cache.second); + entity->setValidUntil(time(nullptr) + cache.second); entity->setEntityID(relyingParty->getXMLString("entityID").second); SPSSODescriptor* role; diff --git a/shibsp/handler/impl/RemotedHandler.cpp b/shibsp/handler/impl/RemotedHandler.cpp index 93f21df..6a6db3a 100644 --- a/shibsp/handler/impl/RemotedHandler.cpp +++ b/shibsp/handler/impl/RemotedHandler.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -52,7 +52,7 @@ namespace shibsp { mutable CGIParser* m_parser; mutable vector m_certs; public: - RemotedRequest(DDF& input) : m_input(input), m_parser(NULL) {} + RemotedRequest(DDF& input) : m_input(input), m_parser(nullptr) {} virtual ~RemotedRequest() { for_each(m_certs.begin(), m_certs.end(), xmltooling::cleanup()); delete m_parser; @@ -134,7 +134,7 @@ const char* RemotedRequest::getParameter(const char* name) const m_parser=new CGIParser(*this); pair bounds=m_parser->getParameters(name); - return (bounds.first==bounds.second) ? NULL : bounds.first->second; + return (bounds.first==bounds.second) ? nullptr : bounds.first->second; } std::vector::size_type RemotedRequest::getParameters(const char* name, std::vector& values) const @@ -273,7 +273,7 @@ DDF RemotedHandler::wrap(const SPRequest& request, const vector* headers if (!xvec.empty()) { DDF clist = in.addmember("certificates").list(); for (vector::const_iterator x = xvec.begin(); x!=xvec.end(); ++x) { - DDF x509 = DDF(NULL).string((*x)->getDEREncodingSB().rawCharBuffer()); + DDF x509 = DDF(nullptr).string((*x)->getDEREncodingSB().rawCharBuffer()); clist.add(x509); } } @@ -282,7 +282,7 @@ DDF RemotedHandler::wrap(const SPRequest& request, const vector* headers if (!xvec.empty()) { DDF clist = in.addmember("certificates").list(); for (vector::const_iterator x = xvec.begin(); x!=xvec.end(); ++x) { - DDF x509 = DDF(NULL).string(x->c_str()); + DDF x509 = DDF(nullptr).string(x->c_str()); clist.add(x509); } } diff --git a/shibsp/handler/impl/SAML1Consumer.cpp b/shibsp/handler/impl/SAML1Consumer.cpp index 88ab9c0..b098aab 100644 --- a/shibsp/handler/impl/SAML1Consumer.cpp +++ b/shibsp/handler/impl/SAML1Consumer.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,7 +17,7 @@ /** * SAML1Consumer.cpp * - * SAML 1.x assertion consumer service + * SAML 1.x assertion consumer service. */ #include "internal.h" @@ -66,7 +66,7 @@ namespace shibsp { SAML1Consumer(const DOMElement* e, const char* appId) : AssertionConsumerService(e, appId, Category::getInstance(SHIBSP_LOGCAT".SSO.SAML1")) { #ifndef SHIBSP_LITE - m_ssoRule = NULL; + m_ssoRule = nullptr; m_post = XMLString::equals(getString("Binding").second, samlconstants::SAML1_PROFILE_BROWSER_POST); if (SPConfig::getConfig().isEnabled(SPConfig::OutOfProcess)) m_ssoRule = SAMLConfig::getConfig().SecurityPolicyRuleManager.newPlugin(SAML1BROWSERSSO_POLICY_RULE, e); @@ -165,7 +165,7 @@ void SAML1Consumer::implementProtocol( pair minor = response->getMinorVersion(); // Maintain list of "legit" tokens to feed to SP subsystems. - const AuthenticationStatement* ssoStatement=NULL; + const AuthenticationStatement* ssoStatement=nullptr; vector tokens; // Also track "bad" tokens that we'll cache but not use. @@ -173,7 +173,7 @@ void SAML1Consumer::implementProtocol( vector badtokens; // With this flag on, we ignore any unsigned assertions. - const EntityDescriptor* entity = policy.getIssuerMetadata() ? dynamic_cast(policy.getIssuerMetadata()->getParent()) : NULL; + const EntityDescriptor* entity = policy.getIssuerMetadata() ? dynamic_cast(policy.getIssuerMetadata()->getParent()) : nullptr; pair flag = application.getRelyingParty(entity)->getBool("requireSignedAssertions"); // authnskew allows rejection of SSO if AuthnInstant is too old. @@ -184,13 +184,13 @@ void SAML1Consumer::implementProtocol( string contextualError; // Ensure the BrowserSSO rule is in the policy set. - if (find_if(policy.getRules(), _rulenamed(SAML1BROWSERSSO_POLICY_RULE)) == NULL) + if (find_if(policy.getRules(), _rulenamed(SAML1BROWSERSSO_POLICY_RULE)) == nullptr) policy.getRules().push_back(m_ssoRule); // Populate recipient as audience. policy.getAudiences().push_back(application.getRelyingParty(entity)->getXMLString("entityID").second); - time_t now = time(NULL); + time_t now = time(nullptr); for (vector::const_iterator a = assertions.begin(); a!=assertions.end(); ++a) { try { // Skip unsigned assertion? @@ -266,7 +266,7 @@ void SAML1Consumer::implementProtocol( // To complete processing, we need to extract and resolve attributes and then create the session. // Normalize the SAML 1.x NameIdentifier... - auto_ptr nameid(n ? NameIDBuilder::buildNameID() : NULL); + auto_ptr nameid(n ? NameIDBuilder::buildNameID() : nullptr); if (n) { nameid->setName(n->getName()); nameid->setFormat(n->getFormat()); @@ -283,7 +283,7 @@ void SAML1Consumer::implementProtocol( n, nameid.get(), ssoStatement->getAuthenticationMethod(), - NULL, + nullptr, &tokens ) ); @@ -305,12 +305,12 @@ void SAML1Consumer::implementProtocol( (!response->getMinorVersion().first || response->getMinorVersion().second==1) ? samlconstants::SAML11_PROTOCOL_ENUM : samlconstants::SAML10_PROTOCOL_ENUM, nameid.get(), - ssoStatement->getAuthenticationInstant() ? ssoStatement->getAuthenticationInstant()->getRawData() : NULL, - NULL, + ssoStatement->getAuthenticationInstant() ? ssoStatement->getAuthenticationInstant()->getRawData() : nullptr, + nullptr, ssoStatement->getAuthenticationMethod(), - NULL, + nullptr, &tokens, - ctx.get() ? &ctx->getResolvedAttributes() : NULL + ctx.get() ? &ctx->getResolvedAttributes() : nullptr ); } diff --git a/shibsp/handler/impl/SAML2ArtifactResolution.cpp b/shibsp/handler/impl/SAML2ArtifactResolution.cpp index bec9c01..7d17e83 100644 --- a/shibsp/handler/impl/SAML2ArtifactResolution.cpp +++ b/shibsp/handler/impl/SAML2ArtifactResolution.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -133,17 +133,17 @@ namespace shibsp { SAML2ArtifactResolution::SAML2ArtifactResolution(const DOMElement* e, const char* appId) : AbstractHandler(e, Category::getInstance(SHIBSP_LOGCAT".ArtifactResolution.SAML2")) #ifndef SHIBSP_LITE - ,m_encoder(NULL), m_decoder(NULL), m_role(samlconstants::SAML20MD_NS, opensaml::saml2md::IDPSSODescriptor::LOCAL_NAME) + ,m_encoder(nullptr), m_decoder(nullptr), m_role(samlconstants::SAML20MD_NS, opensaml::saml2md::IDPSSODescriptor::LOCAL_NAME) #endif { #ifndef SHIBSP_LITE if (SPConfig::getConfig().isEnabled(SPConfig::OutOfProcess)) { try { m_encoder = SAMLConfig::getConfig().MessageEncoderManager.newPlugin( - getString("Binding").second,pair(e,NULL) + getString("Binding").second,pair(e,nullptr) ); m_decoder = SAMLConfig::getConfig().MessageDecoderManager.newPlugin( - getString("Binding").second,pair(e,NULL) + getString("Binding").second,pair(e,nullptr) ); } catch (exception&) { @@ -180,7 +180,7 @@ pair SAML2ArtifactResolution::run(SPRequest& request, bool isHandler) } else { // When not out of process, we remote all the message processing. - DDF out,in = wrap(request, NULL, true); + DDF out,in = wrap(request, nullptr, true); DDFJanitor jin(in), jout(out); out=request.getServiceProvider().getListenerService()->send(in); @@ -202,7 +202,7 @@ pair SAML2ArtifactResolution::run(SPRequest& request, bool isHandler) fs->setString(msg.get()); #ifndef SHIBSP_LITE // Use MessageEncoder to send back the fault. - long ret = m_encoder->encode(request, fault.get(), NULL); + long ret = m_encoder->encode(request, fault.get(), nullptr); fault.release(); return make_pair(true, ret); #else @@ -224,7 +224,7 @@ void SAML2ArtifactResolution::receive(DDF& in, ostream& out) { // Find application. const char* aid=in["application_id"].string(); - const Application* app=aid ? SPConfig::getConfig().getServiceProvider()->getApplication(aid) : NULL; + const Application* app=aid ? SPConfig::getConfig().getServiceProvider()->getApplication(aid) : nullptr; if (!app) { // Something's horribly wrong. m_log.error("couldn't find application (%s) for artifact resolution", aid ? aid : "(missing)"); @@ -236,7 +236,7 @@ void SAML2ArtifactResolution::receive(DDF& in, ostream& out) //m_log.debug("found %d client certificates", req->getClientCertificates().size()); // Wrap a response shim. - DDF ret(NULL); + DDF ret(nullptr); DDFJanitor jout(ret); auto_ptr resp(getResponse(ret)); @@ -261,7 +261,7 @@ void SAML2ArtifactResolution::receive(DDF& in, ostream& out) pair flag = getBool("detailedErrors", m_configNS.get()); auto_ptr_XMLCh msg((flag.first && flag.second) ? ex.what() : "Error processing request."); fs->setString(msg.get()); - m_encoder->encode(*resp.get(), fault.get(), NULL); + m_encoder->encode(*resp.get(), fault.get(), nullptr); fault.release(); out << ret; #else @@ -303,13 +303,13 @@ pair SAML2ArtifactResolution::processMessage(const Application& appli if (!req) throw FatalProfileException("Decoded message was not a samlp::ArtifactResolve request."); - const EntityDescriptor* entity = policy.getIssuerMetadata() ? dynamic_cast(policy.getIssuerMetadata()->getParent()) : NULL; + const EntityDescriptor* entity = policy.getIssuerMetadata() ? dynamic_cast(policy.getIssuerMetadata()->getParent()) : nullptr; try { - auto_ptr_char artifact(req->getArtifact() ? req->getArtifact()->getArtifact() : NULL); + auto_ptr_char artifact(req->getArtifact() ? req->getArtifact()->getArtifact() : nullptr); if (!artifact.get() || !*artifact.get()) return emptyResponse(application, *req, httpResponse, entity); - auto_ptr_char issuer(policy.getIssuer() ? policy.getIssuer()->getName() : NULL); + auto_ptr_char issuer(policy.getIssuer() ? policy.getIssuer()->getName() : nullptr); m_log.info("resolving artifact (%s) for (%s)", artifact.get(), issuer.get() ? issuer.get() : "unknown"); @@ -332,7 +332,7 @@ pair SAML2ArtifactResolution::processMessage(const Application& appli resp->setPayload(payload.release()); long ret = sendMessage( - *m_encoder, resp.get(), relayState.c_str(), NULL, policy.getIssuerMetadata(), application, httpResponse, "signResponses" + *m_encoder, resp.get(), relayState.c_str(), nullptr, policy.getIssuerMetadata(), application, httpResponse, "signResponses" ); resp.release(); // freed by encoder return make_pair(true,ret); @@ -357,7 +357,7 @@ pair SAML2ArtifactResolution::emptyResponse( Issuer* me = IssuerBuilder::buildIssuer(); me->setName(app.getRelyingParty(recipient)->getXMLString("entityID").second); fillStatus(*resp.get(), StatusCode::SUCCESS); - long ret = m_encoder->encode(httpResponse, resp.get(), NULL); + long ret = m_encoder->encode(httpResponse, resp.get(), nullptr); resp.release(); // freed by encoder return make_pair(true,ret); } diff --git a/shibsp/handler/impl/SAML2Consumer.cpp b/shibsp/handler/impl/SAML2Consumer.cpp index 1c7af13..c22f4a2 100644 --- a/shibsp/handler/impl/SAML2Consumer.cpp +++ b/shibsp/handler/impl/SAML2Consumer.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,7 +17,7 @@ /** * SAML2Consumer.cpp * - * SAML 2.0 assertion consumer service + * SAML 2.0 assertion consumer service. */ #include "internal.h" @@ -64,7 +64,7 @@ namespace shibsp { SAML2Consumer(const DOMElement* e, const char* appId) : AssertionConsumerService(e, appId, Category::getInstance(SHIBSP_LOGCAT".SSO.SAML2")) { #ifndef SHIBSP_LITE - m_ssoRule = NULL; + m_ssoRule = nullptr; if (SPConfig::getConfig().isEnabled(SPConfig::OutOfProcess)) m_ssoRule = SAMLConfig::getConfig().SecurityPolicyRuleManager.newPlugin(BEARER_POLICY_RULE, e); #endif @@ -149,8 +149,8 @@ void SAML2Consumer::implementProtocol( throw FatalProfileException("Incoming message contained no SAML assertions."); // Maintain list of "legit" tokens to feed to SP subsystems. - const Subject* ssoSubject=NULL; - const AuthnStatement* ssoStatement=NULL; + const Subject* ssoSubject=nullptr; + const AuthnStatement* ssoStatement=nullptr; vector tokens; // Also track "bad" tokens that we'll cache but not use. @@ -161,7 +161,7 @@ void SAML2Consumer::implementProtocol( vector ownedtokens; // With this flag on, we ignore any unsigned assertions. - const EntityDescriptor* entity = NULL; + const EntityDescriptor* entity = nullptr; pair flag = make_pair(false,false); if (alreadySecured && policy.getIssuerMetadata()) { entity = dynamic_cast(policy.getIssuerMetadata()->getParent()); @@ -176,13 +176,13 @@ void SAML2Consumer::implementProtocol( string contextualError; // Ensure the Bearer rule is in the policy set. - if (find_if(policy.getRules(), _rulenamed(BEARER_POLICY_RULE)) == NULL) + if (find_if(policy.getRules(), _rulenamed(BEARER_POLICY_RULE)) == nullptr) policy.getRules().push_back(m_ssoRule); // Populate recipient as audience. policy.getAudiences().push_back(application.getRelyingParty(entity)->getXMLString("entityID").second); - time_t now = time(NULL); + time_t now = time(nullptr); for (vector::const_iterator a = assertions.begin(); a!=assertions.end(); ++a) { try { // Skip unsigned assertion? @@ -253,11 +253,11 @@ void SAML2Consumer::implementProtocol( for (vector::const_iterator ea = encassertions.begin(); cr && ea!=encassertions.end(); ++ea) { // Attempt to decrypt it. - saml2::Assertion* decrypted=NULL; + saml2::Assertion* decrypted=nullptr; try { Locker credlocker(cr); auto_ptr mcc( - policy.getIssuerMetadata() ? new MetadataCredentialCriteria(*policy.getIssuerMetadata()) : NULL + policy.getIssuerMetadata() ? new MetadataCredentialCriteria(*policy.getIssuerMetadata()) : nullptr ); auto_ptr wrapper((*ea)->decrypt(*cr, application.getRelyingParty(entity)->getXMLString("entityID").second, mcc.get())); decrypted = dynamic_cast(wrapper.get()); @@ -353,7 +353,7 @@ void SAML2Consumer::implementProtocol( else { Locker credlocker(cr); auto_ptr mcc( - policy.getIssuerMetadata() ? new MetadataCredentialCriteria(*policy.getIssuerMetadata()) : NULL + policy.getIssuerMetadata() ? new MetadataCredentialCriteria(*policy.getIssuerMetadata()) : nullptr ); try { auto_ptr decryptedID(encname->decrypt(*cr,application.getRelyingParty(entity)->getXMLString("entityID").second,mcc.get())); @@ -399,10 +399,10 @@ void SAML2Consumer::implementProtocol( application, policy.getIssuerMetadata(), samlconstants::SAML20P_NS, - NULL, + nullptr, ssoName, - (authnContext && authnContext->getAuthnContextClassRef()) ? authnContext->getAuthnContextClassRef()->getReference() : NULL, - (authnContext && authnContext->getAuthnContextDeclRef()) ? authnContext->getAuthnContextDeclRef()->getReference() : NULL, + (authnContext && authnContext->getAuthnContextClassRef()) ? authnContext->getAuthnContextClassRef()->getReference() : nullptr, + (authnContext && authnContext->getAuthnContextDeclRef()) ? authnContext->getAuthnContextDeclRef()->getReference() : nullptr, &tokens ) ); @@ -423,12 +423,12 @@ void SAML2Consumer::implementProtocol( entity, samlconstants::SAML20P_NS, ssoName, - ssoStatement->getAuthnInstant() ? ssoStatement->getAuthnInstant()->getRawData() : NULL, + ssoStatement->getAuthnInstant() ? ssoStatement->getAuthnInstant()->getRawData() : nullptr, ssoStatement->getSessionIndex(), - (authnContext && authnContext->getAuthnContextClassRef()) ? authnContext->getAuthnContextClassRef()->getReference() : NULL, - (authnContext && authnContext->getAuthnContextDeclRef()) ? authnContext->getAuthnContextDeclRef()->getReference() : NULL, + (authnContext && authnContext->getAuthnContextClassRef()) ? authnContext->getAuthnContextClassRef()->getReference() : nullptr, + (authnContext && authnContext->getAuthnContextDeclRef()) ? authnContext->getAuthnContextDeclRef()->getReference() : nullptr, &tokens, - ctx.get() ? &ctx->getResolvedAttributes() : NULL + ctx.get() ? &ctx->getResolvedAttributes() : nullptr ); if (ownedName) diff --git a/shibsp/handler/impl/SAML2Logout.cpp b/shibsp/handler/impl/SAML2Logout.cpp index 23b1bc8..919a0b5 100644 --- a/shibsp/handler/impl/SAML2Logout.cpp +++ b/shibsp/handler/impl/SAML2Logout.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -133,7 +133,7 @@ namespace shibsp { SAML2Logout::SAML2Logout(const DOMElement* e, const char* appId) : AbstractHandler(e, Category::getInstance(SHIBSP_LOGCAT".Logout.SAML2")) #ifndef SHIBSP_LITE - ,m_role(samlconstants::SAML20MD_NS, IDPSSODescriptor::LOCAL_NAME), m_decoder(NULL), m_outgoing(NULL) + ,m_role(samlconstants::SAML20MD_NS, IDPSSODescriptor::LOCAL_NAME), m_decoder(nullptr), m_outgoing(nullptr) #endif { m_initiator = false; @@ -199,7 +199,7 @@ SAML2Logout::SAML2Logout(const DOMElement* e, const char* appId) MessageEncoder* encoder = conf.MessageEncoderManager.newPlugin( getString("Binding").second, pair(e,shibspconstants::SHIB2SPCONFIG_NS) ); - m_encoders.insert(pair(NULL, encoder)); + m_encoders.insert(pair(nullptr, encoder)); } } #endif @@ -236,7 +236,7 @@ void SAML2Logout::receive(DDF& in, ostream& out) { // Find application. const char* aid=in["application_id"].string(); - const Application* app=aid ? SPConfig::getConfig().getServiceProvider()->getApplication(aid) : NULL; + const Application* app=aid ? SPConfig::getConfig().getServiceProvider()->getApplication(aid) : nullptr; if (!app) { // Something's horribly wrong. m_log.error("couldn't find application (%s) for logout", aid ? aid : "(missing)"); @@ -247,7 +247,7 @@ void SAML2Logout::receive(DDF& in, ostream& out) auto_ptr req(getRequest(in)); // Wrap a response shim. - DDF ret(NULL); + DDF ret(nullptr); DDFJanitor jout(ret); auto_ptr resp(getResponse(ret)); @@ -312,13 +312,13 @@ pair SAML2Logout::doRequest(const Application& application, const HTT if (worked1 && worked2) { // Successful LogoutResponse. Has to be front-channel or we couldn't be here. return sendResponse( - reqid.get(), StatusCode::SUCCESS, NULL, NULL, request.getParameter("RelayState"), entity.second, application, response, true + reqid.get(), StatusCode::SUCCESS, nullptr, nullptr, request.getParameter("RelayState"), entity.second, application, response, true ); } return sendResponse( reqid.get(), - StatusCode::RESPONDER, NULL, "Unable to fully destroy principal's session.", + StatusCode::RESPONDER, nullptr, "Unable to fully destroy principal's session.", request.getParameter("RelayState"), entity.second, application, @@ -380,13 +380,13 @@ pair SAML2Logout::doRequest(const Application& application, const HTT else { Locker credlocker(cr); auto_ptr mcc( - policy.getIssuerMetadata() ? new MetadataCredentialCriteria(*policy.getIssuerMetadata()) : NULL + policy.getIssuerMetadata() ? new MetadataCredentialCriteria(*policy.getIssuerMetadata()) : nullptr ); try { auto_ptr decryptedID( encname->decrypt( *cr, - application.getRelyingParty(policy.getIssuerMetadata() ? dynamic_cast(policy.getIssuerMetadata()->getParent()) : NULL)->getXMLString("entityID").second, + application.getRelyingParty(policy.getIssuerMetadata() ? dynamic_cast(policy.getIssuerMetadata()->getParent()) : nullptr)->getXMLString("entityID").second, mcc.get() ) ); @@ -416,11 +416,11 @@ pair SAML2Logout::doRequest(const Application& application, const HTT ); } - auto_ptr namewrapper(ownedName ? nameid : NULL); + auto_ptr namewrapper(ownedName ? nameid : nullptr); // Suck indexes out of the request for next steps. set indexes; - EntityDescriptor* entity = policy.getIssuerMetadata() ? dynamic_cast(policy.getIssuerMetadata()->getParent()) : NULL; + EntityDescriptor* entity = policy.getIssuerMetadata() ? dynamic_cast(policy.getIssuerMetadata()->getParent()) : nullptr; const vector sindexes = logoutRequest->getSessionIndexs(); for (vector::const_iterator i = sindexes.begin(); i != sindexes.end(); ++i) { auto_ptr_char sindex((*i)->getSessionIndex()); @@ -468,7 +468,7 @@ pair SAML2Logout::doRequest(const Application& application, const HTT m_log.error("error while logging out matching sessions: %s", ex.what()); return sendResponse( logoutRequest->getID(), - StatusCode::RESPONDER, NULL, ex.what(), + StatusCode::RESPONDER, nullptr, ex.what(), relayState.c_str(), policy.getIssuerMetadata(), application, @@ -482,7 +482,7 @@ pair SAML2Logout::doRequest(const Application& application, const HTT map parammap; if (!relayState.empty()) parammap["RelayState"] = relayState; - auto_ptr_char entityID(entity ? entity->getEntityID() : NULL); + auto_ptr_char entityID(entity ? entity->getEntityID() : nullptr); if (entityID.get()) parammap["entityID"] = entityID.get(); auto_ptr_char reqID(logoutRequest->getID()); @@ -510,8 +510,8 @@ pair SAML2Logout::doRequest(const Application& application, const HTT return sendResponse( logoutRequest->getID(), (worked1 && worked2) ? StatusCode::SUCCESS : StatusCode::RESPONDER, - (worked1 && worked2) ? NULL : StatusCode::PARTIAL_LOGOUT, - NULL, + (worked1 && worked2) ? nullptr : StatusCode::PARTIAL_LOGOUT, + nullptr, relayState.c_str(), policy.getIssuerMetadata(), application, @@ -536,8 +536,8 @@ pair SAML2Logout::doRequest(const Application& application, const HTT recoverRelayState(application, request, response, relayState); // Check for partial logout. - const StatusCode* sc = logoutResponse->getStatus() ? logoutResponse->getStatus()->getStatusCode() : NULL; - sc = sc ? sc->getStatusCode() : NULL; + const StatusCode* sc = logoutResponse->getStatus() ? logoutResponse->getStatus()->getStatusCode() : nullptr; + sc = sc ? sc->getStatusCode() : nullptr; if (sc && XMLString::equals(sc->getValue(), StatusCode::PARTIAL_LOGOUT)) return sendLogoutPage(application, request, response, "partial"); @@ -573,8 +573,8 @@ pair SAML2Logout::sendResponse( ) const { // Get endpoint and encoder to use. - const EndpointType* ep = NULL; - const MessageEncoder* encoder = NULL; + const EndpointType* ep = nullptr; + const MessageEncoder* encoder = nullptr; if (front) { const IDPSSODescriptor* idp = dynamic_cast(role); for (vector::const_iterator b = m_bindings.begin(); idp && b!=m_bindings.end(); ++b) { diff --git a/shibsp/handler/impl/SAML2LogoutInitiator.cpp b/shibsp/handler/impl/SAML2LogoutInitiator.cpp index 1dc10d6..a776bc3 100644 --- a/shibsp/handler/impl/SAML2LogoutInitiator.cpp +++ b/shibsp/handler/impl/SAML2LogoutInitiator.cpp @@ -89,7 +89,7 @@ namespace shibsp { string m_appId; #ifndef SHIBSP_LITE LogoutRequest* buildRequest( - const Application& application, const Session& session, const RoleDescriptor& role, const MessageEncoder* encoder=NULL + const Application& application, const Session& session, const RoleDescriptor& role, const MessageEncoder* encoder=nullptr ) const; XMLCh* m_outgoing; @@ -112,7 +112,7 @@ namespace shibsp { SAML2LogoutInitiator::SAML2LogoutInitiator(const DOMElement* e, const char* appId) : AbstractHandler(e, Category::getInstance(SHIBSP_LOGCAT".LogoutInitiator.SAML2")), m_appId(appId), #ifndef SHIBSP_LITE - m_outgoing(NULL), + m_outgoing(nullptr), #endif m_protocol(samlconstants::SAML20P_NS) { @@ -141,7 +141,7 @@ SAML2LogoutInitiator::SAML2LogoutInitiator(const DOMElement* e, const char* appI try { auto_ptr_char b(start); MessageEncoder * encoder = - SAMLConfig::getConfig().MessageEncoderManager.newPlugin(b.get(),pair(e,NULL)); + SAMLConfig::getConfig().MessageEncoderManager.newPlugin(b.get(),pair(e,nullptr)); if (encoder->isUserAgentPresent()) { m_encoders[start] = encoder; m_log.debug("supporting outgoing binding (%s)", b.get()); @@ -192,7 +192,7 @@ pair SAML2LogoutInitiator::run(SPRequest& request, bool isHandler) co // At this point we know the front-channel is handled. // We need the session to do any other work. - Session* session = NULL; + Session* session = nullptr; try { session = request.getSession(false, true, false); // don't cache it and ignore all checks if (!session) @@ -233,7 +233,7 @@ void SAML2LogoutInitiator::receive(DDF& in, ostream& out) // Find application. const char* aid=in["application_id"].string(); - const Application* app=aid ? SPConfig::getConfig().getServiceProvider()->getApplication(aid) : NULL; + const Application* app=aid ? SPConfig::getConfig().getServiceProvider()->getApplication(aid) : nullptr; if (!app) { // Something's horribly wrong. m_log.error("couldn't find application (%s) for logout", aid ? aid : "(missing)"); @@ -244,13 +244,13 @@ void SAML2LogoutInitiator::receive(DDF& in, ostream& out) auto_ptr req(getRequest(in)); // Set up a response shim. - DDF ret(NULL); + DDF ret(nullptr); DDFJanitor jout(ret); auto_ptr resp(getResponse(ret)); - Session* session = NULL; + Session* session = nullptr; try { - session = app->getServiceProvider().getSessionCache()->find(*app, *req.get(), NULL, NULL); + session = app->getServiceProvider().getSessionCache()->find(*app, *req.get(), nullptr, nullptr); } catch (exception& ex) { m_log.error("error accessing current session: %s", ex.what()); @@ -314,8 +314,8 @@ pair SAML2LogoutInitiator::doRequest( ); } - const EndpointType* ep=NULL; - const MessageEncoder* encoder=NULL; + const EndpointType* ep=nullptr; + const MessageEncoder* encoder=nullptr; vector::const_iterator b; for (b = m_bindings.begin(); b!=m_bindings.end(); ++b) { if (ep=EndpointManager(role->getSingleLogoutServices()).getByBinding(*b)) { @@ -331,7 +331,7 @@ pair SAML2LogoutInitiator::doRequest( shibsp::SOAPClient soaper(policy); MetadataCredentialCriteria mcc(*role); - LogoutResponse* logoutResponse=NULL; + LogoutResponse* logoutResponse=nullptr; auto_ptr_XMLCh binding(samlconstants::SAML20_BINDING_SOAP); const vector& endpoints=role->getSingleLogoutServices(); for (vector::const_iterator epit=endpoints.begin(); !logoutResponse && epit!=endpoints.end(); ++epit) { @@ -365,7 +365,7 @@ pair SAML2LogoutInitiator::doRequest( } else { // Check the status, looking for non-success or a partial logout code. - const StatusCode* sc = logoutResponse->getStatus() ? logoutResponse->getStatus()->getStatusCode() : NULL; + const StatusCode* sc = logoutResponse->getStatus() ? logoutResponse->getStatus()->getStatusCode() : nullptr; bool partial = (!sc || !XMLString::equals(sc->getValue(), StatusCode::SUCCESS)); if (!partial && sc->getStatusCode()) { // Success, but still need to check for partial. @@ -386,7 +386,7 @@ pair SAML2LogoutInitiator::doRequest( if (session) { session->unlock(); - session = NULL; + session = nullptr; application.getServiceProvider().getSessionCache()->remove(application, httpRequest, &httpResponse); } @@ -415,7 +415,7 @@ pair SAML2LogoutInitiator::doRequest( if (session) { session->unlock(); - session = NULL; + session = nullptr; application.getServiceProvider().getSessionCache()->remove(application, httpRequest, &httpResponse); } diff --git a/shibsp/handler/impl/SAML2NameIDMgmt.cpp b/shibsp/handler/impl/SAML2NameIDMgmt.cpp index 12c0ed6..61fd3ba 100644 --- a/shibsp/handler/impl/SAML2NameIDMgmt.cpp +++ b/shibsp/handler/impl/SAML2NameIDMgmt.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -134,7 +134,7 @@ namespace shibsp { SAML2NameIDMgmt::SAML2NameIDMgmt(const DOMElement* e, const char* appId) : AbstractHandler(e, Category::getInstance(SHIBSP_LOGCAT".NameIDMgmt.SAML2")) #ifndef SHIBSP_LITE - ,m_role(samlconstants::SAML20MD_NS, IDPSSODescriptor::LOCAL_NAME), m_decoder(NULL), m_outgoing(NULL) + ,m_role(samlconstants::SAML20MD_NS, IDPSSODescriptor::LOCAL_NAME), m_decoder(nullptr), m_outgoing(nullptr) #endif { #ifndef SHIBSP_LITE @@ -195,7 +195,7 @@ SAML2NameIDMgmt::SAML2NameIDMgmt(const DOMElement* e, const char* appId) MessageEncoder* encoder = conf.MessageEncoderManager.newPlugin( getString("Binding").second, pair(e,shibspconstants::SHIB2SPCONFIG_NS) ); - m_encoders.insert(pair(NULL, encoder)); + m_encoders.insert(pair(nullptr, encoder)); } } #endif @@ -226,7 +226,7 @@ void SAML2NameIDMgmt::receive(DDF& in, ostream& out) { // Find application. const char* aid=in["application_id"].string(); - const Application* app=aid ? SPConfig::getConfig().getServiceProvider()->getApplication(aid) : NULL; + const Application* app=aid ? SPConfig::getConfig().getServiceProvider()->getApplication(aid) : nullptr; if (!app) { // Something's horribly wrong. m_log.error("couldn't find application (%s) for NameID mgmt", aid ? aid : "(missing)"); @@ -237,7 +237,7 @@ void SAML2NameIDMgmt::receive(DDF& in, ostream& out) auto_ptr req(getRequest(in)); // Wrap a response shim. - DDF ret(NULL); + DDF ret(nullptr); DDFJanitor jout(ret); auto_ptr resp(getResponse(ret)); @@ -295,7 +295,7 @@ pair SAML2NameIDMgmt::doRequest( ); } - EntityDescriptor* entity = policy.getIssuerMetadata() ? dynamic_cast(policy.getIssuerMetadata()->getParent()) : NULL; + EntityDescriptor* entity = policy.getIssuerMetadata() ? dynamic_cast(policy.getIssuerMetadata()->getParent()) : nullptr; bool ownedName = false; NameID* nameid = mgmtRequest->getNameID(); @@ -309,7 +309,7 @@ pair SAML2NameIDMgmt::doRequest( else { Locker credlocker(cr); auto_ptr mcc( - policy.getIssuerMetadata() ? new MetadataCredentialCriteria(*policy.getIssuerMetadata()) : NULL + policy.getIssuerMetadata() ? new MetadataCredentialCriteria(*policy.getIssuerMetadata()) : nullptr ); try { auto_ptr decryptedID(encname->decrypt(*cr,application.getRelyingParty(entity)->getXMLString("entityID").second,mcc.get())); @@ -339,12 +339,12 @@ pair SAML2NameIDMgmt::doRequest( ); } - auto_ptr namewrapper(ownedName ? nameid : NULL); + auto_ptr namewrapper(ownedName ? nameid : nullptr); // For a front-channel request, we have to match the information in the request // against the current session. if (!session_id.empty()) { - if (!cache->matches(application, request, entity, *nameid, NULL)) { + if (!cache->matches(application, request, entity, *nameid, nullptr)) { return sendResponse( mgmtRequest->getID(), StatusCode::REQUESTER, StatusCode::REQUEST_DENIED, "Active session did not match NameID mgmt request.", @@ -360,7 +360,7 @@ pair SAML2NameIDMgmt::doRequest( // Determine what's happening... bool ownedNewID = false; - NewID* newid = NULL; + NewID* newid = nullptr; if (!mgmtRequest->getTerminate()) { // Better be a NewID in there. newid = mgmtRequest->getNewID(); @@ -374,7 +374,7 @@ pair SAML2NameIDMgmt::doRequest( else { Locker credlocker(cr); auto_ptr mcc( - policy.getIssuerMetadata() ? new MetadataCredentialCriteria(*policy.getIssuerMetadata()) : NULL + policy.getIssuerMetadata() ? new MetadataCredentialCriteria(*policy.getIssuerMetadata()) : nullptr ); try { auto_ptr decryptedID(encnewid->decrypt(*cr,application.getRelyingParty(entity)->getXMLString("entityID").second,mcc.get())); @@ -396,7 +396,7 @@ pair SAML2NameIDMgmt::doRequest( m_log.error("NewID not found in request"); return sendResponse( mgmtRequest->getID(), - StatusCode::REQUESTER, NULL, "NewID not found in request.", + StatusCode::REQUESTER, nullptr, "NewID not found in request.", relayState.c_str(), policy.getIssuerMetadata(), application, @@ -406,7 +406,7 @@ pair SAML2NameIDMgmt::doRequest( } } - auto_ptr newwrapper(ownedNewID ? newid : NULL); + auto_ptr newwrapper(ownedNewID ? newid : nullptr); // TODO: maybe support in-place modification of sessions? /* @@ -425,7 +425,7 @@ pair SAML2NameIDMgmt::doRequest( m_log.error("error while logging out matching sessions: %s", ex.what()); return sendResponse( logoutRequest->getID(), - StatusCode::RESPONDER, NULL, ex.what(), + StatusCode::RESPONDER, nullptr, ex.what(), relayState.c_str(), policy.getIssuerMetadata(), application, @@ -442,8 +442,8 @@ pair SAML2NameIDMgmt::doRequest( return sendResponse( mgmtRequest->getID(), worked ? StatusCode::SUCCESS : StatusCode::RESPONDER, - NULL, - NULL, + nullptr, + nullptr, relayState.c_str(), policy.getIssuerMetadata(), application, @@ -494,8 +494,8 @@ pair SAML2NameIDMgmt::sendResponse( ) const { // Get endpoint and encoder to use. - const EndpointType* ep = NULL; - const MessageEncoder* encoder = NULL; + const EndpointType* ep = nullptr; + const MessageEncoder* encoder = nullptr; if (front) { const IDPSSODescriptor* idp = dynamic_cast(role); for (vector::const_iterator b = m_bindings.begin(); idp && b!=m_bindings.end(); ++b) { diff --git a/shibsp/handler/impl/SAML2SessionInitiator.cpp b/shibsp/handler/impl/SAML2SessionInitiator.cpp index 30e303c..2765ce6 100644 --- a/shibsp/handler/impl/SAML2SessionInitiator.cpp +++ b/shibsp/handler/impl/SAML2SessionInitiator.cpp @@ -122,17 +122,17 @@ namespace shibsp { }; SAML2SessionInitiator::SAML2SessionInitiator(const DOMElement* e, const char* appId) - : AbstractHandler(e, Category::getInstance(SHIBSP_LOGCAT".SessionInitiator.SAML2"), NULL, &m_remapper), m_appId(appId), + : AbstractHandler(e, Category::getInstance(SHIBSP_LOGCAT".SessionInitiator.SAML2"), nullptr, &m_remapper), m_appId(appId), m_paosNS(samlconstants::PAOS_NS), m_ecpNS(samlconstants::SAML20ECP_NS), m_paosBinding(samlconstants::SAML20_BINDING_PAOS) { static const XMLCh ECP[] = UNICODE_LITERAL_3(E,C,P); - const XMLCh* flag = e ? e->getAttributeNS(NULL,ECP) : NULL; + const XMLCh* flag = e ? e->getAttributeNS(nullptr,ECP) : nullptr; #ifdef SHIBSP_LITE m_ecp = (flag && (*flag == chLatin_t || *flag == chDigit_1)); #else - m_outgoing=NULL; - m_ecp = NULL; - m_requestTemplate=NULL; + m_outgoing=nullptr; + m_ecp = nullptr; + m_requestTemplate=nullptr; if (SPConfig::getConfig().isEnabled(SPConfig::OutOfProcess)) { // Check for a template AuthnRequest to build from. @@ -144,7 +144,7 @@ SAML2SessionInitiator::SAML2SessionInitiator(const DOMElement* e, const char* ap if (flag && (*flag == chLatin_t || *flag == chDigit_1)) { try { m_ecp = SAMLConfig::getConfig().MessageEncoderManager.newPlugin( - samlconstants::SAML20_BINDING_PAOS, pair(e,NULL) + samlconstants::SAML20_BINDING_PAOS, pair(e,nullptr) ); } catch (exception& ex) { @@ -175,7 +175,7 @@ SAML2SessionInitiator::SAML2SessionInitiator(const DOMElement* e, const char* ap try { auto_ptr_char b(start); MessageEncoder * encoder = SAMLConfig::getConfig().MessageEncoderManager.newPlugin( - b.get(),pair(e,NULL) + b.get(),pair(e,nullptr) ); if (encoder->isUserAgentPresent()) { m_encoders[start] = encoder; @@ -236,7 +236,7 @@ pair SAML2SessionInitiator::run(SPRequest& request, string& entityID, string target; pair prop; - const Handler* ACS=NULL; + const Handler* ACS=nullptr; pair acClass, acComp, nidFormat, spQual; bool isPassive=false,forceAuthn=false; const Application& app=request.getApplication(); @@ -252,7 +252,7 @@ pair SAML2SessionInitiator::run(SPRequest& request, string& entityID, request.log(SPRequest::SPWarn, "invalid acsIndex specified in request, using acsIndex property"); else if (ECP && !XMLString::equals(ACS->getString("Binding").second, samlconstants::SAML20_BINDING_PAOS)) { request.log(SPRequest::SPWarn, "acsIndex in request referenced a non-PAOS ACS, using default ACS location"); - ACS = NULL; + ACS = nullptr; } } @@ -325,10 +325,10 @@ pair SAML2SessionInitiator::run(SPRequest& request, string& entityID, // Validate the ACS for use with this protocol. if (!ECP) { - pair ACSbinding = ACS ? ACS->getString("Binding") : pair(false,NULL); + pair ACSbinding = ACS ? ACS->getString("Binding") : pair(false,nullptr); if (ACSbinding.first) { pair compatibleBindings = getString("compatibleBindings"); - if (compatibleBindings.first && strstr(compatibleBindings.second, ACSbinding.second) == NULL) { + if (compatibleBindings.first && strstr(compatibleBindings.second, ACSbinding.second) == nullptr) { m_log.error("configured or requested ACS has non-SAML 2.0 binding"); throw ConfigurationException("Configured or requested ACS has non-SAML 2.0 binding ($1).", params(1, ACSbinding.second)); } @@ -361,7 +361,7 @@ pair SAML2SessionInitiator::run(SPRequest& request, string& entityID, } // Determine index to use. - pair ix = pair(false,NULL); + pair ix = pair(false,nullptr); if (ACS) { if (!strncmp(ACSloc.c_str(), "https", 5)) { ix = ACS->getXMLString("sslIndex", shibspconstants::ASCII_SHIB2SPCONFIG_NS); @@ -377,19 +377,19 @@ pair SAML2SessionInitiator::run(SPRequest& request, string& entityID, app, &request, request, entityID.c_str(), ix.second, ACS ? XMLString::equals(ACS->getString("Binding").second, samlconstants::SAML20_BINDING_HTTP_ARTIFACT) : false, - NULL, NULL, + nullptr, nullptr, isPassive, forceAuthn, - acClass.first ? acClass.second : NULL, - acComp.first ? acComp.second : NULL, - nidFormat.first ? nidFormat.second : NULL, - spQual.first ? spQual.second : NULL, + acClass.first ? acClass.second : nullptr, + acComp.first ? acComp.second : nullptr, + nidFormat.first ? nidFormat.second : nullptr, + spQual.first ? spQual.second : nullptr, target ); } // Since we're not passing by index, we need to fully compute the return URL and binding. // Compute the ACS URL. We add the ACS location to the base handlerURL. - prop = ACS ? ACS->getString("Location") : pair(false,NULL); + prop = ACS ? ACS->getString("Location") : pair(false,nullptr); if (prop.first) ACSloc += prop.second; @@ -404,14 +404,14 @@ pair SAML2SessionInitiator::run(SPRequest& request, string& entityID, return doRequest( app, &request, request, entityID.c_str(), - NULL, + nullptr, ACS ? XMLString::equals(ACS->getString("Binding").second, samlconstants::SAML20_BINDING_HTTP_ARTIFACT) : false, - ACSloc.c_str(), ACS ? ACS->getXMLString("Binding").second : NULL, + ACSloc.c_str(), ACS ? ACS->getXMLString("Binding").second : nullptr, isPassive, forceAuthn, - acClass.first ? acClass.second : NULL, - acComp.first ? acComp.second : NULL, - nidFormat.first ? nidFormat.second : NULL, - spQual.first ? spQual.second : NULL, + acClass.first ? acClass.second : nullptr, + acComp.first ? acComp.second : nullptr, + nidFormat.first ? nidFormat.second : nullptr, + spQual.first ? spQual.second : nullptr, target ); } @@ -437,7 +437,7 @@ pair SAML2SessionInitiator::run(SPRequest& request, string& entityID, if (acsByIndex.first && acsByIndex.second) { if (ACS) { // Determine index to use. - pair ix = pair(false,NULL); + pair ix = pair(false,nullptr); if (!strncmp(ACSloc.c_str(), "https", 5)) { ix = ACS->getString("sslIndex", shibspconstants::ASCII_SHIB2SPCONFIG_NS); if (!ix.first) @@ -454,7 +454,7 @@ pair SAML2SessionInitiator::run(SPRequest& request, string& entityID, else { // Since we're not passing by index, we need to fully compute the return URL and binding. // Compute the ACS URL. We add the ACS location to the base handlerURL. - prop = ACS ? ACS->getString("Location") : pair(false,NULL); + prop = ACS ? ACS->getString("Location") : pair(false,nullptr); if (prop.first) ACSloc += prop.second; in.addmember("acsLocation").string(ACSloc.c_str()); @@ -496,14 +496,14 @@ void SAML2SessionInitiator::receive(DDF& in, ostream& out) { // Find application. const char* aid=in["application_id"].string(); - const Application* app=aid ? SPConfig::getConfig().getServiceProvider()->getApplication(aid) : NULL; + const Application* app=aid ? SPConfig::getConfig().getServiceProvider()->getApplication(aid) : nullptr; if (!app) { // Something's horribly wrong. m_log.error("couldn't find application (%s) to generate AuthnRequest", aid ? aid : "(missing)"); throw ConfigurationException("Unable to locate application for new session, deleted?"); } - DDF ret(NULL); + DDF ret(nullptr); DDFJanitor jout(ret); // Wrap the outgoing object with a Response facade. @@ -519,7 +519,7 @@ void SAML2SessionInitiator::receive(DDF& in, ostream& out) // a false/0 return, which we just return as an empty structure, or a response/redirect, // which we capture in the facade and send back. doRequest( - *app, NULL, *http.get(), in["entity_id"].string(), + *app, nullptr, *http.get(), in["entity_id"].string(), index.get(), (in["artifact"].integer() != 0), in["acsLocation"].string(), bind.get(), @@ -567,10 +567,10 @@ pair SAML2SessionInitiator::doRequest( #ifndef SHIBSP_LITE bool ECP = XMLString::equals(acsBinding, m_paosBinding.get()); - pair entity = pair(NULL,NULL); - const IDPSSODescriptor* role = NULL; - const EndpointType* ep = NULL; - const MessageEncoder* encoder = NULL; + pair entity = pair(nullptr,nullptr); + const IDPSSODescriptor* role = nullptr; + const EndpointType* ep = nullptr; + const MessageEncoder* encoder = nullptr; // We won't need this for ECP, but safety dictates we get the lock here. MetadataProvider* m=app.getMetadataProvider(); @@ -628,8 +628,8 @@ pair SAML2SessionInitiator::doRequest( auto_ptr req(m_requestTemplate ? m_requestTemplate->cloneAuthnRequest() : AuthnRequestBuilder::buildAuthnRequest()); if (m_requestTemplate) { // Freshen TS and ID. - req->setID(NULL); - req->setIssueInstant(time(NULL)); + req->setID(nullptr); + req->setIssueInstant(time(nullptr)); } if (ep) @@ -679,7 +679,7 @@ pair SAML2SessionInitiator::doRequest( } if (reqContext->getAuthnContextClassRefs().empty() && reqContext->getAuthnContextDeclRefs().empty()) { - req->setRequestedAuthnContext(NULL); + req->setRequestedAuthnContext(nullptr); } else if (authnContextComparison) { auto_ptr_XMLCh widecomp(authnContextComparison); @@ -697,7 +697,7 @@ pair SAML2SessionInitiator::doRequest( lifetime.second = 28800; if (!req->getConditions()) req->setConditions(ConditionsBuilder::buildConditions()); - req->getConditions()->setNotOnOrAfter(time(NULL) + lifetime.second + 300); + req->getConditions()->setNotOnOrAfter(time(nullptr) + lifetime.second + 300); AudienceRestriction* audrest = AudienceRestrictionBuilder::buildAudienceRestriction(); req->getConditions()->getConditions().push_back(audrest); Audience* aud = AudienceBuilder::buildAudience(); @@ -718,14 +718,14 @@ pair SAML2SessionInitiator::doRequest( scoping->setIDPList(idplist); } VectorOf(IDPEntry) entries = idplist->getIDPEntrys(); - if (find_if(entries, bind2nd(_sameIdP(), wideid.get())) == NULL) { + if (find_if(entries, bind2nd(_sameIdP(), wideid.get())) == nullptr) { IDPEntry* entry = IDPEntryBuilder::buildIDPEntry(); entry->setProviderID(wideid.get()); entries.push_back(entry); } } - auto_ptr_char dest(ep ? ep->getLocation() : NULL); + auto_ptr_char dest(ep ? ep->getLocation() : nullptr); if (httpRequest) { // If the request object is available, we're responsible for the POST data. diff --git a/shibsp/handler/impl/SAMLDSSessionInitiator.cpp b/shibsp/handler/impl/SAMLDSSessionInitiator.cpp index 10de535..5f4f5ed 100644 --- a/shibsp/handler/impl/SAMLDSSessionInitiator.cpp +++ b/shibsp/handler/impl/SAMLDSSessionInitiator.cpp @@ -52,7 +52,7 @@ namespace shibsp { { public: SAMLDSSessionInitiator(const DOMElement* e, const char* appId) - : AbstractHandler(e, Category::getInstance(SHIBSP_LOGCAT".SessionInitiator.SAMLDS")), m_url(NULL), m_returnParam(NULL) + : AbstractHandler(e, Category::getInstance(SHIBSP_LOGCAT".SessionInitiator.SAMLDS")), m_url(nullptr), m_returnParam(nullptr) #ifndef SHIBSP_LITE ,m_discoNS("urn:oasis:names:tc:SAML:profiles:SSO:idp-discovery-protocol") #endif @@ -87,7 +87,7 @@ namespace shibsp { XMLString::equals((*i)->getElementQName().getNamespaceURI(), m_discoNS.get())) { const AttributeExtensibleXMLObject* sub = dynamic_cast(*i); if (sub) { - const XMLCh* val = sub->getAttribute(xmltooling::QName(NULL,IndexedEndpointType::INDEX_ATTRIB_NAME)); + const XMLCh* val = sub->getAttribute(xmltooling::QName(nullptr,IndexedEndpointType::INDEX_ATTRIB_NAME)); if (val) { int maxindex = XMLString::parseInt(val); if (ix.second <= maxindex) @@ -111,9 +111,9 @@ namespace shibsp { auto_ptr_XMLCh widen2(os.str().c_str()); ElementProxy* ep = new AnyElementImpl(m_discoNS.get(), LOCAL_NAME); - ep->setAttribute(xmltooling::QName(NULL,EndpointType::LOCATION_ATTRIB_NAME), widen.get()); - ep->setAttribute(xmltooling::QName(NULL,EndpointType::BINDING_ATTRIB_NAME), m_discoNS.get()); - ep->setAttribute(xmltooling::QName(NULL,IndexedEndpointType::INDEX_ATTRIB_NAME), widen2.get()); + ep->setAttribute(xmltooling::QName(nullptr,EndpointType::LOCATION_ATTRIB_NAME), widen.get()); + ep->setAttribute(xmltooling::QName(nullptr,EndpointType::BINDING_ATTRIB_NAME), m_discoNS.get()); + ep->setAttribute(xmltooling::QName(nullptr,IndexedEndpointType::INDEX_ATTRIB_NAME), widen2.get()); Extensions* ext = role.getExtensions(); if (!ext) { ext = ExtensionsBuilder::buildExtensions(); diff --git a/shibsp/handler/impl/SessionHandler.cpp b/shibsp/handler/impl/SessionHandler.cpp index 813aad9..c77ecf7 100644 --- a/shibsp/handler/impl/SessionHandler.cpp +++ b/shibsp/handler/impl/SessionHandler.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2007 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -113,7 +113,7 @@ pair SessionHandler::run(SPRequest& request, bool isHandler) const stringstream s; s << "Session Summary
" << endl;
 
-    Session* session = NULL;
+    Session* session = nullptr;
     try {
         session = request.getSession();
         if (!session) {
@@ -143,7 +143,7 @@ pair SessionHandler::run(SPRequest& request, bool isHandler) const
     s << "Authentication Context Decl: " << (session->getAuthnContextDeclRef() ? session->getAuthnContextDeclRef() : "(none)") << endl;
     s << "Session Expiration (barring inactivity): ";
     if (session->getExpiration())
-        s << ((session->getExpiration() - time(NULL)) / 60) << " minute(s)" << endl;
+        s << ((session->getExpiration() - time(nullptr)) / 60) << " minute(s)" << endl;
     else
         s << "Infinite" << endl;
 
diff --git a/shibsp/handler/impl/SessionInitiator.cpp b/shibsp/handler/impl/SessionInitiator.cpp
index d1eeffa..9972d3c 100644
--- a/shibsp/handler/impl/SessionInitiator.cpp
+++ b/shibsp/handler/impl/SessionInitiator.cpp
@@ -112,7 +112,7 @@ bool SessionInitiator::checkCompatibility(SPRequest& request, bool isHandler) co
 
 pair SessionInitiator::run(SPRequest& request, bool isHandler) const
 {
-    const char* entityID = NULL;
+    const char* entityID = nullptr;
     pair param = getString("entityIDParam");
     if (isHandler) {
         entityID = request.getParameter(param.first ? param.second : "entityID");
diff --git a/shibsp/handler/impl/Shib1SessionInitiator.cpp b/shibsp/handler/impl/Shib1SessionInitiator.cpp
index cc2cd11..d210ff4 100644
--- a/shibsp/handler/impl/Shib1SessionInitiator.cpp
+++ b/shibsp/handler/impl/Shib1SessionInitiator.cpp
@@ -57,7 +57,7 @@ namespace shibsp {
     {
     public:
         Shib1SessionInitiator(const DOMElement* e, const char* appId)
-                : AbstractHandler(e, Category::getInstance(SHIBSP_LOGCAT".SessionInitiator.Shib1"), NULL, &m_remapper), m_appId(appId) {
+                : AbstractHandler(e, Category::getInstance(SHIBSP_LOGCAT".SessionInitiator.Shib1"), nullptr, &m_remapper), m_appId(appId) {
             // If Location isn't set, defer address registration until the setParent call.
             pair loc = getString("Location");
             if (loc.first) {
@@ -117,7 +117,7 @@ pair Shib1SessionInitiator::run(SPRequest& request, string& entityID,
 
     string target;
     pair prop;
-    const Handler* ACS=NULL;
+    const Handler* ACS=nullptr;
     const Application& app = request.getApplication();
 
     if (isHandler) {
@@ -158,10 +158,10 @@ pair Shib1SessionInitiator::run(SPRequest& request, string& entityID,
     }
 
     // Validate the ACS for use with this protocol.
-    pair ACSbinding = ACS ? ACS->getString("Binding") : pair(false,NULL);
+    pair ACSbinding = ACS ? ACS->getString("Binding") : pair(false,nullptr);
     if (ACSbinding.first) {
         pair compatibleBindings = getString("compatibleBindings");
-        if (compatibleBindings.first && strstr(compatibleBindings.second, ACSbinding.second) == NULL) {
+        if (compatibleBindings.first && strstr(compatibleBindings.second, ACSbinding.second) == nullptr) {
             m_log.error("configured or requested ACS has non-SAML 1.x binding");
             throw ConfigurationException("Configured or requested ACS has non-SAML 1.x binding ($1).", params(1, ACSbinding.second));
         }
@@ -174,7 +174,7 @@ pair Shib1SessionInitiator::run(SPRequest& request, string& entityID,
 
     // Compute the ACS URL. We add the ACS location to the base handlerURL.
     string ACSloc = request.getHandlerURL(target.c_str());
-    prop = ACS ? ACS->getString("Location") : pair(false,NULL);
+    prop = ACS ? ACS->getString("Location") : pair(false,nullptr);
     if (prop.first)
         ACSloc += prop.second;
 
@@ -229,7 +229,7 @@ void Shib1SessionInitiator::receive(DDF& in, ostream& out)
 {
     // Find application.
     const char* aid=in["application_id"].string();
-    const Application* app=aid ? SPConfig::getConfig().getServiceProvider()->getApplication(aid) : NULL;
+    const Application* app=aid ? SPConfig::getConfig().getServiceProvider()->getApplication(aid) : nullptr;
     if (!app) {
         // Something's horribly wrong.
         m_log.error("couldn't find application (%s) to generate AuthnRequest", aid ? aid : "(missing)");
@@ -241,7 +241,7 @@ void Shib1SessionInitiator::receive(DDF& in, ostream& out)
     if (!entityID || !acsLocation)
         throw ConfigurationException("No entityID or acsLocation parameter supplied to remoted SessionInitiator.");
 
-    DDF ret(NULL);
+    DDF ret(nullptr);
     DDFJanitor jout(ret);
 
     // Wrap the outgoing object with a Response facade.
@@ -252,7 +252,7 @@ void Shib1SessionInitiator::receive(DDF& in, ostream& out)
     // Since we're remoted, the result should either be a throw, which we pass on,
     // a false/0 return, which we just return as an empty structure, or a response/redirect,
     // which we capture in the facade and send back.
-    doRequest(*app, NULL, *http.get(), entityID, acsLocation, (in["artifact"].integer() != 0), relayState);
+    doRequest(*app, nullptr, *http.get(), entityID, acsLocation, (in["artifact"].integer() != 0), relayState);
     if (!ret.isstruct())
         ret.structure();
     ret.addmember("RelayState").unsafe_string(relayState.c_str());
@@ -309,7 +309,7 @@ pair Shib1SessionInitiator::doRequest(
         relayState = "default";
 
     char timebuf[16];
-    sprintf(timebuf,"%lu",time(NULL));
+    sprintf(timebuf,"%lu",time(nullptr));
     const URLEncoder* urlenc = XMLToolingConfig::getConfig().getURLEncoder();
     auto_ptr_char dest(ep->getLocation());
     string req=string(dest.get()) + (strchr(dest.get(),'?') ? '&' : '?') + "shire=" + urlenc->encode(acsLocation) +
diff --git a/shibsp/handler/impl/StatusHandler.cpp b/shibsp/handler/impl/StatusHandler.cpp
index 64cca9a..f2cbd7f 100644
--- a/shibsp/handler/impl/StatusHandler.cpp
+++ b/shibsp/handler/impl/StatusHandler.cpp
@@ -1,5 +1,5 @@
 /*
- *  Copyright 2001-2009 Internet2
+ *  Copyright 2001-2010 Internet2
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -109,7 +109,7 @@ namespace shibsp {
     class DummyRequest : public HTTPRequest
     {
     public:
-        DummyRequest(const char* url) : m_parser(NULL), m_url(url), m_scheme(NULL), m_query(NULL), m_port(0) {
+        DummyRequest(const char* url) : m_parser(nullptr), m_url(url), m_scheme(nullptr), m_query(nullptr), m_port(0) {
 #ifdef HAVE_STRCASECMP
             if (url && !strncasecmp(url,"http://",7)) {
                 m_scheme="http";
@@ -204,7 +204,7 @@ namespace shibsp {
             return "";
         }
         const char* getRequestBody() const {
-            return NULL;
+            return nullptr;
         }
         const char* getQueryString() const {
             return m_query;
@@ -215,7 +215,7 @@ namespace shibsp {
                 m_parser=new CGIParser(*this);
 
             pair bounds=m_parser->getParameters(name);
-            return (bounds.first==bounds.second) ? NULL : bounds.first->second;
+            return (bounds.first==bounds.second) ? nullptr : bounds.first->second;
         }
         vector::size_type getParameters(const char* name, vector& values) const
         {
@@ -360,7 +360,7 @@ void StatusHandler::receive(DDF& in, ostream& out)
 {
     // Find application.
     const char* aid=in["application_id"].string();
-    const Application* app=aid ? SPConfig::getConfig().getServiceProvider()->getApplication(aid) : NULL;
+    const Application* app=aid ? SPConfig::getConfig().getServiceProvider()->getApplication(aid) : nullptr;
     if (!app) {
         // Something's horribly wrong.
         m_log.error("couldn't find application (%s) for status request", aid ? aid : "(missing)");
@@ -368,7 +368,7 @@ void StatusHandler::receive(DDF& in, ostream& out)
     }
 
     // Wrap a response shim.
-    DDF ret(NULL);
+    DDF ret(nullptr);
     DDFJanitor jout(ret);
     auto_ptr req(getRequest(in));
     auto_ptr resp(getResponse(ret));
@@ -396,7 +396,7 @@ pair StatusHandler::processMessage(
         << "' OpenSAML-C='" << OPENSAML_FULLVERSIONDOT
         << "' Shibboleth='" << PACKAGE_VERSION << "'/>";
 
-    const char* param = NULL;
+    const char* param = nullptr;
     if (param) {
     }
     else {
@@ -420,7 +420,7 @@ pair StatusHandler::processMessage(
             status = "";
         }
 
-        const PropertySet* relyingParty=NULL;
+        const PropertySet* relyingParty=nullptr;
         param=httpRequest.getParameter("entityID");
         if (param) {
             MetadataProvider* m = application.getMetadataProvider();
diff --git a/shibsp/handler/impl/TransformSessionInitiator.cpp b/shibsp/handler/impl/TransformSessionInitiator.cpp
index 3aa012c..4ba5c49 100644
--- a/shibsp/handler/impl/TransformSessionInitiator.cpp
+++ b/shibsp/handler/impl/TransformSessionInitiator.cpp
@@ -93,7 +93,7 @@ namespace shibsp {
                 e = XMLHelper::getFirstChildElement(e);
                 while (e) {
                     if (e->hasChildNodes()) {
-                        const XMLCh* flag = e->getAttributeNS(NULL, force);
+                        const XMLCh* flag = e->getAttributeNS(nullptr, force);
                         if (!flag)
                             flag = &chNull;
                         if (XMLString::equals(e->getLocalName(), Subst)) {
@@ -101,8 +101,8 @@ namespace shibsp {
                             if (temp.get() && *temp.get())
                                 m_subst.push_back(pair((*flag==chDigit_1 || *flag==chLatin_t), temp.get()));
                         }
-                        else if (XMLString::equals(e->getLocalName(), Regex) && e->hasAttributeNS(NULL, match)) {
-                            auto_ptr_char m(e->getAttributeNS(NULL, match));
+                        else if (XMLString::equals(e->getLocalName(), Regex) && e->hasAttributeNS(nullptr, match)) {
+                            auto_ptr_char m(e->getAttributeNS(nullptr, match));
                             auto_ptr_char repl(e->getFirstChild()->getNodeValue());
                             if (m.get() && *m.get() && repl.get() && *repl.get())
                                 m_regex.push_back(make_pair((*flag==chDigit_1 || *flag==chLatin_t), pair(m.get(), repl.get())));
@@ -189,7 +189,7 @@ void TransformSessionInitiator::receive(DDF& in, ostream& out)
 {
     // Find application.
     const char* aid=in["application_id"].string();
-    const Application* app=aid ? SPConfig::getConfig().getServiceProvider()->getApplication(aid) : NULL;
+    const Application* app=aid ? SPConfig::getConfig().getServiceProvider()->getApplication(aid) : nullptr;
     if (!app) {
         // Something's horribly wrong.
         m_log.error("couldn't find application (%s) to generate AuthnRequest", aid ? aid : "(missing)");
@@ -202,7 +202,7 @@ void TransformSessionInitiator::receive(DDF& in, ostream& out)
 
     string copy(entityID);
     doRequest(*app, copy);
-    DDF ret = DDF(NULL).string(copy.c_str());
+    DDF ret = DDF(nullptr).string(copy.c_str());
     DDFJanitor jout(ret);
     out << ret;
 }
diff --git a/shibsp/handler/impl/WAYFSessionInitiator.cpp b/shibsp/handler/impl/WAYFSessionInitiator.cpp
index 86f9f45..b9cc9c9 100644
--- a/shibsp/handler/impl/WAYFSessionInitiator.cpp
+++ b/shibsp/handler/impl/WAYFSessionInitiator.cpp
@@ -53,7 +53,7 @@ namespace shibsp {
     {
     public:
         WAYFSessionInitiator(const DOMElement* e, const char* appId)
-                : AbstractHandler(e, Category::getInstance(SHIBSP_LOGCAT".SessionInitiator.WAYF"), NULL, &m_remapper), m_url(NULL) {
+                : AbstractHandler(e, Category::getInstance(SHIBSP_LOGCAT".SessionInitiator.WAYF"), nullptr, &m_remapper), m_url(nullptr) {
             pair url = getString("URL");
             if (!url.first)
                 throw ConfigurationException("WAYF SessionInitiator requires a URL property.");
@@ -87,7 +87,7 @@ pair WAYFSessionInitiator::run(SPRequest& request, string& entityID,
 
     string target;
     pair prop;
-    const Handler* ACS=NULL;
+    const Handler* ACS=nullptr;
     const Application& app=request.getApplication();
     pair discoveryURL = pair(true, m_url);
 
@@ -135,10 +135,10 @@ pair WAYFSessionInitiator::run(SPRequest& request, string& entityID,
     }
 
     // Validate the ACS for use with this protocol.
-    pair ACSbinding = ACS ? ACS->getString("Binding") : pair(false,NULL);
+    pair ACSbinding = ACS ? ACS->getString("Binding") : pair(false,nullptr);
     if (ACSbinding.first) {
         pair compatibleBindings = getString("compatibleBindings");
-        if (compatibleBindings.first && strstr(compatibleBindings.second, ACSbinding.second) == NULL) {
+        if (compatibleBindings.first && strstr(compatibleBindings.second, ACSbinding.second) == nullptr) {
             m_log.error("configured or requested ACS has non-SAML 1.x binding");
             throw ConfigurationException("Configured or requested ACS has non-SAML 1.x binding ($1).", params(1, ACSbinding.second));
         }
@@ -155,7 +155,7 @@ pair WAYFSessionInitiator::run(SPRequest& request, string& entityID,
 
     // Compute the ACS URL. We add the ACS location to the base handlerURL.
     string ACSloc = request.getHandlerURL(target.c_str());
-    prop = ACS ? ACS->getString("Location") : pair(false,NULL);
+    prop = ACS ? ACS->getString("Location") : pair(false,nullptr);
     if (prop.first)
         ACSloc += prop.second;
 
@@ -177,7 +177,7 @@ pair WAYFSessionInitiator::run(SPRequest& request, string& entityID,
         target = "default";
 
     char timebuf[16];
-    sprintf(timebuf,"%lu",time(NULL));
+    sprintf(timebuf,"%lu",time(nullptr));
     const URLEncoder* urlenc = XMLToolingConfig::getConfig().getURLEncoder();
     string req=string(discoveryURL.second) + (strchr(discoveryURL.second,'?') ? '&' : '?') + "shire=" + urlenc->encode(ACSloc.c_str()) +
         "&time=" + timebuf + "&target=" + urlenc->encode(target.c_str()) +
diff --git a/shibsp/impl/ChainingAccessControl.cpp b/shibsp/impl/ChainingAccessControl.cpp
index 6feafda..60c1429 100644
--- a/shibsp/impl/ChainingAccessControl.cpp
+++ b/shibsp/impl/ChainingAccessControl.cpp
@@ -1,5 +1,5 @@
 /*
- *  Copyright 2009 Internet2
+ *  Copyright 2009-2010 Internet2
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -93,7 +93,7 @@ AccessControl::~AccessControl()
 
 ChainingAccessControl::ChainingAccessControl(const DOMElement* e)
 {
-    const XMLCh* op = e ? e->getAttributeNS(NULL, _operator) : NULL;
+    const XMLCh* op = e ? e->getAttributeNS(nullptr, _operator) : nullptr;
     if (XMLString::equals(op, AND))
         m_op=OP_AND;
     else if (XMLString::equals(op, OR))
@@ -102,9 +102,9 @@ ChainingAccessControl::ChainingAccessControl(const DOMElement* e)
         throw ConfigurationException("Missing or unrecognized operator in Chaining AccessControl configuration.");
 
     try {
-        e = e ? XMLHelper::getFirstChildElement(e, _AccessControl) : NULL;
+        e = e ? XMLHelper::getFirstChildElement(e, _AccessControl) : nullptr;
         while (e) {
-            auto_ptr_char type(e->getAttributeNS(NULL, _type));
+            auto_ptr_char type(e->getAttributeNS(nullptr, _type));
             if (type.get() && *type.get()) {
                 Category::getInstance(SHIBSP_LOGCAT".AccessControl.Chaining").info("building AccessControl provider of type (%s)...", type.get());
                 m_ac.push_back(SPConfig::getConfig().AccessControlManager.newPlugin(type.get(), e));
diff --git a/shibsp/impl/StorageServiceSessionCache.cpp b/shibsp/impl/StorageServiceSessionCache.cpp
index e23735a..e1551cf 100644
--- a/shibsp/impl/StorageServiceSessionCache.cpp
+++ b/shibsp/impl/StorageServiceSessionCache.cpp
@@ -86,15 +86,15 @@ namespace shibsp {
             const HTTPRequest& httpRequest,
             HTTPResponse& httpResponse,
             time_t expires,
-            const saml2md::EntityDescriptor* issuer=NULL,
-            const XMLCh* protocol=NULL,
-            const saml2::NameID* nameid=NULL,
-            const XMLCh* authn_instant=NULL,
-            const XMLCh* session_index=NULL,
-            const XMLCh* authncontext_class=NULL,
-            const XMLCh* authncontext_decl=NULL,
-            const vector* tokens=NULL,
-            const vector* attributes=NULL
+            const saml2md::EntityDescriptor* issuer=nullptr,
+            const XMLCh* protocol=nullptr,
+            const saml2::NameID* nameid=nullptr,
+            const XMLCh* authn_instant=nullptr,
+            const XMLCh* session_index=nullptr,
+            const XMLCh* authncontext_class=nullptr,
+            const XMLCh* authncontext_decl=nullptr,
+            const vector* tokens=nullptr,
+            const vector* attributes=nullptr
             );
         vector::size_type logout(
             const Application& application,
@@ -112,7 +112,7 @@ namespace shibsp {
             const set* indexes
             );
 #endif
-        Session* find(const Application& application, const char* key, const char* client_addr=NULL, time_t* timeout=NULL);
+        Session* find(const Application& application, const char* key, const char* client_addr=nullptr, time_t* timeout=nullptr);
         void remove(const Application& application, const char* key);
         void test();
 
@@ -122,17 +122,17 @@ namespace shibsp {
             return (session_id ? session_id : "");
         }
 
-        Session* find(const Application& application, const HTTPRequest& request, const char* client_addr=NULL, time_t* timeout=NULL) {
+        Session* find(const Application& application, const HTTPRequest& request, const char* client_addr=nullptr, time_t* timeout=nullptr) {
             string id = active(application, request);
             if (!id.empty())
                 return find(application, id.c_str(), client_addr, timeout);
-            return NULL;
+            return nullptr;
         }
 
-        Session* find(const Application& application, HTTPRequest& request, const char* client_addr=NULL, time_t* timeout=NULL) {
+        Session* find(const Application& application, HTTPRequest& request, const char* client_addr=nullptr, time_t* timeout=nullptr) {
             string id = active(application, request);
             if (id.empty())
-                return NULL;
+                return nullptr;
             try {
                 Session* session = find(application, id.c_str(), client_addr, timeout);
                 if (session)
@@ -155,10 +155,10 @@ namespace shibsp {
                 }
                 throw;
             }
-            return NULL;
+            return nullptr;
         }
 
-        void remove(const Application& application, const HTTPRequest& request, HTTPResponse* response=NULL) {
+        void remove(const Application& application, const HTTPRequest& request, HTTPResponse* response=nullptr) {
             pair shib_cookie = application.getCookieNameProps("_shibsession_");
             const char* session_id = request.getCookie(shib_cookie.first.c_str());
             if (session_id && *session_id) {
@@ -209,9 +209,9 @@ namespace shibsp {
     public:
         StoredSession(SSCache* cache, DDF& obj) : m_obj(obj),
 #ifndef SHIBSP_LITE
-                m_nameid(NULL),
+                m_nameid(nullptr),
 #endif
-                m_cache(cache), m_expires(0), m_lastAccess(time(NULL)), m_lock(NULL) {
+                m_cache(cache), m_expires(0), m_lastAccess(time(nullptr)), m_lock(nullptr) {
             auto_ptr_XMLCh exp(m_obj["expires"].string());
             if (exp.get()) {
                 DateTime iso(exp.get());
@@ -394,7 +394,7 @@ void StoredSession::unmarshallAttributes() const
 
 void StoredSession::validate(const Application& application, const char* client_addr, time_t* timeout)
 {
-    time_t now = time(NULL);
+    time_t now = time(nullptr);
 
     // Basic expiration?
     if (m_expires > 0) {
@@ -564,7 +564,7 @@ void StoredSession::addAttributes(const vector& attributes)
         else if (ver < 0) {
             // Out of sync.
             m_cache->m_log.warn("storage service indicates the record is out of sync, updating with a fresh copy...");
-            ver = m_cache->m_storage->readText(getID(), "session", &record, NULL);
+            ver = m_cache->m_storage->readText(getID(), "session", &record, nullptr);
             if (!ver) {
                 m_cache->m_log.error("readText failed on StorageService for session (%s)", getID());
                 throw IOException("Unable to read back stored session.");
@@ -613,7 +613,7 @@ const Assertion* StoredSession::getAssertion(const char* id) const
         return i->second;
 
     string tokenstr;
-    if (!m_cache->m_storage->readText(getID(), id, &tokenstr, NULL))
+    if (!m_cache->m_storage->readText(getID(), id, &tokenstr, nullptr))
         throw FatalProfileException("Assertion not found in cache.");
 
     // Parse and bind the document into an XMLObject.
@@ -650,7 +650,7 @@ void StoredSession::addAssertion(Assertion* assertion)
     m_cache->m_log.debug("adding assertion (%s) to session (%s)", id.get(), getID());
 
     time_t exp;
-    if (!m_cache->m_storage->readText(getID(), "session", NULL, &exp))
+    if (!m_cache->m_storage->readText(getID(), "session", nullptr, &exp))
         throw IOException("Unable to load expiration time for stored session.");
 
     ostringstream tokenstr;
@@ -660,7 +660,7 @@ void StoredSession::addAssertion(Assertion* assertion)
 
     int ver;
     do {
-        DDF token = DDF(NULL).string(id.get());
+        DDF token = DDF(nullptr).string(id.get());
         m_obj["assertions"].add(token);
 
         // Tentatively increment the version.
@@ -693,7 +693,7 @@ void StoredSession::addAssertion(Assertion* assertion)
         else if (ver < 0) {
             // Out of sync.
             m_cache->m_log.warn("storage service indicates the record is out of sync, updating with a fresh copy...");
-            ver = m_cache->m_storage->readText(getID(), "session", &record, NULL);
+            ver = m_cache->m_storage->readText(getID(), "session", &record, nullptr);
             if (!ver) {
                 m_cache->m_log.error("readText failed on StorageService for session (%s)", getID());
                 m_cache->m_storage->deleteText(getID(), id.get());
@@ -749,9 +749,9 @@ SessionCacheEx::~SessionCacheEx()
 SSCache::SSCache(const DOMElement* e)
     : m_log(Category::getInstance(SHIBSP_LOGCAT".SessionCache")), inproc(true), m_cacheTimeout(28800),
 #ifndef SHIBSP_LITE
-      m_storage(NULL), m_storage_lite(NULL), m_cacheAssertions(true),
+      m_storage(nullptr), m_storage_lite(nullptr), m_cacheAssertions(true),
 #endif
-      m_root(e), m_inprocTimeout(900), m_lock(NULL), shutdown(false), shutdown_wait(NULL), cleanup_thread(NULL)
+      m_root(e), m_inprocTimeout(900), m_lock(nullptr), shutdown(false), shutdown_wait(nullptr), cleanup_thread(nullptr)
 {
     static const XMLCh cacheAssertions[] =  UNICODE_LITERAL_15(c,a,c,h,e,A,s,s,e,r,t,i,o,n,s);
     static const XMLCh cacheTimeout[] =     UNICODE_LITERAL_12(c,a,c,h,e,T,i,m,e,o,u,t);
@@ -763,14 +763,14 @@ SSCache::SSCache(const DOMElement* e)
     inproc = conf.isEnabled(SPConfig::InProcess);
 
     if (e) {
-        const XMLCh* tag=e->getAttributeNS(NULL,cacheTimeout);
+        const XMLCh* tag=e->getAttributeNS(nullptr,cacheTimeout);
         if (tag && *tag) {
             m_cacheTimeout = XMLString::parseInt(tag);
             if (!m_cacheTimeout)
                 m_cacheTimeout=28800;
         }
         if (inproc) {
-            const XMLCh* tag=e->getAttributeNS(NULL,inprocTimeout);
+            const XMLCh* tag=e->getAttributeNS(nullptr,inprocTimeout);
             if (tag && *tag) {
                 m_inprocTimeout = XMLString::parseInt(tag);
                 if (!m_inprocTimeout)
@@ -781,7 +781,7 @@ SSCache::SSCache(const DOMElement* e)
 
 #ifndef SHIBSP_LITE
     if (conf.isEnabled(SPConfig::OutOfProcess)) {
-        const XMLCh* tag = e ? e->getAttributeNS(NULL,_StorageService) : NULL;
+        const XMLCh* tag = e ? e->getAttributeNS(nullptr,_StorageService) : nullptr;
         if (tag && *tag) {
             auto_ptr_char ssid(tag);
             m_storage = conf.getServiceProvider()->getStorageService(ssid.get());
@@ -791,7 +791,7 @@ SSCache::SSCache(const DOMElement* e)
         if (!m_storage)
             throw ConfigurationException("SessionCache unable to locate StorageService, check configuration.");
 
-        tag = e ? e->getAttributeNS(NULL,_StorageServiceLite) : NULL;
+        tag = e ? e->getAttributeNS(nullptr,_StorageServiceLite) : nullptr;
         if (tag && *tag) {
             auto_ptr_char ssid(tag);
             m_storage_lite = conf.getServiceProvider()->getStorageService(ssid.get());
@@ -802,7 +802,7 @@ SSCache::SSCache(const DOMElement* e)
             m_log.info("No StorageServiceLite specified. Using standard StorageService.");
             m_storage_lite = m_storage;
         }
-        tag = e ? e->getAttributeNS(NULL, cacheAssertions) : NULL;
+        tag = e ? e->getAttributeNS(nullptr, cacheAssertions) : nullptr;
         if (tag && (*tag == chLatin_f || *tag == chDigit_0))
             m_cacheAssertions = false;
     }
@@ -836,7 +836,7 @@ SSCache::~SSCache()
         // Shut down the cleanup thread and let it know...
         shutdown = true;
         shutdown_wait->signal();
-        cleanup_thread->join(NULL);
+        cleanup_thread->join(nullptr);
 
         for_each(m_hashtable.begin(),m_hashtable.end(),cleanup_pair());
         delete m_lock;
@@ -860,7 +860,7 @@ SSCache::~SSCache()
 void SSCache::test()
 {
     auto_ptr_char temp(SAMLConfig::getConfig().generateIdentifier());
-    m_storage->createString("SessionCacheTest", temp.get(), "Test", time(NULL) + 60);
+    m_storage->createString("SessionCacheTest", temp.get(), "Test", time(nullptr) + 60);
     m_storage->deleteString("SessionCacheTest", temp.get());
 }
 
@@ -886,7 +886,7 @@ void SSCache::insert(const char* key, time_t expires, const char* name, const ch
     }
     else {
         // New record.
-        obj = DDF(NULL).structure();
+        obj = DDF(nullptr).structure();
     }
 
     if (!index || !*index)
@@ -894,7 +894,7 @@ void SSCache::insert(const char* key, time_t expires, const char* name, const ch
     DDF sessions = obj.addmember(index);
     if (!sessions.islist())
         sessions.list();
-    DDF session = DDF(NULL).string(key);
+    DDF session = DDF(nullptr).string(key);
     sessions.add(session);
 
     // Remarshall the record.
@@ -939,10 +939,10 @@ void SSCache::insert(
 
     m_log.debug("creating new session");
 
-    time_t now = time(NULL);
+    time_t now = time(nullptr);
     auto_ptr_char index(session_index);
-    auto_ptr_char entity_id(issuer ? issuer->getEntityID() : NULL);
-    auto_ptr_char name(nameid ? nameid->getName() : NULL);
+    auto_ptr_char entity_id(issuer ? issuer->getEntityID() : nullptr);
+    auto_ptr_char name(nameid ? nameid->getName() : nullptr);
 
     if (nameid) {
         // Check for a pending logout.
@@ -958,7 +958,7 @@ void SSCache::insert(
             // IdP.SP.index contains logout expiration, if any.
             DDF deadmenwalking = pendobj[issuer ? entity_id.get() : "_shibnull"][application.getRelyingParty(issuer)->getString("entityID").second];
             const char* logexpstr = deadmenwalking[session_index ? index.get() : "_shibnull"].string();
-            if (!logexpstr && session_index)    // we tried an exact session match, now try for NULL
+            if (!logexpstr && session_index)    // we tried an exact session match, now try for nullptr
                 logexpstr = deadmenwalking["_shibnull"].string();
             if (logexpstr) {
                 auto_ptr_XMLCh dt(logexpstr);
@@ -1022,7 +1022,7 @@ void SSCache::insert(
         obj.addmember("assertions").list();
         for (vector::const_iterator t = tokens->begin(); t!=tokens->end(); ++t) {
             auto_ptr_char tokenid((*t)->getID());
-            DDF tokid = DDF(NULL).string(tokenid.get());
+            DDF tokid = DDF(nullptr).string(tokenid.get());
             obj["assertions"].add(tokid);
         }
     }
@@ -1141,7 +1141,7 @@ bool SSCache::matches(
     const set* indexes
     )
 {
-    auto_ptr_char entityID(issuer ? issuer->getEntityID() : NULL);
+    auto_ptr_char entityID(issuer ? issuer->getEntityID() : nullptr);
     try {
         Session* session = find(application, request);
         if (session) {
@@ -1174,7 +1174,7 @@ vector::size_type SSCache::logout(
     if (!m_storage)
         throw ConfigurationException("SessionCache insertion requires a StorageService.");
 
-    auto_ptr_char entityID(issuer ? issuer->getEntityID() : NULL);
+    auto_ptr_char entityID(issuer ? issuer->getEntityID() : nullptr);
     auto_ptr_char name(nameid.getName());
 
     m_log.info("request to logout sessions from (%s) for (%s)", entityID.get() ? entityID.get() : "unknown", name.get());
@@ -1206,7 +1206,7 @@ vector::size_type SSCache::logout(
             lin >> obj;
         }
         else {
-            obj = DDF(NULL).structure();
+            obj = DDF(nullptr).structure();
         }
 
         // Structure is keyed by the IdP and SP, with a member per session index containing the expiration.
@@ -1257,7 +1257,7 @@ vector::size_type SSCache::logout(
             key = sessions.first();
             while (key.isstring()) {
                 // Fetch the session for comparison.
-                Session* session = NULL;
+                Session* session = nullptr;
                 try {
                     session = find(application, key.string());
                 }
@@ -1361,7 +1361,7 @@ Session* SSCache::find(const Application& application, const char* key, const ch
 #ifdef _DEBUG
     xmltooling::NDC ndc("find");
 #endif
-    StoredSession* session=NULL;
+    StoredSession* session=nullptr;
 
     if (inproc) {
         m_log.debug("searching local cache for session (%s)", key);
@@ -1406,13 +1406,13 @@ Session* SSCache::find(const Application& application, const char* key, const ch
                 if (!out.isstruct()) {
                     out.destroy();
                     m_log.debug("session not found in remote cache");
-                    return NULL;
+                    return nullptr;
                 }
 
                 // Wrap the results in a local entry and save it.
                 session = new StoredSession(this, out);
                 // The remote end has handled timeout issues, we handle address and expiration checks.
-                timeout = NULL;
+                timeout = nullptr;
             }
             catch (...) {
                 out.destroy();
@@ -1432,7 +1432,7 @@ Session* SSCache::find(const Application& application, const char* key, const ch
             string record;
             int ver = m_storage->readText(key, "session", &record, &lastAccess);
             if (!ver)
-                return NULL;
+                return nullptr;
 
             m_log.debug("reconstituting session and checking validity");
 
@@ -1440,7 +1440,7 @@ Session* SSCache::find(const Application& application, const char* key, const ch
             in >> obj;
 
             lastAccess -= m_cacheTimeout;   // adjusts it back to the last time the record's timestamp was touched
-            time_t now=time(NULL);
+            time_t now=time(nullptr);
 
             if (timeout && *timeout > 0 && now - lastAccess >= *timeout) {
                 m_log.info("session timed out (ID: %s)", key);
@@ -1468,7 +1468,7 @@ Session* SSCache::find(const Application& application, const char* key, const ch
             // Wrap the results in a local entry and save it.
             session = new StoredSession(this, obj);
             // We handled timeout issues, still need to handle address and expiration checks.
-            timeout = NULL;
+            timeout = nullptr;
 #else
             throw ConfigurationException("SessionCache search requires a StorageService.");
 #endif
@@ -1494,7 +1494,7 @@ Session* SSCache::find(const Application& application, const char* key, const ch
     if (!XMLString::equals(session->getApplicationID(), application.getId())) {
         m_log.error("an application (%s) tried to access another application's session", application.getId());
         session->unlock();
-        return NULL;
+        return nullptr;
     }
 
     // Verify currency and update the timestamp if indicated by caller.
@@ -1587,7 +1587,7 @@ void SSCache::cleanup()
 
     // Load our configuration details...
     static const XMLCh cleanupInterval[] = UNICODE_LITERAL_15(c,l,e,a,n,u,p,I,n,t,e,r,v,a,l);
-    const XMLCh* tag=m_root ? m_root->getAttributeNS(NULL,cleanupInterval) : NULL;
+    const XMLCh* tag=m_root ? m_root->getAttributeNS(nullptr,cleanupInterval) : nullptr;
     int rerun_timer = 900;
     if (tag && *tag) {
         rerun_timer = XMLString::parseInt(tag);
@@ -1613,7 +1613,7 @@ void SSCache::cleanup()
         // Pass 1: iterate over the map and find all entries that have not been
         // used in the allotted timeout.
         vector stale_keys;
-        time_t stale = time(NULL) - m_inprocTimeout;
+        time_t stale = time(nullptr) - m_inprocTimeout;
 
         m_log.debug("cleanup thread running");
 
@@ -1643,7 +1643,7 @@ void SSCache::cleanup()
 
     mutex->unlock();
     delete mutex;
-    Thread::exit(NULL);
+    Thread::exit(nullptr);
 }
 
 void* SSCache::cleanup_fn(void* cache_p)
@@ -1655,7 +1655,7 @@ void* SSCache::cleanup_fn(void* cache_p)
 
     // Now run the cleanup process.
     reinterpret_cast(cache_p)->cleanup();
-    return NULL;
+    return nullptr;
 }
 
 #ifndef SHIBSP_LITE
@@ -1679,7 +1679,7 @@ void SSCache::receive(DDF& in, ostream& out)
         string record;
         time_t lastAccess;
         if (!m_storage->readText(key, "session", &record, &lastAccess)) {
-            DDF ret(NULL);
+            DDF ret(nullptr);
             DDFJanitor jan(ret);
             out << ret;
             return;
@@ -1687,7 +1687,7 @@ void SSCache::receive(DDF& in, ostream& out)
 
         // Adjust for expiration to recover last access time and check timeout.
         lastAccess -= m_cacheTimeout;
-        time_t now=time(NULL);
+        time_t now=time(nullptr);
 
         // See if we need to check for a timeout.
         if (in["timeout"].string()) {
@@ -1732,7 +1732,7 @@ void SSCache::receive(DDF& in, ostream& out)
 
         // Adjust for expiration to recover last access time and check timeout.
         lastAccess -= m_cacheTimeout;
-        time_t now=time(NULL);
+        time_t now=time(nullptr);
 
         // See if we need to check for a timeout.
         time_t timeout = 0;
@@ -1761,7 +1761,7 @@ void SSCache::receive(DDF& in, ostream& out)
             out << record;
         }
         else {
-            DDF ret(NULL);
+            DDF ret(nullptr);
             DDFJanitor jan(ret);
             out << ret;
         }
@@ -1776,7 +1776,7 @@ void SSCache::receive(DDF& in, ostream& out)
             throw ConfigurationException("Application not found, check configuration?");
 
         remove(*app, key);
-        DDF ret(NULL);
+        DDF ret(nullptr);
         DDFJanitor jan(ret);
         out << ret;
     }
diff --git a/shibsp/impl/XMLAccessControl.cpp b/shibsp/impl/XMLAccessControl.cpp
index 22738e4..6eecf78 100644
--- a/shibsp/impl/XMLAccessControl.cpp
+++ b/shibsp/impl/XMLAccessControl.cpp
@@ -17,7 +17,7 @@
 /**
  * XMLAccessControl.cpp
  *
- * XML-based access control syntax
+ * XML-based access control syntax.
  */
 
 #include "internal.h"
@@ -105,7 +105,7 @@ namespace shibsp {
     {
     public:
         XMLAccessControl(const DOMElement* e)
-                : ReloadableXMLFile(e, Category::getInstance(SHIBSP_LOGCAT".AccessControl.XML")), m_rootAuthz(NULL) {
+                : ReloadableXMLFile(e, Category::getInstance(SHIBSP_LOGCAT".AccessControl.XML")), m_rootAuthz(nullptr) {
             background_load(); // guarantees an exception or the policy is loaded
         }
 
@@ -146,16 +146,16 @@ namespace shibsp {
 
 Rule::Rule(const DOMElement* e)
 {
-    auto_ptr_char req(e->getAttributeNS(NULL,require));
+    auto_ptr_char req(e->getAttributeNS(nullptr,require));
     if (!req.get() || !*req.get())
         throw ConfigurationException("Access control rule missing require attribute");
     m_alias=req.get();
 
-    auto_arrayptr vals(toUTF8(e->hasChildNodes() ? e->getFirstChild()->getNodeValue() : NULL));
+    auto_arrayptr vals(toUTF8(e->hasChildNodes() ? e->getFirstChild()->getNodeValue() : nullptr));
     if (!vals.get())
         return;
 
-    const XMLCh* flag = e->getAttributeNS(NULL,_list);
+    const XMLCh* flag = e->getAttributeNS(nullptr,_list);
     if (flag && (*flag == chLatin_f || *flag == chDigit_0)) {
         if (*vals.get())
             m_vals.push_back(vals.get());
@@ -163,7 +163,7 @@ Rule::Rule(const DOMElement* e)
     }
 
 #ifdef HAVE_STRTOK_R
-    char* pos=NULL;
+    char* pos=nullptr;
     const char* token=strtok_r(const_cast(vals.get())," ",&pos);
 #else
     const char* token=strtok(const_cast(vals.get())," ");
@@ -171,9 +171,9 @@ Rule::Rule(const DOMElement* e)
     while (token) {
         m_vals.push_back(token);
 #ifdef HAVE_STRTOK_R
-        token=strtok_r(NULL," ",&pos);
+        token=strtok_r(nullptr," ",&pos);
 #else
-        token=strtok(NULL," ");
+        token=strtok(nullptr," ");
 #endif
     }
 }
@@ -252,14 +252,14 @@ AccessControl::aclresult_t Rule::authorized(const SPRequest& request, const Sess
     return shib_acl_false;
 }
 
-RuleRegex::RuleRegex(const DOMElement* e) : m_exp(toUTF8(e->hasChildNodes() ? e->getFirstChild()->getNodeValue() : NULL))
+RuleRegex::RuleRegex(const DOMElement* e) : m_exp(toUTF8(e->hasChildNodes() ? e->getFirstChild()->getNodeValue() : nullptr))
 {
-    auto_ptr_char req(e->getAttributeNS(NULL,require));
+    auto_ptr_char req(e->getAttributeNS(nullptr,require));
     if (!req.get() || !*req.get() || !m_exp.get() || !*m_exp.get())
         throw ConfigurationException("Access control rule missing require attribute or element content.");
     m_alias=req.get();
 
-    const XMLCh* flag = e->getAttributeNS(NULL,ignoreCase);
+    const XMLCh* flag = e->getAttributeNS(nullptr,ignoreCase);
     bool ignore = (flag && (*flag == chLatin_t || *flag == chDigit_1));
     try {
         m_re = new RegularExpression(e->getFirstChild()->getNodeValue(), (ignore ? ignoreOption : &chNull));
@@ -422,7 +422,7 @@ pair XMLAccessControl::background_load()
     pair raw = ReloadableXMLFile::load();
 
     // If we own it, wrap it.
-    XercesJanitor docjanitor(raw.first ? raw.second->getOwnerDocument() : NULL);
+    XercesJanitor docjanitor(raw.first ? raw.second->getOwnerDocument() : nullptr);
 
     // Check for AccessControl wrapper and drop a level.
     if (XMLString::equals(raw.second->getLocalName(),_AccessControl))
@@ -443,7 +443,7 @@ pair XMLAccessControl::background_load()
     delete m_rootAuthz;
     m_rootAuthz = authz;
 
-    return make_pair(false,(DOMElement*)NULL);
+    return make_pair(false,(DOMElement*)nullptr);
 }
 
 AccessControl::aclresult_t XMLAccessControl::authorized(const SPRequest& request, const Session* session) const
diff --git a/shibsp/impl/XMLRequestMapper.cpp b/shibsp/impl/XMLRequestMapper.cpp
index 715f71a..8f03a88 100644
--- a/shibsp/impl/XMLRequestMapper.cpp
+++ b/shibsp/impl/XMLRequestMapper.cpp
@@ -59,8 +59,8 @@ namespace shibsp {
     class Override : public DOMPropertySet, public DOMNodeFilter
     {
     public:
-        Override() : m_acl(NULL) {}
-        Override(const DOMElement* e, Category& log, const Override* base=NULL);
+        Override() : m_acl(nullptr) {}
+        Override(const DOMElement* e, Category& log, const Override* base=nullptr);
         ~Override();
 
         // Provides filter to exclude special config elements.
@@ -74,7 +74,7 @@ namespace shibsp {
         }
 
         const Override* locate(const HTTPRequest& request) const;
-        AccessControl* getAC() const { return (m_acl ? m_acl : (getParent() ? dynamic_cast(getParent())->getAC() : NULL)); }
+        AccessControl* getAC() const { return (m_acl ? m_acl : (getParent() ? dynamic_cast(getParent())->getAC() : nullptr)); }
 
     protected:
         void loadACL(const DOMElement* e, Category& log);
@@ -116,7 +116,7 @@ namespace shibsp {
     class XMLRequestMapper : public RequestMapper, public ReloadableXMLFile
     {
     public:
-        XMLRequestMapper(const DOMElement* e) : ReloadableXMLFile(e,Category::getInstance(SHIBSP_LOGCAT".RequestMapper")), m_impl(NULL) {
+        XMLRequestMapper(const DOMElement* e) : ReloadableXMLFile(e,Category::getInstance(SHIBSP_LOGCAT".RequestMapper")), m_impl(nullptr) {
             background_load();
         }
 
@@ -190,7 +190,7 @@ void Override::loadACL(const DOMElement* e, Category& log)
             else {
                 acl=XMLHelper::getFirstChildElement(e,AccessControlProvider);
                 if (acl) {
-                    auto_ptr_char type(acl->getAttributeNS(NULL,_type));
+                    auto_ptr_char type(acl->getAttributeNS(nullptr,_type));
                     log.info("building AccessControl provider of type %s...",type.get());
                     m_acl=SPConfig::getConfig().AccessControlManager.newPlugin(type.get(),acl);
                 }
@@ -203,11 +203,11 @@ void Override::loadACL(const DOMElement* e, Category& log)
     }
 }
 
-Override::Override(const DOMElement* e, Category& log, const Override* base) : m_acl(NULL)
+Override::Override(const DOMElement* e, Category& log, const Override* base) : m_acl(nullptr)
 {
     try {
         // Load the property set.
-        load(e,NULL,this);
+        load(e,nullptr,this);
         setParent(base);
 
         // Load any AccessControl provider.
@@ -216,7 +216,7 @@ Override::Override(const DOMElement* e, Category& log, const Override* base) : m
         // Handle nested Paths.
         DOMElement* path = XMLHelper::getFirstChildElement(e,Path);
         for (int i=1; path; ++i, path=XMLHelper::getNextSiblingElement(path,Path)) {
-            const XMLCh* n=path->getAttributeNS(NULL,name);
+            const XMLCh* n=path->getAttributeNS(nullptr,name);
 
             // Skip any leading slashes.
             while (n && *n==chForwardSlash)
@@ -247,19 +247,19 @@ Override::Override(const DOMElement* e, Category& log, const Override* base) : m
                 if (*n) {
                     // Create a placeholder Path element for the first path segment and replant under it.
                     DOMElement* newpath=path->getOwnerDocument()->createElementNS(shibspconstants::SHIB2SPCONFIG_NS,Path);
-                    newpath->setAttributeNS(NULL,name,namebuf);
-                    path->setAttributeNS(NULL,name,n);
+                    newpath->setAttributeNS(nullptr,name,namebuf);
+                    path->setAttributeNS(nullptr,name,n);
                     path->getParentNode()->replaceChild(newpath,path);
                     newpath->appendChild(path);
 
                     // Repoint our locals at the new parent.
                     path=newpath;
-                    n=path->getAttributeNS(NULL,name);
+                    n=path->getAttributeNS(nullptr,name);
                 }
                 else {
                     // All we had was a pathname with trailing slash(es), so just reset it without them.
-                    path->setAttributeNS(NULL,name,namebuf);
-                    n=path->getAttributeNS(NULL,name);
+                    path->setAttributeNS(nullptr,name,namebuf);
+                    n=path->getAttributeNS(nullptr,name);
                 }
                 delete[] namebuf;
             }
@@ -284,7 +284,7 @@ Override::Override(const DOMElement* e, Category& log, const Override* base) : m
             // Handle nested PathRegexs.
             path = XMLHelper::getFirstChildElement(e,PathRegex);
             for (int i=1; path; ++i, path=XMLHelper::getNextSiblingElement(path,PathRegex)) {
-                const XMLCh* n=path->getAttributeNS(NULL,regex);
+                const XMLCh* n=path->getAttributeNS(nullptr,regex);
                 if (!n || !*n) {
                     log.warn("skipping PathRegex element (%d) with empty regex attribute",i);
                     continue;
@@ -292,7 +292,7 @@ Override::Override(const DOMElement* e, Category& log, const Override* base) : m
 
                 auto_ptr o(new Override(path,log,this));
 
-                const XMLCh* flag=path->getAttributeNS(NULL,ignoreCase);
+                const XMLCh* flag=path->getAttributeNS(nullptr,ignoreCase);
                 try {
                     auto_ptr re(
                         new RegularExpression(n, (flag && (*flag==chLatin_f || *flag==chDigit_0)) ? &chNull : ignoreOption)
@@ -313,17 +313,17 @@ Override::Override(const DOMElement* e, Category& log, const Override* base) : m
         // Handle nested Querys.
         path = XMLHelper::getFirstChildElement(e,Query);
         for (int i=1; path; ++i, path=XMLHelper::getNextSiblingElement(path,Query)) {
-            const XMLCh* n=path->getAttributeNS(NULL,name);
+            const XMLCh* n=path->getAttributeNS(nullptr,name);
             if (!n || !*n) {
                 log.warn("skipping Query element (%d) with empty name attribute",i);
                 continue;
             }
             auto_ptr_char ntemp(n);
-            const XMLCh* v=path->getAttributeNS(NULL,regex);
+            const XMLCh* v=path->getAttributeNS(nullptr,regex);
 
             auto_ptr o(new Override(path,log,this));
             try {
-                RegularExpression* re = NULL;
+                RegularExpression* re = nullptr;
                 if (v && *v)
                     re = new RegularExpression(v);
                 m_queries.push_back(make_pair(make_pair(string(ntemp.get()),re), o.release()));
@@ -389,7 +389,7 @@ const Override* Override::locate(const HTTPRequest& request) const
 
     // Tokenize the path by segment and try and map each segment.
 #ifdef HAVE_STRTOK_R
-    char* pos=NULL;
+    char* pos=nullptr;
     const char* token=strtok_r(dup,"/",&pos);
 #else
     const char* token=strtok(dup,"/");
@@ -409,9 +409,9 @@ const Override* Override::locate(const HTTPRequest& request) const
 
         // Get the next segment, if any.
 #ifdef HAVE_STRTOK_R
-        token=strtok_r(NULL,"/",&pos);
+        token=strtok_r(nullptr,"/",&pos);
 #else
-        token=strtok(NULL,"/");
+        token=strtok(nullptr,"/");
 #endif
     }
 
@@ -459,14 +459,14 @@ const Override* Override::locate(const HTTPRequest& request) const
     return o;
 }
 
-XMLRequestMapperImpl::XMLRequestMapperImpl(const DOMElement* e, Category& log) : m_document(NULL)
+XMLRequestMapperImpl::XMLRequestMapperImpl(const DOMElement* e, Category& log) : m_document(nullptr)
 {
 #ifdef _DEBUG
     xmltooling::NDC ndc("XMLRequestMapperImpl");
 #endif
 
     // Load the property set.
-    load(e,NULL,this);
+    load(e,nullptr,this);
 
     // Load any AccessControl provider.
     loadACL(e,log);
@@ -474,7 +474,7 @@ XMLRequestMapperImpl::XMLRequestMapperImpl(const DOMElement* e, Category& log) :
     // Loop over the HostRegex elements.
     const DOMElement* host = XMLHelper::getFirstChildElement(e,HostRegex);
     for (int i=1; host; ++i, host=XMLHelper::getNextSiblingElement(host,HostRegex)) {
-        const XMLCh* n=host->getAttributeNS(NULL,regex);
+        const XMLCh* n=host->getAttributeNS(nullptr,regex);
         if (!n || !*n) {
             log.warn("Skipping HostRegex element (%d) with empty regex attribute",i);
             continue;
@@ -482,7 +482,7 @@ XMLRequestMapperImpl::XMLRequestMapperImpl(const DOMElement* e, Category& log) :
 
         auto_ptr o(new Override(host,log,this));
 
-        const XMLCh* flag=host->getAttributeNS(NULL,ignoreCase);
+        const XMLCh* flag=host->getAttributeNS(nullptr,ignoreCase);
         try {
             auto_ptr re(
                 new RegularExpression(n, (flag && (*flag==chLatin_f || *flag==chDigit_0)) ? &chNull : ignoreOption)
@@ -500,7 +500,7 @@ XMLRequestMapperImpl::XMLRequestMapperImpl(const DOMElement* e, Category& log) :
     // Loop over the Host elements.
     host = XMLHelper::getFirstChildElement(e,Host);
     for (int i=1; host; ++i, host=XMLHelper::getNextSiblingElement(host,Host)) {
-        const XMLCh* n=host->getAttributeNS(NULL,name);
+        const XMLCh* n=host->getAttributeNS(nullptr,name);
         if (!n || !*n) {
             log.warn("Skipping Host element (%d) with empty name attribute",i);
             continue;
@@ -613,7 +613,7 @@ XMLRequestMapperImpl::XMLRequestMapperImpl(const DOMElement* e, Category& log) :
 
 const Override* XMLRequestMapperImpl::findOverride(const char* vhost, const HTTPRequest& request) const
 {
-    const Override* o=NULL;
+    const Override* o=nullptr;
     map::const_iterator i=m_map.find(vhost);
     if (i!=m_map.end())
         o=i->second;
@@ -638,7 +638,7 @@ pair XMLRequestMapper::background_load()
     pair raw = ReloadableXMLFile::load();
 
     // If we own it, wrap it.
-    XercesJanitor docjanitor(raw.first ? raw.second->getOwnerDocument() : NULL);
+    XercesJanitor docjanitor(raw.first ? raw.second->getOwnerDocument() : nullptr);
 
     XMLRequestMapperImpl* impl = new XMLRequestMapperImpl(raw.second, m_log);
 
@@ -652,7 +652,7 @@ pair XMLRequestMapper::background_load()
     delete m_impl;
     m_impl = impl;
 
-    return make_pair(false,(DOMElement*)NULL);
+    return make_pair(false,(DOMElement*)nullptr);
 }
 
 RequestMapper::Settings XMLRequestMapper::getSettings(const HTTPRequest& request) const
diff --git a/shibsp/impl/XMLServiceProvider.cpp b/shibsp/impl/XMLServiceProvider.cpp
index 06f7fce..c7efee5 100644
--- a/shibsp/impl/XMLServiceProvider.cpp
+++ b/shibsp/impl/XMLServiceProvider.cpp
@@ -105,7 +105,7 @@ namespace {
     class SHIBSP_DLLLOCAL XMLApplication : public Application, public Remoted, public DOMPropertySet, public DOMNodeFilter
     {
     public:
-        XMLApplication(const ServiceProvider*, const DOMElement* e, const XMLApplication* base=NULL);
+        XMLApplication(const ServiceProvider*, const DOMElement* e, const XMLApplication* base=nullptr);
         ~XMLApplication() { cleanup(); }
 
         const char* getHash() const {return m_hash.c_str();}
@@ -176,7 +176,7 @@ namespace {
         void receive(DDF& in, ostream& out) {
             // Only current function is to return the headers to clear.
             DDF header;
-            DDF ret=DDF(NULL).list();
+            DDF ret=DDF(nullptr).list();
             DDFJanitor jret(ret);
             for (vector< pair >::const_iterator i = m_unsetHeaders.begin(); i!=m_unsetHeaders.end(); ++i) {
                 header = DDF(i->first.c_str()).string(i->second.c_str());
@@ -285,9 +285,9 @@ namespace {
     {
     public:
         XMLConfig(const DOMElement* e) : ReloadableXMLFile(e, Category::getInstance(SHIBSP_LOGCAT".Config")),
-            m_impl(NULL), m_listener(NULL), m_sessionCache(NULL)
+            m_impl(nullptr), m_listener(nullptr), m_sessionCache(nullptr)
 #ifndef SHIBSP_LITE
-            , m_tranLog(NULL)
+            , m_tranLog(nullptr)
 #endif
         {
         }
@@ -303,8 +303,8 @@ namespace {
             delete m_listener;
 #ifndef SHIBSP_LITE
             delete m_tranLog;
-            SAMLConfig::getConfig().setArtifactMap(NULL);
-            XMLToolingConfig::getConfig().setReplayCache(NULL);
+            SAMLConfig::getConfig().setArtifactMap(nullptr);
+            XMLToolingConfig::getConfig().setReplayCache(nullptr);
             for_each(m_storage.begin(), m_storage.end(), cleanup_pair());
 #endif
         }
@@ -312,11 +312,11 @@ namespace {
         // PropertySet
         const PropertySet* getParent() const { return m_impl->getParent(); }
         void setParent(const PropertySet* parent) {return m_impl->setParent(parent);}
-        pair getBool(const char* name, const char* ns=NULL) const {return m_impl->getBool(name,ns);}
-        pair getString(const char* name, const char* ns=NULL) const {return m_impl->getString(name,ns);}
-        pair getXMLString(const char* name, const char* ns=NULL) const {return m_impl->getXMLString(name,ns);}
-        pair getUnsignedInt(const char* name, const char* ns=NULL) const {return m_impl->getUnsignedInt(name,ns);}
-        pair getInt(const char* name, const char* ns=NULL) const {return m_impl->getInt(name,ns);}
+        pair getBool(const char* name, const char* ns=nullptr) const {return m_impl->getBool(name,ns);}
+        pair getString(const char* name, const char* ns=nullptr) const {return m_impl->getString(name,ns);}
+        pair getXMLString(const char* name, const char* ns=nullptr) const {return m_impl->getXMLString(name,ns);}
+        pair getUnsignedInt(const char* name, const char* ns=nullptr) const {return m_impl->getUnsignedInt(name,ns);}
+        pair getInt(const char* name, const char* ns=nullptr) const {return m_impl->getInt(name,ns);}
         void getAll(map& properties) const {return m_impl->getAll(properties);}
         const PropertySet* getPropertySet(const char* name, const char* ns="urn:mace:shibboleth:2.0:native:sp:config") const {return m_impl->getPropertySet(name,ns);}
         const DOMElement* getElement() const {return m_impl->getElement();}
@@ -338,7 +338,7 @@ namespace {
                 if (i!=m_storage.end())
                     return i->second;
             }
-            return NULL;
+            return nullptr;
         }
 #endif
 
@@ -362,7 +362,7 @@ namespace {
 
         const Application* getApplication(const char* applicationId) const {
             map::const_iterator i=m_impl->m_appmap.find(applicationId);
-            return (i!=m_impl->m_appmap.end()) ? i->second : NULL;
+            return (i!=m_impl->m_appmap.end()) ? i->second : nullptr;
         }
 
 #ifndef SHIBSP_LITE
@@ -489,11 +489,11 @@ XMLApplication::XMLApplication(
     const XMLApplication* base
     ) : Application(sp), m_base(base),
 #ifndef SHIBSP_LITE
-        m_metadata(NULL), m_trust(NULL),
-        m_attrExtractor(NULL), m_attrFilter(NULL), m_attrResolver(NULL),
-        m_credResolver(NULL),
+        m_metadata(nullptr), m_trust(nullptr),
+        m_attrExtractor(nullptr), m_attrFilter(nullptr), m_attrResolver(nullptr),
+        m_credResolver(nullptr),
 #endif
-        m_acsDefault(NULL), m_sessionInitDefault(NULL), m_artifactResolutionDefault(NULL)
+        m_acsDefault(nullptr), m_sessionInitDefault(nullptr), m_artifactResolutionDefault(nullptr)
 {
 #ifdef _DEBUG
     xmltooling::NDC ndc("XMLApplication");
@@ -502,7 +502,7 @@ XMLApplication::XMLApplication(
 
     try {
         // First load any property sets.
-        load(e,NULL,this);
+        load(e,nullptr,this);
         if (base)
             setParent(base);
 
@@ -549,7 +549,7 @@ XMLApplication::XMLApplication(
                     if (pos)
                         *pos=0;
                     m_remoteUsers.push_back(start);
-                    start = pos ? pos+1 : NULL;
+                    start = pos ? pos+1 : nullptr;
                 }
                 free(dup);
             }
@@ -588,26 +588,26 @@ XMLApplication::XMLApplication(
                     m_unsetHeaders.push_back(pair(m_attributePrefix.first + start, m_attributePrefix.second + transformed));
                     if (prefix.first)
                         m_unsetHeaders.push_back(pair(m_attributePrefix.first + prefix.second + start, transformedprefix + transformed));
-                    start = pos ? pos+1 : NULL;
+                    start = pos ? pos+1 : nullptr;
                 }
                 free(dup);
                 m_unsetHeaders.push_back(pair(m_attributePrefix.first + "Shib-Application-ID", m_attributePrefix.second + "SHIB_APPLICATION_ID"));
             }
         }
 
-        Handler* handler=NULL;
+        Handler* handler=nullptr;
         const PropertySet* sessions = getPropertySet("Sessions");
 
         // Process assertion export handler.
-        pair location = sessions ? sessions->getString("exportLocation") : pair(false,NULL);
+        pair location = sessions ? sessions->getString("exportLocation") : pair(false,nullptr);
         if (location.first) {
             try {
                 DOMElement* exportElement = e->getOwnerDocument()->createElementNS(shibspconstants::SHIB2SPCONFIG_NS,_Handler);
-                exportElement->setAttributeNS(NULL,Location,sessions->getXMLString("exportLocation").second);
+                exportElement->setAttributeNS(nullptr,Location,sessions->getXMLString("exportLocation").second);
                 pair exportACL = sessions->getXMLString("exportACL");
                 if (exportACL.first) {
                     static const XMLCh _acl[] = UNICODE_LITERAL_9(e,x,p,o,r,t,A,C,L);
-                    exportElement->setAttributeNS(NULL,_acl,exportACL.second);
+                    exportElement->setAttributeNS(nullptr,_acl,exportACL.second);
                 }
                 handler = conf.HandlerManager.newPlugin(
                     samlconstants::SAML20_BINDING_URI, pair(exportElement, getId())
@@ -630,13 +630,13 @@ XMLApplication::XMLApplication(
 
         // Process other handlers.
         bool hardACS=false, hardSessionInit=false, hardArt=false;
-        const DOMElement* child = sessions ? XMLHelper::getFirstChildElement(sessions->getElement()) : NULL;
+        const DOMElement* child = sessions ? XMLHelper::getFirstChildElement(sessions->getElement()) : nullptr;
         while (child) {
             try {
                 // A handler is based on the Binding property in conjunction with the element name.
                 // If it's an ACS or SI, also handle index/id mappings and defaulting.
                 if (XMLString::equals(child->getLocalName(),_AssertionConsumerService)) {
-                    auto_ptr_char bindprop(child->getAttributeNS(NULL,Binding));
+                    auto_ptr_char bindprop(child->getAttributeNS(nullptr,Binding));
                     if (!bindprop.get() || !*(bindprop.get())) {
                         log.warn("md:AssertionConsumerService element has no Binding attribute, skipping it...");
                         child = XMLHelper::getNextSiblingElement(child);
@@ -660,7 +660,7 @@ XMLApplication::XMLApplication(
                     }
                 }
                 else if (XMLString::equals(child->getLocalName(),_SessionInitiator)) {
-                    auto_ptr_char type(child->getAttributeNS(NULL,_type));
+                    auto_ptr_char type(child->getAttributeNS(nullptr,_type));
                     if (!type.get() || !*(type.get())) {
                         log.warn("SessionInitiator element has no type attribute, skipping it...");
                         child = XMLHelper::getNextSiblingElement(child);
@@ -684,7 +684,7 @@ XMLApplication::XMLApplication(
                     }
                 }
                 else if (XMLString::equals(child->getLocalName(),_LogoutInitiator)) {
-                    auto_ptr_char type(child->getAttributeNS(NULL,_type));
+                    auto_ptr_char type(child->getAttributeNS(nullptr,_type));
                     if (!type.get() || !*(type.get())) {
                         log.warn("LogoutInitiator element has no type attribute, skipping it...");
                         child = XMLHelper::getNextSiblingElement(child);
@@ -693,7 +693,7 @@ XMLApplication::XMLApplication(
                     handler=conf.LogoutInitiatorManager.newPlugin(type.get(),make_pair(child, getId()));
                 }
                 else if (XMLString::equals(child->getLocalName(),_ArtifactResolutionService)) {
-                    auto_ptr_char bindprop(child->getAttributeNS(NULL,Binding));
+                    auto_ptr_char bindprop(child->getAttributeNS(nullptr,Binding));
                     if (!bindprop.get() || !*(bindprop.get())) {
                         log.warn("md:ArtifactResolutionService element has no Binding attribute, skipping it...");
                         child = XMLHelper::getNextSiblingElement(child);
@@ -714,7 +714,7 @@ XMLApplication::XMLApplication(
                     }
                 }
                 else if (XMLString::equals(child->getLocalName(),_SingleLogoutService)) {
-                    auto_ptr_char bindprop(child->getAttributeNS(NULL,Binding));
+                    auto_ptr_char bindprop(child->getAttributeNS(nullptr,Binding));
                     if (!bindprop.get() || !*(bindprop.get())) {
                         log.warn("md:SingleLogoutService element has no Binding attribute, skipping it...");
                         child = XMLHelper::getNextSiblingElement(child);
@@ -723,7 +723,7 @@ XMLApplication::XMLApplication(
                     handler=conf.SingleLogoutServiceManager.newPlugin(bindprop.get(),make_pair(child, getId()));
                 }
                 else if (XMLString::equals(child->getLocalName(),_ManageNameIDService)) {
-                    auto_ptr_char bindprop(child->getAttributeNS(NULL,Binding));
+                    auto_ptr_char bindprop(child->getAttributeNS(nullptr,Binding));
                     if (!bindprop.get() || !*(bindprop.get())) {
                         log.warn("md:ManageNameIDService element has no Binding attribute, skipping it...");
                         child = XMLHelper::getNextSiblingElement(child);
@@ -732,7 +732,7 @@ XMLApplication::XMLApplication(
                     handler=conf.ManageNameIDServiceManager.newPlugin(bindprop.get(),make_pair(child, getId()));
                 }
                 else {
-                    auto_ptr_char type(child->getAttributeNS(NULL,_type));
+                    auto_ptr_char type(child->getAttributeNS(nullptr,_type));
                     if (!type.get() || !*(type.get())) {
                         log.warn("Handler element has no type attribute, skipping it...");
                         child = XMLHelper::getNextSiblingElement(child);
@@ -762,8 +762,8 @@ XMLApplication::XMLApplication(
         DOMNodeList* nlist=e->getElementsByTagNameNS(shibspconstants::SHIB2SPCONFIG_NS,Notify);
         for (XMLSize_t i=0; nlist && igetLength(); i++) {
             if (nlist->item(i)->getParentNode()->isSameNode(e)) {
-                const XMLCh* channel = static_cast(nlist->item(i))->getAttributeNS(NULL,Channel);
-                auto_ptr_char loc(static_cast(nlist->item(i))->getAttributeNS(NULL,Location));
+                const XMLCh* channel = static_cast(nlist->item(i))->getAttributeNS(nullptr,Channel);
+                auto_ptr_char loc(static_cast(nlist->item(i))->getAttributeNS(nullptr,Location));
                 if (loc.get() && *loc.get()) {
                     if (channel && *channel == chLatin_f)
                         m_frontLogout.push_back(loc.get());
@@ -785,7 +785,7 @@ XMLApplication::XMLApplication(
         if (conf.isEnabled(SPConfig::Metadata)) {
             child = XMLHelper::getFirstChildElement(e,_MetadataProvider);
             if (child) {
-                auto_ptr_char type(child->getAttributeNS(NULL,_type));
+                auto_ptr_char type(child->getAttributeNS(nullptr,_type));
                 log.info("building MetadataProvider of type %s...",type.get());
                 try {
                     auto_ptr mp(samlConf.MetadataProviderManager.newPlugin(type.get(),child));
@@ -801,7 +801,7 @@ XMLApplication::XMLApplication(
         if (conf.isEnabled(SPConfig::Trust)) {
             child = XMLHelper::getFirstChildElement(e,_TrustEngine);
             if (child) {
-                auto_ptr_char type(child->getAttributeNS(NULL,_type));
+                auto_ptr_char type(child->getAttributeNS(nullptr,_type));
                 log.info("building TrustEngine of type %s...",type.get());
                 try {
                     m_trust = xmlConf.TrustEngineManager.newPlugin(type.get(),child);
@@ -815,7 +815,7 @@ XMLApplication::XMLApplication(
         if (conf.isEnabled(SPConfig::AttributeResolution)) {
             child = XMLHelper::getFirstChildElement(e,_AttributeExtractor);
             if (child) {
-                auto_ptr_char type(child->getAttributeNS(NULL,_type));
+                auto_ptr_char type(child->getAttributeNS(nullptr,_type));
                 log.info("building AttributeExtractor of type %s...",type.get());
                 try {
                     m_attrExtractor = conf.AttributeExtractorManager.newPlugin(type.get(),child);
@@ -827,7 +827,7 @@ XMLApplication::XMLApplication(
 
             child = XMLHelper::getFirstChildElement(e,_AttributeFilter);
             if (child) {
-                auto_ptr_char type(child->getAttributeNS(NULL,_type));
+                auto_ptr_char type(child->getAttributeNS(nullptr,_type));
                 log.info("building AttributeFilter of type %s...",type.get());
                 try {
                     m_attrFilter = conf.AttributeFilterManager.newPlugin(type.get(),child);
@@ -839,7 +839,7 @@ XMLApplication::XMLApplication(
 
             child = XMLHelper::getFirstChildElement(e,_AttributeResolver);
             if (child) {
-                auto_ptr_char type(child->getAttributeNS(NULL,_type));
+                auto_ptr_char type(child->getAttributeNS(nullptr,_type));
                 log.info("building AttributeResolver of type %s...",type.get());
                 try {
                     m_attrResolver = conf.AttributeResolverManager.newPlugin(type.get(),child);
@@ -897,7 +897,7 @@ XMLApplication::XMLApplication(
         if (conf.isEnabled(SPConfig::Credentials)) {
             child = XMLHelper::getFirstChildElement(e,_CredentialResolver);
             if (child) {
-                auto_ptr_char type(child->getAttributeNS(NULL,_type));
+                auto_ptr_char type(child->getAttributeNS(nullptr,_type));
                 log.info("building CredentialResolver of type %s...",type.get());
                 try {
                     m_credResolver = xmlConf.CredentialResolverManager.newPlugin(type.get(),child);
@@ -912,9 +912,9 @@ XMLApplication::XMLApplication(
         child = XMLHelper::getFirstChildElement(e,RelyingParty);
         while (child) {
             auto_ptr rp(new DOMPropertySet());
-            rp->load(child,NULL,this);
+            rp->load(child,nullptr,this);
             rp->setParent(this);
-            m_partyMap[child->getAttributeNS(NULL,saml2::Attribute::NAME_ATTRIB_NAME)]=rp.release();
+            m_partyMap[child->getAttributeNS(nullptr,saml2::Attribute::NAME_ATTRIB_NAME)]=rp.release();
             child = XMLHelper::getNextSiblingElement(child,RelyingParty);
         }
 #endif
@@ -955,17 +955,17 @@ void XMLApplication::cleanup()
     for_each(m_partyMap.begin(),m_partyMap.end(),cleanup_pair());
     m_partyMap.clear();
     delete m_credResolver;
-    m_credResolver = NULL;
+    m_credResolver = nullptr;
     delete m_attrResolver;
-    m_attrResolver = NULL;
+    m_attrResolver = nullptr;
     delete m_attrFilter;
-    m_attrFilter = NULL;
+    m_attrFilter = nullptr;
     delete m_attrExtractor;
-    m_attrExtractor = NULL;
+    m_attrExtractor = nullptr;
     delete m_trust;
-    m_trust = NULL;
+    m_trust = nullptr;
     delete m_metadata;
-    m_metadata = NULL;
+    m_metadata = nullptr;
 #endif
 }
 
@@ -1069,7 +1069,7 @@ string XMLApplication::getNotificationURL(const char* resource, bool front, unsi
     // 2  handler   resource    handler
     // 3  resource  resource    handler
 
-    const char* path = NULL;
+    const char* path = nullptr;
 
     // Decide whether to use the handler or the resource for the "protocol"
     const char* prot;
@@ -1152,27 +1152,27 @@ string XMLApplication::getSecureHeader(const SPRequest& request, const char* nam
 const SessionInitiator* XMLApplication::getDefaultSessionInitiator() const
 {
     if (m_sessionInitDefault) return m_sessionInitDefault;
-    return m_base ? m_base->getDefaultSessionInitiator() : NULL;
+    return m_base ? m_base->getDefaultSessionInitiator() : nullptr;
 }
 
 const SessionInitiator* XMLApplication::getSessionInitiatorById(const char* id) const
 {
     map::const_iterator i=m_sessionInitMap.find(id);
     if (i!=m_sessionInitMap.end()) return i->second;
-    return m_base ? m_base->getSessionInitiatorById(id) : NULL;
+    return m_base ? m_base->getSessionInitiatorById(id) : nullptr;
 }
 
 const Handler* XMLApplication::getDefaultAssertionConsumerService() const
 {
     if (m_acsDefault) return m_acsDefault;
-    return m_base ? m_base->getDefaultAssertionConsumerService() : NULL;
+    return m_base ? m_base->getDefaultAssertionConsumerService() : nullptr;
 }
 
 const Handler* XMLApplication::getAssertionConsumerServiceByIndex(unsigned short index) const
 {
     map::const_iterator i=m_acsIndexMap.find(index);
     if (i!=m_acsIndexMap.end()) return i->second;
-    return m_base ? m_base->getAssertionConsumerServiceByIndex(index) : NULL;
+    return m_base ? m_base->getAssertionConsumerServiceByIndex(index) : nullptr;
 }
 
 const vector& XMLApplication::getAssertionConsumerServicesByBinding(const XMLCh* binding) const
@@ -1190,7 +1190,7 @@ const Handler* XMLApplication::getHandler(const char* path) const
     map::const_iterator i=m_handlerMap.find(wrap.substr(0,wrap.find('?')));
     if (i!=m_handlerMap.end())
         return i->second;
-    return m_base ? m_base->getHandler(path) : NULL;
+    return m_base ? m_base->getHandler(path) : nullptr;
 }
 
 void XMLApplication::getHandlers(vector& handlers) const
@@ -1238,7 +1238,7 @@ void XMLConfigImpl::doExtensions(const DOMElement* e, const char* label, Categor
     if (exts) {
         exts=XMLHelper::getFirstChildElement(exts,Library);
         while (exts) {
-            auto_ptr_char path(exts->getAttributeNS(NULL,_path));
+            auto_ptr_char path(exts->getAttributeNS(nullptr,_path));
             try {
                 if (path.get()) {
                     if (!XMLToolingConfig::getConfig().load_library(path.get(),(void*)exts))
@@ -1247,7 +1247,7 @@ void XMLConfigImpl::doExtensions(const DOMElement* e, const char* label, Categor
                 }
             }
             catch (exception& e) {
-                const XMLCh* fatal=exts->getAttributeNS(NULL,_fatal);
+                const XMLCh* fatal=exts->getAttributeNS(nullptr,_fatal);
                 if (fatal && (*fatal==chLatin_t || *fatal==chDigit_1)) {
                     log.fatal("unable to load mandatory %s extension library %s: %s", label, path.get(), e.what());
                     throw;
@@ -1262,7 +1262,7 @@ void XMLConfigImpl::doExtensions(const DOMElement* e, const char* label, Categor
 }
 
 XMLConfigImpl::XMLConfigImpl(const DOMElement* e, bool first, const XMLConfig* outer, Category& log)
-    : m_requestMapper(NULL), m_outer(outer), m_document(NULL)
+    : m_requestMapper(nullptr), m_outer(outer), m_document(nullptr)
 {
 #ifdef _DEBUG
     xmltooling::NDC ndc("XMLConfigImpl");
@@ -1279,13 +1279,13 @@ XMLConfigImpl::XMLConfigImpl(const DOMElement* e, bool first, const XMLConfig* o
 
         // Initialize log4cpp manually in order to redirect log messages as soon as possible.
         if (conf.isEnabled(SPConfig::Logging)) {
-            const XMLCh* logconf=NULL;
+            const XMLCh* logconf=nullptr;
             if (conf.isEnabled(SPConfig::OutOfProcess))
-                logconf=SHAR->getAttributeNS(NULL,logger);
+                logconf=SHAR->getAttributeNS(nullptr,logger);
             else if (conf.isEnabled(SPConfig::InProcess))
-                logconf=SHIRE->getAttributeNS(NULL,logger);
+                logconf=SHIRE->getAttributeNS(nullptr,logger);
             if (!logconf || !*logconf)
-                logconf=e->getAttributeNS(NULL,logger);
+                logconf=e->getAttributeNS(nullptr,logger);
             if (logconf && *logconf) {
                 auto_ptr_char logpath(logconf);
                 log.debug("loading new logging configuration from (%s), check log destination for status of configuration",logpath.get());
@@ -1314,7 +1314,7 @@ XMLConfigImpl::XMLConfigImpl(const DOMElement* e, bool first, const XMLConfig* o
 #endif
 
         // First load any property sets.
-        load(e,NULL,this);
+        load(e,nullptr,this);
 
         const DOMElement* child;
         string plugtype;
@@ -1364,7 +1364,7 @@ XMLConfigImpl::XMLConfigImpl(const DOMElement* e, bool first, const XMLConfig* o
                     else {
                         child=XMLHelper::getFirstChildElement(e,Listener);
                         if (child) {
-                            auto_ptr_char type(child->getAttributeNS(NULL,_type));
+                            auto_ptr_char type(child->getAttributeNS(nullptr,_type));
                             if (type.get())
                                 plugtype=type.get();
                         }
@@ -1395,8 +1395,8 @@ XMLConfigImpl::XMLConfigImpl(const DOMElement* e, bool first, const XMLConfig* o
                     // First build any StorageServices.
                     child=XMLHelper::getFirstChildElement(e,_StorageService);
                     while (child) {
-                        auto_ptr_char id(child->getAttributeNS(NULL,_id));
-                        auto_ptr_char type(child->getAttributeNS(NULL,_type));
+                        auto_ptr_char id(child->getAttributeNS(nullptr,_id));
+                        auto_ptr_char type(child->getAttributeNS(nullptr,_type));
                         try {
                             log.info("building StorageService (%s) of type %s...", id.get(), type.get());
                             m_outer->m_storage[id.get()] = xmlConf.StorageServiceManager.newPlugin(type.get(),child);
@@ -1408,10 +1408,10 @@ XMLConfigImpl::XMLConfigImpl(const DOMElement* e, bool first, const XMLConfig* o
                     }
 
                     // Replay cache.
-                    StorageService* replaySS=NULL;
+                    StorageService* replaySS=nullptr;
                     child=XMLHelper::getFirstChildElement(e,_ReplayCache);
                     if (child) {
-                        auto_ptr_char ssid(child->getAttributeNS(NULL,_StorageService));
+                        auto_ptr_char ssid(child->getAttributeNS(nullptr,_StorageService));
                         if (ssid.get() && *ssid.get()) {
                             if (m_outer->m_storage.count(ssid.get()))
                                 replaySS = m_outer->m_storage[ssid.get()];
@@ -1429,13 +1429,13 @@ XMLConfigImpl::XMLConfigImpl(const DOMElement* e, bool first, const XMLConfig* o
                     // ArtifactMap
                     child=XMLHelper::getFirstChildElement(e,_ArtifactMap);
                     if (child) {
-                        auto_ptr_char ssid(child->getAttributeNS(NULL,_StorageService));
+                        auto_ptr_char ssid(child->getAttributeNS(nullptr,_StorageService));
                         if (ssid.get() && *ssid.get() && m_outer->m_storage.count(ssid.get())) {
                             log.info("building ArtifactMap on top of StorageService (%s)...", ssid.get());
                             samlConf.setArtifactMap(new ArtifactMap(child, m_outer->m_storage[ssid.get()]));
                         }
                     }
-                    if (samlConf.getArtifactMap()==NULL) {
+                    if (samlConf.getArtifactMap()==nullptr) {
                         log.info("building in-memory ArtifactMap...");
                         samlConf.setArtifactMap(new ArtifactMap(child));
                     }
@@ -1443,7 +1443,7 @@ XMLConfigImpl::XMLConfigImpl(const DOMElement* e, bool first, const XMLConfig* o
                 }
                 child=XMLHelper::getFirstChildElement(e,_SessionCache);
                 if (child) {
-                    auto_ptr_char type(child->getAttributeNS(NULL,_type));
+                    auto_ptr_char type(child->getAttributeNS(nullptr,_type));
                     log.info("building SessionCache of type %s...",type.get());
                     m_outer->m_sessionCache=conf.SessionCacheManager.newPlugin(type.get(), child);
                 }
@@ -1456,7 +1456,7 @@ XMLConfigImpl::XMLConfigImpl(const DOMElement* e, bool first, const XMLConfig* o
 #ifndef SHIBSP_LITE
             child = XMLHelper::getLastChildElement(e, SecurityPolicies);
             if (child) {
-                const XMLCh* algs = NULL;
+                const XMLCh* algs = nullptr;
                 const DOMElement* alglist = XMLHelper::getLastChildElement(child, AlgorithmBlacklist);
                 if (alglist && alglist->hasChildNodes()) {
                     algs = alglist->getFirstChild()->getNodeValue();
@@ -1490,7 +1490,7 @@ XMLConfigImpl::XMLConfigImpl(const DOMElement* e, bool first, const XMLConfig* o
         if (conf.isEnabled(SPConfig::RequestMapping)) {
             child=XMLHelper::getFirstChildElement(e,_RequestMapper);
             if (child) {
-                auto_ptr_char type(child->getAttributeNS(NULL,_type));
+                auto_ptr_char type(child->getAttributeNS(nullptr,_type));
                 log.info("building RequestMapper of type %s...",type.get());
                 m_requestMapper=conf.RequestMapperManager.newPlugin(type.get(),child);
             }
@@ -1507,17 +1507,17 @@ XMLConfigImpl::XMLConfigImpl(const DOMElement* e, bool first, const XMLConfig* o
             PolicyNodeFilter filter;
             child = XMLHelper::getFirstChildElement(child,Policy);
             while (child) {
-                auto_ptr_char id(child->getAttributeNS(NULL,_id));
+                auto_ptr_char id(child->getAttributeNS(nullptr,_id));
                 pair< PropertySet*,vector >& rules = m_policyMap[id.get()];
-                rules.first = NULL;
+                rules.first = nullptr;
                 auto_ptr settings(new DOMPropertySet());
-                settings->load(child, NULL, &filter);
+                settings->load(child, nullptr, &filter);
                 rules.first = settings.release();
 
                 // Process PolicyRule elements.
                 const DOMElement* rule = XMLHelper::getFirstChildElement(child,PolicyRule);
                 while (rule) {
-                    auto_ptr_char type(rule->getAttributeNS(NULL,_type));
+                    auto_ptr_char type(rule->getAttributeNS(nullptr,_type));
                     try {
                         rules.second.push_back(samlConf.SecurityPolicyRuleManager.newPlugin(type.get(),rule));
                     }
@@ -1532,7 +1532,7 @@ XMLConfigImpl::XMLConfigImpl(const DOMElement* e, bool first, const XMLConfig* o
                     log.warn("detected legacy Policy configuration, please convert to new PolicyRule syntax");
                     rule = XMLHelper::getFirstChildElement(child,Rule);
                     while (rule) {
-                        auto_ptr_char type(rule->getAttributeNS(NULL,_type));
+                        auto_ptr_char type(rule->getAttributeNS(nullptr,_type));
                         try {
                             rules.second.push_back(samlConf.SecurityPolicyRuleManager.newPlugin(type.get(),rule));
                         }
@@ -1544,7 +1544,7 @@ XMLConfigImpl::XMLConfigImpl(const DOMElement* e, bool first, const XMLConfig* o
 
                     // Manually add a basic Conditions rule.
                     log.info("installing a default Conditions rule in policy (%s) for compatibility with legacy configuration", id.get());
-                    rules.second.push_back(samlConf.SecurityPolicyRuleManager.newPlugin(CONDITIONS_POLICY_RULE, NULL));
+                    rules.second.push_back(samlConf.SecurityPolicyRuleManager.newPlugin(CONDITIONS_POLICY_RULE, nullptr));
                 }
 
                 child = XMLHelper::getNextSiblingElement(child,Policy);
@@ -1555,8 +1555,8 @@ XMLConfigImpl::XMLConfigImpl(const DOMElement* e, bool first, const XMLConfig* o
         child = XMLHelper::getLastChildElement(e,TransportOption);
         while (child) {
             if (child->hasChildNodes()) {
-                auto_ptr_char provider(child->getAttributeNS(NULL,_provider));
-                auto_ptr_char option(child->getAttributeNS(NULL,_option));
+                auto_ptr_char provider(child->getAttributeNS(nullptr,_provider));
+                auto_ptr_char option(child->getAttributeNS(nullptr,_option));
                 auto_ptr_char value(child->getFirstChild()->getNodeValue());
                 if (provider.get() && *provider.get() && option.get() && *option.get() && value.get() && *value.get()) {
                     m_transportOptions.push_back(make_pair(string(provider.get()), make_pair(string(option.get()), string(value.get()))));
@@ -1612,10 +1612,10 @@ void XMLConfigImpl::cleanup()
     m_policyMap.clear();
 #endif
     delete m_requestMapper;
-    m_requestMapper = NULL;
+    m_requestMapper = nullptr;
     if (m_document)
         m_document->release();
-    m_document = NULL;
+    m_document = nullptr;
 }
 
 #ifndef SHIBSP_LITE
@@ -1642,7 +1642,7 @@ void XMLConfig::receive(DDF& in, ostream& out)
         }
 
         // Repack for return to caller.
-        DDF ret=DDF(NULL).unsafe_string(relayState.c_str());
+        DDF ret=DDF(nullptr).unsafe_string(relayState.c_str());
         DDFJanitor jret(ret);
         out << ret;
     }
@@ -1657,7 +1657,7 @@ void XMLConfig::receive(DDF& in, ostream& out)
         if (storage) {
             SAMLConfig::getConfig().generateRandomBytes(rsKey,20);
             rsKey = SAMLArtifact::toHex(rsKey);
-            storage->createString("RelayState", rsKey.c_str(), value, time(NULL) + 600);
+            storage->createString("RelayState", rsKey.c_str(), value, time(nullptr) + 600);
         }
         else {
             Category::getInstance(SHIBSP_LOGCAT".ServiceProvider").error(
@@ -1666,7 +1666,7 @@ void XMLConfig::receive(DDF& in, ostream& out)
         }
 
         // Repack for return to caller.
-        DDF ret=DDF(NULL).string(rsKey.c_str());
+        DDF ret=DDF(nullptr).string(rsKey.c_str());
         DDFJanitor jret(ret);
         out << ret;
     }
@@ -1691,7 +1691,7 @@ void XMLConfig::receive(DDF& in, ostream& out)
         // If the data's empty, we'll send nothing back.
         // If not, we don't need to round trip it, just send back the serialized DDF list.
         if (postData.empty()) {
-            DDF ret(NULL);
+            DDF ret(nullptr);
             DDFJanitor jret(ret);
             out << ret;
         }
@@ -1711,7 +1711,7 @@ void XMLConfig::receive(DDF& in, ostream& out)
             rsKey = SAMLArtifact::toHex(rsKey);
             ostringstream params;
             params << in["parameters"];
-            storage->createString("PostData", rsKey.c_str(), params.str().c_str(), time(NULL) + 600);
+            storage->createString("PostData", rsKey.c_str(), params.str().c_str(), time(nullptr) + 600);
         }
         else {
             Category::getInstance(SHIBSP_LOGCAT".ServiceProvider").error(
@@ -1720,7 +1720,7 @@ void XMLConfig::receive(DDF& in, ostream& out)
         }
 
         // Repack for return to caller.
-        DDF ret=DDF(NULL).string(rsKey.c_str());
+        DDF ret=DDF(nullptr).string(rsKey.c_str());
         DDFJanitor jret(ret);
         out << ret;
     }
@@ -1733,9 +1733,9 @@ pair XMLConfig::background_load()
     pair raw = ReloadableXMLFile::load();
 
     // If we own it, wrap it.
-    XercesJanitor docjanitor(raw.first ? raw.second->getOwnerDocument() : NULL);
+    XercesJanitor docjanitor(raw.first ? raw.second->getOwnerDocument() : nullptr);
 
-    XMLConfigImpl* impl = new XMLConfigImpl(raw.second, (m_impl==NULL), this, m_log);
+    XMLConfigImpl* impl = new XMLConfigImpl(raw.second, (m_impl==nullptr), this, m_log);
 
     // If we held the document, transfer it to the impl. If we didn't, it's a no-op.
     impl->setDocument(docjanitor.release());
@@ -1747,5 +1747,5 @@ pair XMLConfig::background_load()
     delete m_impl;
     m_impl = impl;
 
-    return make_pair(false,(DOMElement*)NULL);
+    return make_pair(false,(DOMElement*)nullptr);
 }
diff --git a/shibsp/metadata/DynamicMetadataProvider.cpp b/shibsp/metadata/DynamicMetadataProvider.cpp
index 32c9886..8b346f0 100644
--- a/shibsp/metadata/DynamicMetadataProvider.cpp
+++ b/shibsp/metadata/DynamicMetadataProvider.cpp
@@ -61,16 +61,16 @@ namespace shibsp {
         Lockable* lock() {return this;}
         void unlock() {}
 
-        const Credential* resolve(const CredentialCriteria* criteria=NULL) const {return NULL;}
+        const Credential* resolve(const CredentialCriteria* criteria=nullptr) const {return nullptr;}
         vector::size_type resolve(
-            vector& results, const CredentialCriteria* criteria=NULL
+            vector& results, const CredentialCriteria* criteria=nullptr
             ) const {return 0;}
     };
 
     class SHIBSP_DLLLOCAL DynamicMetadataProvider : public saml2md::DynamicMetadataProvider
     {
     public:
-        DynamicMetadataProvider(const xercesc::DOMElement* e=NULL);
+        DynamicMetadataProvider(const xercesc::DOMElement* e=nullptr);
 
         virtual ~DynamicMetadataProvider() {
             delete m_trust;
@@ -102,32 +102,32 @@ namespace shibsp {
 };
 
 DynamicMetadataProvider::DynamicMetadataProvider(const DOMElement* e)
-    : saml2md::DynamicMetadataProvider(e), m_verifyHost(true), m_ignoreTransport(false), m_encoded(true), m_trust(NULL)
+    : saml2md::DynamicMetadataProvider(e), m_verifyHost(true), m_ignoreTransport(false), m_encoded(true), m_trust(nullptr)
 {
-    const XMLCh* flag = e ? e->getAttributeNS(NULL, verifyHost) : NULL;
+    const XMLCh* flag = e ? e->getAttributeNS(nullptr, verifyHost) : nullptr;
     if (flag && (*flag == chLatin_f || *flag == chDigit_0))
         m_verifyHost = false;
-    flag = e ? e->getAttributeNS(NULL, ignoreTransport) : NULL;
+    flag = e ? e->getAttributeNS(nullptr, ignoreTransport) : nullptr;
     if (flag && (*flag == chLatin_t || *flag == chDigit_1)) {
         m_ignoreTransport = true;
         return;
     }
 
-    const DOMElement* child = e ? XMLHelper::getFirstChildElement(e, Subst) : NULL;
+    const DOMElement* child = e ? XMLHelper::getFirstChildElement(e, Subst) : nullptr;
     if (child && child->hasChildNodes()) {
         auto_ptr_char s(child->getFirstChild()->getNodeValue());
         if (s.get() && *s.get()) {
             m_subst = s.get();
-            flag = child->getAttributeNS(NULL, encoded);
+            flag = child->getAttributeNS(nullptr, encoded);
             if (flag && (*flag == chLatin_f || *flag == chDigit_0))
                 m_encoded = false;
         }
     }
 
     if (m_subst.empty()) {
-        child = e ? XMLHelper::getFirstChildElement(e, Regex) : NULL;
-        if (child && child->hasChildNodes() && child->hasAttributeNS(NULL, match)) {
-            auto_ptr_char m(child->getAttributeNS(NULL, match));
+        child = e ? XMLHelper::getFirstChildElement(e, Regex) : nullptr;
+        if (child && child->hasChildNodes() && child->hasAttributeNS(nullptr, match)) {
+            auto_ptr_char m(child->getAttributeNS(nullptr, match));
             auto_ptr_char repl(child->getFirstChild()->getNodeValue());
             if (m.get() && *m.get() && repl.get() && *repl.get()) {
                 m_match = m.get();
@@ -136,8 +136,8 @@ DynamicMetadataProvider::DynamicMetadataProvider(const DOMElement* e)
         }
     }
 
-    child = e ? XMLHelper::getFirstChildElement(e, _TrustEngine) : NULL;
-    auto_ptr_char t2(child ? child->getAttributeNS(NULL,type) : NULL);
+    child = e ? XMLHelper::getFirstChildElement(e, _TrustEngine) : nullptr;
+    auto_ptr_char t2(child ? child->getAttributeNS(nullptr,type) : nullptr);
     if (t2.get()) {
         TrustEngine* trust = XMLToolingConfig::getConfig().TrustEngineManager.newPlugin(t2.get(), child);
         if (!(m_trust = dynamic_cast(trust))) {
@@ -218,7 +218,7 @@ saml2md::EntityDescriptor* DynamicMetadataProvider::resolve(const saml2md::Metad
     if (!pch)
         throw IOException("location was not a URL.");
     string scheme(addr.m_endpoint, pch-addr.m_endpoint);
-    SOAPTransport* transport=NULL;
+    SOAPTransport* transport=nullptr;
     try {
         transport = XMLToolingConfig::getConfig().SOAPTransportManager.newPlugin(scheme.c_str(), addr);
     }
@@ -234,8 +234,8 @@ saml2md::EntityDescriptor* DynamicMetadataProvider::resolve(const saml2md::Metad
     if (m_trust && !transport->setTrustEngine(m_trust, &dcr))
         throw IOException("Unable to install X509TrustEngine into metadata resolver.");
 
-    Locker credlocker(NULL, false);
-    CredentialResolver* credResolver = NULL;
+    Locker credlocker(nullptr, false);
+    CredentialResolver* credResolver = nullptr;
     pair authType=relyingParty->getString("authType");
     if (!authType.first || !strcmp(authType.second,"TLS")) {
         credResolver = mpc->application.getCredentialResolver();
@@ -303,11 +303,11 @@ saml2md::EntityDescriptor* DynamicMetadataProvider::resolve(const saml2md::Metad
     }
 
     try {
-        // Use a NULL stream to trigger a body-less "GET" operation.
+        // Use a nullptr stream to trigger a body-less "GET" operation.
         transport->send();
         istream& msg = transport->receive();
 
-        DOMDocument* doc=NULL;
+        DOMDocument* doc=nullptr;
         StreamInputSource src(msg, "DynamicMetadataProvider");
         Wrapper4InputSource dsrc(&src,false);
         if (m_validate)
diff --git a/shibsp/metadata/MetadataExtImpl.cpp b/shibsp/metadata/MetadataExtImpl.cpp
index 7ae11c2..8811fb5 100644
--- a/shibsp/metadata/MetadataExtImpl.cpp
+++ b/shibsp/metadata/MetadataExtImpl.cpp
@@ -1,5 +1,5 @@
 /*
- *  Copyright 2001-2009 Internet2
+ *  Copyright 2001-2010 Internet2
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,7 +17,7 @@
 /**
  * MetadataExtImpl.cpp
  * 
- * Implementation classes for Shibboleth metadata extensions schema
+ * Implementation classes for Shibboleth metadata extensions schema.
  */
 
 #include "internal.h"
@@ -76,11 +76,11 @@ namespace shibsp {
 
     protected:
         void marshallAttributes(DOMElement* domElement) const {
-            MARSHALL_BOOLEAN_ATTRIB(Regexp,REGEXP,NULL);
+            MARSHALL_BOOLEAN_ATTRIB(Regexp,REGEXP,nullptr);
         }
 
         void processAttribute(const DOMAttr* attribute) {
-            PROC_BOOLEAN_ATTRIB(Regexp,REGEXP,NULL);
+            PROC_BOOLEAN_ATTRIB(Regexp,REGEXP,nullptr);
             AbstractXMLObjectUnmarshaller::processAttribute(attribute);
         }
     };
@@ -93,7 +93,7 @@ namespace shibsp {
             public AbstractXMLObjectUnmarshaller
     {
         void init() {
-            m_VerifyDepth=NULL;
+            m_VerifyDepth=nullptr;
         }
     public:
         virtual ~KeyAuthorityImpl() {
@@ -132,7 +132,7 @@ namespace shibsp {
 
     protected:
         void marshallAttributes(DOMElement* domElement) const {
-            MARSHALL_INTEGER_ATTRIB(VerifyDepth,VERIFYDEPTH,NULL);
+            MARSHALL_INTEGER_ATTRIB(VerifyDepth,VERIFYDEPTH,nullptr);
             marshallExtensionAttributes(domElement);
         }
 
diff --git a/shibsp/metadata/MetadataProviderCriteria.h b/shibsp/metadata/MetadataProviderCriteria.h
index d1a0d98..25498b6 100644
--- a/shibsp/metadata/MetadataProviderCriteria.h
+++ b/shibsp/metadata/MetadataProviderCriteria.h
@@ -1,5 +1,5 @@
 /*
- *  Copyright 2001-2009 Internet2
+ *  Copyright 2001-2010 Internet2
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -53,7 +53,7 @@ namespace shibsp {
          * @param valid true iff stale metadata should be ignored
          */
         MetadataProviderCriteria(
-            const Application& app, const XMLCh* id, const xmltooling::QName* q=NULL, const XMLCh* prot=NULL, bool valid=true
+            const Application& app, const XMLCh* id, const xmltooling::QName* q=nullptr, const XMLCh* prot=nullptr, bool valid=true
             );
 
         /**
@@ -66,7 +66,7 @@ namespace shibsp {
          * @param valid true iff stale metadata should be ignored
          */
         MetadataProviderCriteria(
-            const Application& app, const char* id, const xmltooling::QName* q=NULL, const XMLCh* prot=NULL, bool valid=true
+            const Application& app, const char* id, const xmltooling::QName* q=nullptr, const XMLCh* prot=nullptr, bool valid=true
             );
 
         /**
@@ -79,7 +79,7 @@ namespace shibsp {
          * @param valid true iff stale metadata should be ignored
          */
         MetadataProviderCriteria(
-            const Application& app, const opensaml::SAMLArtifact* a, const xmltooling::QName* q=NULL, const XMLCh* prot=NULL, bool valid=true
+            const Application& app, const opensaml::SAMLArtifact* a, const xmltooling::QName* q=nullptr, const XMLCh* prot=nullptr, bool valid=true
             );
 
         ~MetadataProviderCriteria();
diff --git a/shibsp/remoting/ListenerService.h b/shibsp/remoting/ListenerService.h
index 60b5b7a..0590681 100644
--- a/shibsp/remoting/ListenerService.h
+++ b/shibsp/remoting/ListenerService.h
@@ -1,5 +1,5 @@
 /*
- *  Copyright 2001-2009 Internet2
+ *  Copyright 2001-2010 Internet2
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -107,13 +107,13 @@ namespace shibsp {
          * @param restore   service to "restore" registration for
          * @return  true iff the current service was still registered
          */
-        virtual bool unregListener(const char* address, Remoted* current, Remoted* restore=NULL);
+        virtual bool unregListener(const char* address, Remoted* current, Remoted* restore=nullptr);
 
         /**
          * Returns current service registered at an address, if any.
          *
          * @param address message address to access
-         * @return  registered service, or NULL
+         * @return  registered service, or nullptr
          */
         virtual Remoted* lookup(const char* address) const;
 
diff --git a/shibsp/remoting/ddf.h b/shibsp/remoting/ddf.h
index abcc045..6a51604 100644
--- a/shibsp/remoting/ddf.h
+++ b/shibsp/remoting/ddf.h
@@ -1,5 +1,5 @@
 /*
- *  Copyright 2001-2009 Internet2
+ *  Copyright 2001-2010 Internet2
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -113,7 +113,7 @@ namespace shibsp {
         DDF getmember(const char* path) const;
     
         // debugging
-        void dump(FILE* f=NULL, int indent=0) const;
+        void dump(FILE* f=nullptr, int indent=0) const;
     
         // serialization functions need private access
         friend SHIBSP_API std::ostream& operator<<(std::ostream& os, const DDF& obj);
diff --git a/shibsp/remoting/impl/ListenerService.cpp b/shibsp/remoting/impl/ListenerService.cpp
index 814db96..f0df7a4 100644
--- a/shibsp/remoting/impl/ListenerService.cpp
+++ b/shibsp/remoting/impl/ListenerService.cpp
@@ -1,5 +1,5 @@
 /*
- *  Copyright 2001-2009 Internet2
+ *  Copyright 2001-2010 Internet2
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -66,7 +66,7 @@ ListenerService::~ListenerService()
 
 Remoted* ListenerService::regListener(const char* address, Remoted* listener)
 {
-    Remoted* ret=NULL;
+    Remoted* ret=nullptr;
     map::const_iterator i=m_listenerMap.find(address);
     if (i!=m_listenerMap.end())
         ret=i->second;
@@ -92,7 +92,7 @@ bool ListenerService::unregListener(const char* address, Remoted* current, Remot
 Remoted* ListenerService::lookup(const char *address) const
 {
     map::const_iterator i=m_listenerMap.find(address);
-    return (i==m_listenerMap.end()) ? NULL : i->second;
+    return (i==m_listenerMap.end()) ? nullptr : i->second;
 }
 
 void ListenerService::receive(DDF &in, ostream& out)
@@ -100,7 +100,7 @@ void ListenerService::receive(DDF &in, ostream& out)
     if (!in.name())
         throw ListenerException("Incoming message with no destination address rejected.");
     else if (!strcmp("ping",in.name())) {
-        DDF outmsg=DDF(NULL).integer(in.integer() + 1);
+        DDF outmsg=DDF(nullptr).integer(in.integer() + 1);
         DDFJanitor jan(outmsg);
         out << outmsg;
     }
diff --git a/shibsp/remoting/impl/SocketListener.cpp b/shibsp/remoting/impl/SocketListener.cpp
index 50aa95b..41383f1 100644
--- a/shibsp/remoting/impl/SocketListener.cpp
+++ b/shibsp/remoting/impl/SocketListener.cpp
@@ -159,8 +159,8 @@ void SocketPool::put(SocketListener::ShibSocket s)
 }
 
 SocketListener::SocketListener(const DOMElement* e)
-    : m_catchAll(false), log(&Category::getInstance(SHIBSP_LOGCAT".Listener")), m_socketpool(NULL),
-        m_shutdown(NULL), m_child_lock(NULL), m_child_wait(NULL), m_stackSize(0), m_socket((ShibSocket)0)
+    : m_catchAll(false), log(&Category::getInstance(SHIBSP_LOGCAT".Listener")), m_socketpool(nullptr),
+        m_shutdown(nullptr), m_child_lock(nullptr), m_child_wait(nullptr), m_stackSize(0), m_socket((ShibSocket)0)
 {
     // Are we a client?
     if (SPConfig::getConfig().isEnabled(SPConfig::InProcess)) {
@@ -172,7 +172,7 @@ SocketListener::SocketListener(const DOMElement* e)
         m_child_wait = CondWait::create();
 
         static const XMLCh stackSize[] = UNICODE_LITERAL_9(s,t,a,c,k,S,i,z,e);
-        const XMLCh* attr = e ? e->getAttributeNS(NULL, stackSize) : NULL;
+        const XMLCh* attr = e ? e->getAttributeNS(nullptr, stackSize) : nullptr;
         if (attr && *attr)
             m_stackSize = XMLString::parseInt(attr) * 1024;
     }
@@ -367,7 +367,7 @@ DDF SocketListener::send(const DDF& in)
     if (out.isstring() && out.name() && !strcmp(out.name(),"exception")) {
         // Reconstitute exception object.
         DDFJanitor jout(out);
-        XMLToolingException* except=NULL;
+        XMLToolingException* except=nullptr;
         try {
             except=XMLToolingException::fromString(out.string());
             log->error("remoted message returned an error: %s", except->what());
@@ -419,11 +419,11 @@ void* server_thread_fn(void* arg)
 
     // Now we can clean up and exit the thread.
     delete child;
-    return NULL;
+    return nullptr;
 }
 
 ServerThread::ServerThread(SocketListener::ShibSocket& s, SocketListener* listener, unsigned long id)
-    : m_sock(s), m_child(NULL), m_listener(listener)
+    : m_sock(s), m_child(nullptr), m_listener(listener)
 {
 
     ostringstream buf;
diff --git a/shibsp/remoting/impl/TCPListener.cpp b/shibsp/remoting/impl/TCPListener.cpp
index 05f2f90..4630ef3 100644
--- a/shibsp/remoting/impl/TCPListener.cpp
+++ b/shibsp/remoting/impl/TCPListener.cpp
@@ -1,5 +1,5 @@
 /*
- *  Copyright 2001-2009 Internet2
+ *  Copyright 2001-2010 Internet2
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,7 +17,7 @@
 /**
  * TCPListener.cpp
  *
- * TCP-based SocketListener implementation
+ * TCP-based SocketListener implementation.
  */
 
 #include "internal.h"
@@ -87,20 +87,20 @@ namespace shibsp {
 TCPListener::TCPListener(const DOMElement* e) : SocketListener(e), m_address("127.0.0.1"), m_port(12345)
 {
     // We're stateless, but we need to load the configuration.
-    const XMLCh* tag=e->getAttributeNS(NULL,address);
+    const XMLCh* tag=e->getAttributeNS(nullptr,address);
     if (tag && *tag) {
         auto_ptr_char a(tag);
         m_address=a.get();
     }
 
-    tag=e->getAttributeNS(NULL,port);
+    tag=e->getAttributeNS(nullptr,port);
     if (tag && *tag) {
         m_port=XMLString::parseInt(tag);
         if (m_port==0)
             m_port=12345;
     }
 
-    tag=e->getAttributeNS(NULL,acl);
+    tag=e->getAttributeNS(nullptr,acl);
     if (tag && *tag) {
         auto_ptr_char temp(tag);
         string sockacl=temp.get();
diff --git a/shibsp/remoting/impl/UnixListener.cpp b/shibsp/remoting/impl/UnixListener.cpp
index 1180e27..19777a8 100644
--- a/shibsp/remoting/impl/UnixListener.cpp
+++ b/shibsp/remoting/impl/UnixListener.cpp
@@ -1,5 +1,5 @@
 /*
- *  Copyright 2001-2007 Internet2
+ *  Copyright 2001-2010 Internet2
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,7 +17,7 @@
 /**
  * UnixListener.cpp
  * 
- * Unix Domain-based SocketListener implementation
+ * Unix Domain-based SocketListener implementation.
  */
 
 #include "internal.h"
@@ -83,7 +83,7 @@ namespace shibsp {
 
 UnixListener::UnixListener(const DOMElement* e) : SocketListener(e), m_address("/var/run/shar-socket"), m_bound(false)
 {
-    const XMLCh* tag=e->getAttributeNS(NULL,address);
+    const XMLCh* tag=e->getAttributeNS(nullptr,address);
     if (tag && *tag) {
         auto_ptr_char a(tag);
         m_address=a.get();
@@ -152,7 +152,7 @@ bool UnixListener::close(ShibSocket& s) const
 
 bool UnixListener::accept(ShibSocket& listener, ShibSocket& s) const
 {
-    s=::accept(listener,NULL,NULL);
+    s=::accept(listener,nullptr,nullptr);
     if (s < 0)
         return log_error();
     return true;
diff --git a/shibsp/remoting/impl/ddf.cpp b/shibsp/remoting/impl/ddf.cpp
index 81122cf..c5f2d78 100644
--- a/shibsp/remoting/impl/ddf.cpp
+++ b/shibsp/remoting/impl/ddf.cpp
@@ -1,5 +1,5 @@
 /*
- *  Copyright 2001-2009 Internet2
+ *  Copyright 2001-2010 Internet2
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -49,7 +49,7 @@ size_t ddf_strlen(const char* s)
 
 char* ddf_strdup(const char* s)
 {
-    return (s && *s) ? strdup(s) : NULL;
+    return (s && *s) ? strdup(s) : nullptr;
 }
 
 #define MAX_NAME_LEN 255
@@ -63,14 +63,14 @@ char* ddf_strdup(const char* s)
 char* ddf_token(const char** path, char* name)
 {
     *name=0;
-    if (*path==NULL || **path==0)
+    if (*path==nullptr || **path==0)
         return name;
 
     const char* temp=strchr(*path,'.');
-    if (temp==NULL) {
+    if (temp==nullptr) {
         strncpy(name,*path,MAX_NAME_LEN);
         name[MAX_NAME_LEN]=0;
-        *path=NULL;
+        *path=nullptr;
     }
     else if (temp>*path) {
         strncpy(name,*path,temp-*path);
@@ -85,7 +85,7 @@ char* ddf_token(const char** path, char* name)
 // body implementation
 
 struct shibsp::ddf_body_t {
-    ddf_body_t() : name(NULL), parent(NULL), next(NULL), prev(NULL), type(DDF_EMPTY) {}
+    ddf_body_t() : name(nullptr), parent(nullptr), next(nullptr), prev(nullptr), type(DDF_EMPTY) {}
 
     char* name;                     // name of node
     ddf_body_t* parent;             // parent node, if any
@@ -119,7 +119,7 @@ struct shibsp::ddf_body_t {
 
 // library implementation
 
-DDF::DDF() : m_handle(NULL)
+DDF::DDF() : m_handle(nullptr)
 {
 }
 
@@ -159,15 +159,15 @@ DDF::DDF(const char* n, void* val)
 
 DDF& DDF::destroy()
 {
-    remove().empty().name(NULL);
+    remove().empty().name(nullptr);
     delete m_handle;
-    m_handle=NULL;
+    m_handle=nullptr;
     return *this;
 }
 
 DDF DDF::copy() const
 {
-    if (m_handle==NULL)
+    if (m_handle==nullptr)
         return DDF();
 
     switch (m_handle->type) {
@@ -195,7 +195,7 @@ DDF DDF::copy() const
                 temp.m_handle=child;
                 DDF temp2=temp.copy();
                 copy.add(temp2);
-                if (copy.m_handle==NULL)
+                if (copy.m_handle==nullptr)
                     return copy;
                 if (m_handle->value.children.current==child)
                     copy.m_handle->value.children.current=copy.m_handle->value.children.last;
@@ -209,7 +209,7 @@ DDF DDF::copy() const
 
 const char* DDF::name() const
 {
-    return (m_handle) ? m_handle->name : NULL;
+    return (m_handle) ? m_handle->name : nullptr;
 }
 
 DDF& DDF::name(const char* name)
@@ -227,7 +227,7 @@ DDF& DDF::name(const char* name)
                 destroy();
         }
         else
-            m_handle->name=NULL;
+            m_handle->name=nullptr;
     }
     return *this;
 }
@@ -274,7 +274,7 @@ bool DDF::ispointer() const
 
 const char* DDF::string() const
 {
-    return isstring() ? m_handle->value.string : NULL;
+    return isstring() ? m_handle->value.string : nullptr;
 }
 
 long DDF::integer() const
@@ -317,7 +317,7 @@ double DDF::floating() const
 
 void* DDF::pointer() const
 {
-    return ispointer() ? m_handle->value.pointer : NULL;
+    return ispointer() ? m_handle->value.pointer : nullptr;
 }
 
 size_t DDF::strlen() const
@@ -327,8 +327,8 @@ size_t DDF::strlen() const
 
 bool DDF::operator==(const char* s) const
 {
-    if (string()==NULL || s==NULL)
-        return (string()==NULL && s==NULL);
+    if (string()==nullptr || s==nullptr)
+        return (string()==nullptr && s==nullptr);
     else
         return (::strcmp(string(),s)==0);
 }
@@ -435,9 +435,9 @@ DDF& DDF::structure()
 {
     if (empty().m_handle) {
         m_handle->type=ddf_body_t::DDF_STRUCT;
-        m_handle->value.children.first=NULL;
-        m_handle->value.children.last=NULL;
-        m_handle->value.children.current=NULL;
+        m_handle->value.children.first=nullptr;
+        m_handle->value.children.last=nullptr;
+        m_handle->value.children.current=nullptr;
         m_handle->value.children.count=0;
     }
     return *this;
@@ -447,9 +447,9 @@ DDF& DDF::list()
 {
     if (empty().m_handle) {
         m_handle->type=ddf_body_t::DDF_LIST;
-        m_handle->value.children.first=NULL;
-        m_handle->value.children.last=NULL;
-        m_handle->value.children.current=NULL;
+        m_handle->value.children.first=nullptr;
+        m_handle->value.children.last=nullptr;
+        m_handle->value.children.current=nullptr;
         m_handle->value.children.count=0;
     }
     return *this;
@@ -555,9 +555,9 @@ DDF& DDF::remove()
         m_handle->parent->value.children.current=m_handle->prev;
 
     m_handle->parent->value.children.count--;
-    m_handle->parent=NULL;
-    m_handle->next=NULL;
-    m_handle->prev=NULL;
+    m_handle->parent=nullptr;
+    m_handle->next=nullptr;
+    m_handle->prev=nullptr;
     return *this;
 }
 
@@ -565,7 +565,7 @@ DDF DDF::parent() const
 {
     DDF p;
 
-    p.m_handle=(m_handle ? m_handle->parent : NULL);
+    p.m_handle=(m_handle ? m_handle->parent : nullptr);
     return p;
 }
 
@@ -672,7 +672,7 @@ DDF DDF::getmember(const char* path) const
     if (*name == 0)
         return current;
     else if (*name == '[') {
-        unsigned long i = strtoul(name+1, NULL, 10);
+        unsigned long i = strtoul(name+1, nullptr, 10);
         if (islist() && i < m_handle->value.children.count)
             current=operator[](i);
         else if (i == 0)
@@ -728,7 +728,7 @@ void DDF::dump(FILE* f, int indent) const
                     putc('"',f);
                 }
                 else
-                    fprintf(f,"NULL");
+                    fprintf(f,"nullptr");
                 break;
 
             case ddf_body_t::DDF_INT:
@@ -791,7 +791,7 @@ void DDF::dump(FILE* f, int indent) const
                 if (m_handle->value.pointer)
                     fprintf(f,"%p",m_handle->value.pointer);
                 else
-                    fprintf(f,"NULL");
+                    fprintf(f,"nullptr");
                 break;
 
             default:
@@ -799,7 +799,7 @@ void DDF::dump(FILE* f, int indent) const
         }
     }
     else
-        fprintf(f,"NULL");
+        fprintf(f,"nullptr");
     fprintf(f,";\n");
 }
 
@@ -989,8 +989,8 @@ static const XMLCh _unsafe[] =  UNICODE_LITERAL_6(u,n,s,a,f,e);
 
 DDF deserialize(DOMElement* root, bool lowercase)
 {
-    DDF obj(NULL);
-    auto_ptr_char name_val(root->getAttributeNS(NULL, _name));
+    DDF obj(nullptr);
+    auto_ptr_char name_val(root->getAttributeNS(nullptr, _name));
     if (name_val.get() && *name_val.get()) {
         if (lowercase)
             for (char* pch=const_cast(name_val.get()); *pch=tolower(*pch); pch++);
@@ -1006,7 +1006,7 @@ DDF deserialize(DOMElement* root, bool lowercase)
     if (XMLString::equals(tag,_string)) {
         DOMNode* child=root->getFirstChild();
         if (child && child->getNodeType()==DOMNode::TEXT_NODE) {
-            const XMLCh* unsafe = root->getAttributeNS(NULL, _unsafe);
+            const XMLCh* unsafe = root->getAttributeNS(nullptr, _unsafe);
             if (unsafe && *unsafe==chDigit_1) {
                 // If it's unsafe, it's not UTF-8 data, so we have to convert to ASCII and decode it.
                 char* encoded = XMLString::transcode(child->getNodeValue());
diff --git a/shibsp/security/PKIXTrustEngine.cpp b/shibsp/security/PKIXTrustEngine.cpp
index 8c4bea3..39cc232 100644
--- a/shibsp/security/PKIXTrustEngine.cpp
+++ b/shibsp/security/PKIXTrustEngine.cpp
@@ -1,5 +1,5 @@
 /*
- *  Copyright 2001-2009 Internet2
+ *  Copyright 2001-2010 Internet2
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,7 +17,7 @@
 /**
  * PKIXTrustEngine.cpp
  * 
- * Shibboleth-specific PKIX-validation TrustEngine
+ * Shibboleth-specific PKIX-validation TrustEngine.
  */
 
 #include "internal.h"
@@ -44,7 +44,7 @@ namespace shibsp {
     class SHIBSP_DLLLOCAL PKIXTrustEngine : public AbstractPKIXTrustEngine, public ObservableMetadataProvider::Observer
     {
     public:
-        PKIXTrustEngine(const DOMElement* e=NULL) : AbstractPKIXTrustEngine(e), m_credLock(RWLock::create()) {
+        PKIXTrustEngine(const DOMElement* e=nullptr) : AbstractPKIXTrustEngine(e), m_credLock(RWLock::create()) {
         }
         virtual ~PKIXTrustEngine() {
             for (map::iterator i=m_credentialMap.begin(); i!=m_credentialMap.end(); ++i) {
@@ -56,7 +56,7 @@ namespace shibsp {
         }
         
         AbstractPKIXTrustEngine::PKIXValidationInfoIterator* getPKIXValidationInfoIterator(
-            const CredentialResolver& pkixSource, CredentialCriteria* criteria=NULL
+            const CredentialResolver& pkixSource, CredentialCriteria* criteria=nullptr
             ) const;
 
         void onEvent(const ObservableMetadataProvider& metadata) const {
@@ -148,7 +148,7 @@ AbstractPKIXTrustEngine::PKIXValidationInfoIterator* PKIXTrustEngine::getPKIXVal
 
 MetadataPKIXIterator::MetadataPKIXIterator(
     const PKIXTrustEngine& engine, const MetadataProvider& pkixSource, MetadataCredentialCriteria& criteria
-    ) : m_caching(false), m_engine(engine), m_obj(criteria.getRole().getParent()), m_extBlock(NULL), m_current(NULL)
+    ) : m_caching(false), m_engine(engine), m_obj(criteria.getRole().getParent()), m_extBlock(nullptr), m_current(nullptr)
 {
     // If we can't hook the metadata for changes, then we can't do any caching and the rest of this is academic.
     const ObservableMetadataProvider* observable = dynamic_cast(&pkixSource);
@@ -201,8 +201,8 @@ bool MetadataPKIXIterator::next()
         // If we get here, we hit the end of this Extensions block.
         // Climb a level, if possible.
         m_obj = m_obj->getParent();
-        m_current = NULL;
-        m_extBlock = NULL;
+        m_current = nullptr;
+        m_extBlock = nullptr;
     }
 
     // If we get here, we try and find an Extensions block.
diff --git a/shibsp/security/SecurityPolicy.h b/shibsp/security/SecurityPolicy.h
index 0357e82..fdf7a22 100644
--- a/shibsp/security/SecurityPolicy.h
+++ b/shibsp/security/SecurityPolicy.h
@@ -1,5 +1,5 @@
 /*
- *  Copyright 2001-2009 Internet2
+ *  Copyright 2001-2010 Internet2
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -44,7 +44,7 @@ namespace shibsp {
          * @param validate          true iff XML parsing should be done with validation
          * @param policyId          identifies policy rules to auto-attach, defaults to the application's set
          */
-        SecurityPolicy(const Application& application, const xmltooling::QName* role=NULL, bool validate=true, const char* policyId=NULL);
+        SecurityPolicy(const Application& application, const xmltooling::QName* role=nullptr, bool validate=true, const char* policyId=nullptr);
 
         virtual ~SecurityPolicy();
 
diff --git a/shibsp/shibsp-lite.vcxproj b/shibsp/shibsp-lite.vcxproj
new file mode 100644
index 0000000..3942708
--- /dev/null
+++ b/shibsp/shibsp-lite.vcxproj
@@ -0,0 +1,288 @@
+
+
+  
+    
+      Debug
+      Win32
+    
+    
+      Debug
+      x64
+    
+    
+      Release
+      Win32
+    
+    
+      Release
+      x64
+    
+  
+  
+    {81F0F7A6-DC36-46EF-957F-F9E81D4403F7}
+    shibsp-lite
+    Win32Proj
+  
+  
+  
+    DynamicLibrary
+    MultiByte
+    true
+  
+  
+    DynamicLibrary
+    MultiByte
+  
+  
+    DynamicLibrary
+    MultiByte
+    true
+  
+  
+    DynamicLibrary
+    MultiByte
+  
+  
+  
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+  
+    <_ProjectFileVersion>10.0.30319.1
+    $(SolutionDir)$(Configuration)\
+    $(ProjectName)-$(Configuration)\
+    true
+    $(SolutionDir)$(Platform)\$(Configuration)\
+    $(Platform)\$(ProjectName)-$(Configuration)\
+    true
+    $(SolutionDir)$(Configuration)\
+    $(ProjectName)-$(Configuration)\
+    false
+    $(SolutionDir)$(Platform)\$(Configuration)\
+    $(Platform)\$(ProjectName)-$(Configuration)\
+    false
+    AllRules.ruleset
+    
+    
+    AllRules.ruleset
+    
+    
+    AllRules.ruleset
+    
+    
+    AllRules.ruleset
+    
+    
+    $(ProjectName)1_4
+    $(ProjectName)1_4
+    $(ProjectName)1_4D
+    $(ProjectName)1_4D
+  
+  
+    
+      Disabled
+      .;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;WANT_TCP_SHAR;SHIBSP_LITE;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDebugDLL
+      true
+      Level3
+      EditAndContinue
+    
+    
+      _UNICODE;UNICODE;SHIBSP_LITE;_DEBUG;%(PreprocessorDefinitions)
+    
+    
+      log4shib1D.lib;xerces-c_3D.lib;xmltooling-lite1D.lib;wsock32.lib;%(AdditionalDependencies)
+      ..\..\cpp-xmltooling\$(Configuration);%(AdditionalLibraryDirectories)
+      true
+      Windows
+      
+      
+      $(TargetDir)$(ProjectName)1D.lib
+    
+  
+  
+    
+      X64
+    
+    
+      Disabled
+      .;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;WANT_TCP_SHAR;SHIBSP_LITE;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDebugDLL
+      true
+      Level3
+      ProgramDatabase
+    
+    
+      _UNICODE;UNICODE;SHIBSP_LITE;_DEBUG;%(PreprocessorDefinitions)
+    
+    
+      log4shib1D.lib;xerces-c_3D.lib;xmltooling-lite1D.lib;wsock32.lib;%(AdditionalDependencies)
+      ..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)
+      true
+      Windows
+      
+      
+      $(TargetDir)$(ProjectName)1D.lib
+    
+  
+  
+    
+      .;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;WANT_TCP_SHAR;SHIBSP_LITE;%(PreprocessorDefinitions)
+      Level3
+    
+    
+      _UNICODE;UNICODE;SHIBSP_LITE;%(PreprocessorDefinitions)
+    
+    
+      log4shib1.lib;xerces-c_3.lib;xmltooling-lite1.lib;wsock32.lib;%(AdditionalDependencies)
+      ..\..\cpp-xmltooling\$(Configuration);%(AdditionalLibraryDirectories)
+      Windows
+      true
+      true
+      
+      
+      $(TargetDir)$(ProjectName)1.lib
+    
+  
+  
+    
+      X64
+    
+    
+      .;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;WANT_TCP_SHAR;SHIBSP_LITE;%(PreprocessorDefinitions)
+      Level3
+    
+    
+      _UNICODE;UNICODE;SHIBSP_LITE;%(PreprocessorDefinitions)
+    
+    
+      log4shib1.lib;xerces-c_3.lib;xmltooling-lite1.lib;wsock32.lib;%(AdditionalDependencies)
+      ..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)
+      true
+      Windows
+      true
+      true
+      
+      
+      $(TargetDir)$(ProjectName)1.lib
+    
+  
+  
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+  
+  
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+  
+  
+    
+  
+  
+    
+    
+  
+  
+  
+  
+
\ No newline at end of file
diff --git a/shibsp/shibsp-lite.vcxproj.filters b/shibsp/shibsp-lite.vcxproj.filters
new file mode 100644
index 0000000..9293c01
--- /dev/null
+++ b/shibsp/shibsp-lite.vcxproj.filters
@@ -0,0 +1,330 @@
+
+
+  
+    
+      {4FC737F2-C7A5-4376-A066-2A32D752A2FF}
+      cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+    
+    
+      {729ea3af-cb77-4897-b55c-b18a4c66817f}
+    
+    
+      {7b456f03-9c40-438c-8b69-c1676ec904f6}
+    
+    
+      {623deb32-df2f-4bad-abcd-96d2275eaafd}
+    
+    
+      {92af54d1-b5c1-4391-9b8a-d7ee57cae671}
+    
+    
+      {354c1fc9-211b-48f9-99c1-27f5065a08fc}
+    
+    
+      {dcb5bf8b-b08d-4bb4-9025-52a624c06312}
+    
+    
+      {02b1ace5-7717-4406-9643-901632993d12}
+    
+    
+      {b0e40290-ca47-49fb-8484-99d3fb5287f2}
+    
+    
+      {93995380-89BD-4b04-88EB-625FBE52EBFC}
+      h;hpp;hxx;hm;inl;inc;xsd
+    
+    
+      {51edefcb-98b4-4be2-8a21-69e248ce62cc}
+    
+    
+      {14c2631a-de71-4a3a-a761-b2a38519bd77}
+    
+    
+      {4adb84e6-4b87-43b7-a7a9-bbb903ff8bb5}
+    
+    
+      {242efec0-e402-4083-8719-9e0eb247d24a}
+    
+    
+      {810cab8c-6d86-43af-8ec7-e4cfa6a42ff9}
+    
+    
+      {67DA6AB6-F800-4c08-8B7A-83BB121AAD02}
+      rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav
+    
+  
+  
+    
+      Source Files
+    
+    
+      Source Files
+    
+    
+      Source Files
+    
+    
+      Source Files
+    
+    
+      Source Files\util
+    
+    
+      Source Files\util
+    
+    
+      Source Files\util
+    
+    
+      Source Files\util
+    
+    
+      Source Files\remoting\impl
+    
+    
+      Source Files\remoting\impl
+    
+    
+      Source Files\remoting\impl
+    
+    
+      Source Files\remoting\impl
+    
+    
+      Source Files\impl
+    
+    
+      Source Files\impl
+    
+    
+      Source Files\impl
+    
+    
+      Source Files\impl
+    
+    
+      Source Files\impl
+    
+    
+      Source Files\attribute
+    
+    
+      Source Files\attribute
+    
+    
+      Source Files\attribute
+    
+    
+      Source Files\attribute
+    
+    
+      Source Files\attribute
+    
+    
+      Source Files\attribute
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\lite
+    
+    
+      Source Files\lite
+    
+  
+  
+    
+      Source Files\remoting\impl
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files\util
+    
+    
+      Header Files\util
+    
+    
+      Header Files\util
+    
+    
+      Header Files\util
+    
+    
+      Header Files\util
+    
+    
+      Header Files\remoting
+    
+    
+      Header Files\remoting
+    
+    
+      Header Files\attribute
+    
+    
+      Header Files\attribute
+    
+    
+      Header Files\attribute
+    
+    
+      Header Files\attribute
+    
+    
+      Header Files\attribute
+    
+    
+      Header Files\attribute
+    
+    
+      Header Files\handler
+    
+    
+      Header Files\handler
+    
+    
+      Header Files\handler
+    
+    
+      Header Files\handler
+    
+    
+      Header Files\handler
+    
+    
+      Header Files\handler
+    
+    
+      Header Files\lite
+    
+    
+      Header Files\lite
+    
+  
+  
+    
+      Resource Files
+    
+  
+  
+    
+    
+  
+
\ No newline at end of file
diff --git a/shibsp/shibsp.vcxproj b/shibsp/shibsp.vcxproj
new file mode 100644
index 0000000..990b70f
--- /dev/null
+++ b/shibsp/shibsp.vcxproj
@@ -0,0 +1,338 @@
+
+
+  
+    
+      Debug
+      Win32
+    
+    
+      Debug
+      x64
+    
+    
+      Release
+      Win32
+    
+    
+      Release
+      x64
+    
+  
+  
+    {81F0F7A6-DC36-46EF-957F-F9E81D4403F6}
+    shibsp
+    Win32Proj
+  
+  
+  
+    DynamicLibrary
+    MultiByte
+    true
+  
+  
+    DynamicLibrary
+    MultiByte
+  
+  
+    DynamicLibrary
+    MultiByte
+    true
+  
+  
+    DynamicLibrary
+    MultiByte
+  
+  
+  
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+  
+    <_ProjectFileVersion>10.0.30319.1
+    $(SolutionDir)$(Configuration)\
+    $(Configuration)\
+    true
+    $(SolutionDir)$(Platform)\$(Configuration)\
+    $(Platform)\$(Configuration)\
+    true
+    $(SolutionDir)$(Configuration)\
+    $(Configuration)\
+    false
+    $(SolutionDir)$(Platform)\$(Configuration)\
+    $(Platform)\$(Configuration)\
+    false
+    AllRules.ruleset
+    
+    
+    AllRules.ruleset
+    
+    
+    AllRules.ruleset
+    
+    
+    AllRules.ruleset
+    
+    
+    $(ProjectName)1_4D
+    $(ProjectName)1_4D
+    $(ProjectName)1_4
+    $(ProjectName)1_4
+  
+  
+    
+      Disabled
+      .;..;..\..\cpp-opensaml2;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;WANT_TCP_SHAR;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDebugDLL
+      true
+      Level3
+      EditAndContinue
+    
+    
+      _UNICODE;UNICODE;_DEBUG;%(PreprocessorDefinitions)
+    
+    
+      log4shib1D.lib;xerces-c_3D.lib;xsec_1D.lib;saml2D.lib;xmltooling1D.lib;wsock32.lib;%(AdditionalDependencies)
+      ..\..\cpp-opensaml2\$(Configuration);..\..\cpp-xmltooling\$(Configuration);%(AdditionalLibraryDirectories)
+      true
+      Windows
+      
+      
+      $(TargetDir)$(ProjectName)1D.lib
+    
+  
+  
+    
+      X64
+    
+    
+      Disabled
+      .;..;..\..\cpp-opensaml2;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;WANT_TCP_SHAR;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDebugDLL
+      true
+      Level3
+      ProgramDatabase
+    
+    
+      _UNICODE;UNICODE;_DEBUG;%(PreprocessorDefinitions)
+    
+    
+      log4shib1D.lib;xerces-c_3D.lib;xsec_1D.lib;saml2D.lib;xmltooling1D.lib;wsock32.lib;%(AdditionalDependencies)
+      ..\..\cpp-opensaml2\$(Platform)\$(Configuration);..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)
+      true
+      Windows
+      
+      
+      $(TargetDir)$(ProjectName)1D.lib
+    
+  
+  
+    
+      .;..;..\..\cpp-opensaml2;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;WANT_TCP_SHAR;%(PreprocessorDefinitions)
+      Level3
+    
+    
+      log4shib1.lib;xerces-c_3.lib;xsec_1.lib;saml2.lib;xmltooling1.lib;wsock32.lib;%(AdditionalDependencies)
+      ..\..\cpp-opensaml2\$(Configuration);..\..\cpp-xmltooling\$(Configuration);%(AdditionalLibraryDirectories)
+      Windows
+      true
+      true
+      
+      
+      $(TargetDir)$(ProjectName)1.lib
+    
+  
+  
+    
+      X64
+    
+    
+      .;..;..\..\cpp-opensaml2;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;WANT_TCP_SHAR;%(PreprocessorDefinitions)
+      Level3
+    
+    
+      log4shib1.lib;xerces-c_3.lib;xsec_1.lib;saml2.lib;xmltooling1.lib;wsock32.lib;%(AdditionalDependencies)
+      ..\..\cpp-opensaml2\$(Platform)\$(Configuration);..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)
+      true
+      Windows
+      true
+      true
+      
+      
+      $(TargetDir)$(ProjectName)1.lib
+    
+  
+  
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+  
+  
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+  
+  
+    
+  
+  
+    
+    
+  
+  
+  
+  
+
\ No newline at end of file
diff --git a/shibsp/shibsp.vcxproj.filters b/shibsp/shibsp.vcxproj.filters
new file mode 100644
index 0000000..0c89b89
--- /dev/null
+++ b/shibsp/shibsp.vcxproj.filters
@@ -0,0 +1,531 @@
+
+
+  
+    
+      {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+      cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+    
+    
+      {f7a309f6-07d1-40c7-9f64-bf3fcd3b51ad}
+    
+    
+      {89058d6e-5dc6-4464-89ae-4b9b0b7ca1fc}
+    
+    
+      {48a6ad05-3636-4f2a-821a-908cd6a6f38c}
+    
+    
+      {201f4b10-df25-487b-b345-07e3e8dcb725}
+    
+    
+      {369a0f3d-8063-437a-9562-3845d3e4b49b}
+    
+    
+      {41d82bec-c25d-4cab-a15f-754f338f7ca2}
+    
+    
+      {d71b535e-d381-4c91-b6c8-cdf3b17d6f90}
+    
+    
+      {60cebd87-179e-4fca-8837-13aa1900aaad}
+    
+    
+      {b329e6c6-afb7-4979-b52f-71b91ead3ffc}
+    
+    
+      {c7ffdbc2-c0a8-4eb0-8a15-aba6f60955a7}
+    
+    
+      {23310ff9-ddd8-46cd-ad92-325166dac240}
+    
+    
+      {084ae0b6-d51e-4e60-a3f1-8341f2a5f324}
+    
+    
+      {66bd1384-c499-4cb8-8079-4bf8a4adc8fc}
+    
+    
+      {cd97c469-f562-4710-a2e1-4fc30e476c18}
+    
+    
+      {9e449f86-94ac-4ec6-aa44-26effcc9c5b5}
+    
+    
+      {93995380-89BD-4b04-88EB-625FBE52EBFB}
+      h;hpp;hxx;hm;inl;inc;xsd
+    
+    
+      {ec709790-2a20-4ab1-afbc-9c1a70cd1426}
+    
+    
+      {6d782306-386a-4bdb-9d34-8f40afc5f5fd}
+    
+    
+      {92a56f33-88c5-4663-b33a-47a9c66a5a02}
+    
+    
+      {cb5ac1c9-4ec1-40ad-8caf-9f307735452c}
+    
+    
+      {a403b7f1-6320-4000-92c1-04780c6db4e4}
+    
+    
+      {e993fd93-ce33-4276-a3d3-663e8accf759}
+    
+    
+      {faf404c0-29a2-4a95-ba99-82bd4570e350}
+    
+    
+      {23e9fed1-5ecf-4558-9c5e-0ccf09f1f953}
+    
+    
+      {a9cc5780-b115-430f-b156-ca4fa5276f63}
+    
+    
+      {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+      rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav
+    
+  
+  
+    
+      Source Files
+    
+    
+      Source Files
+    
+    
+      Source Files
+    
+    
+      Source Files
+    
+    
+      Source Files\util
+    
+    
+      Source Files\util
+    
+    
+      Source Files\util
+    
+    
+      Source Files\util
+    
+    
+      Source Files\security
+    
+    
+      Source Files\security
+    
+    
+      Source Files\metadata
+    
+    
+      Source Files\metadata
+    
+    
+      Source Files\metadata
+    
+    
+      Source Files\metadata
+    
+    
+      Source Files\remoting\impl
+    
+    
+      Source Files\remoting\impl
+    
+    
+      Source Files\remoting\impl
+    
+    
+      Source Files\remoting\impl
+    
+    
+      Source Files\impl
+    
+    
+      Source Files\impl
+    
+    
+      Source Files\impl
+    
+    
+      Source Files\impl
+    
+    
+      Source Files\impl
+    
+    
+      Source Files\attribute
+    
+    
+      Source Files\attribute
+    
+    
+      Source Files\attribute
+    
+    
+      Source Files\attribute
+    
+    
+      Source Files\attribute
+    
+    
+      Source Files\attribute
+    
+    
+      Source Files\attribute
+    
+    
+      Source Files\attribute
+    
+    
+      Source Files\attribute
+    
+    
+      Source Files\attribute
+    
+    
+      Source Files\attribute
+    
+    
+      Source Files\attribute
+    
+    
+      Source Files\attribute
+    
+    
+      Source Files\attribute\resolver\impl
+    
+    
+      Source Files\attribute\resolver\impl
+    
+    
+      Source Files\attribute\resolver\impl
+    
+    
+      Source Files\attribute\resolver\impl
+    
+    
+      Source Files\attribute\resolver\impl
+    
+    
+      Source Files\attribute\resolver\impl
+    
+    
+      Source Files\attribute\resolver\impl
+    
+    
+      Source Files\attribute\filtering\impl
+    
+    
+      Source Files\attribute\filtering\impl
+    
+    
+      Source Files\attribute\filtering\impl
+    
+    
+      Source Files\attribute\filtering\impl
+    
+    
+      Source Files\attribute\filtering\impl
+    
+    
+      Source Files\attribute\filtering\impl
+    
+    
+      Source Files\attribute\filtering\impl
+    
+    
+      Source Files\attribute\filtering\impl
+    
+    
+      Source Files\attribute\filtering\impl
+    
+    
+      Source Files\attribute\filtering\impl
+    
+    
+      Source Files\attribute\filtering\impl
+    
+    
+      Source Files\attribute\filtering\impl
+    
+    
+      Source Files\attribute\filtering\impl
+    
+    
+      Source Files\attribute\filtering\impl
+    
+    
+      Source Files\attribute\filtering\impl
+    
+    
+      Source Files\attribute\filtering\impl
+    
+    
+      Source Files\attribute\filtering\impl
+    
+    
+      Source Files\attribute\filtering\impl
+    
+    
+      Source Files\attribute\filtering\impl
+    
+    
+      Source Files\attribute\filtering\impl
+    
+    
+      Source Files\attribute\filtering\impl
+    
+    
+      Source Files\attribute\filtering\impl
+    
+    
+      Source Files\attribute\filtering\impl
+    
+    
+      Source Files\binding\impl
+    
+    
+      Source Files\binding\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+    
+      Source Files\handler\impl
+    
+  
+  
+    
+      Source Files\remoting\impl
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files\util
+    
+    
+      Header Files\util
+    
+    
+      Header Files\util
+    
+    
+      Header Files\util
+    
+    
+      Header Files\util
+    
+    
+      Header Files\security
+    
+    
+      Header Files\security
+    
+    
+      Header Files\remoting
+    
+    
+      Header Files\remoting
+    
+    
+      Header Files\attribute
+    
+    
+      Header Files\attribute
+    
+    
+      Header Files\attribute
+    
+    
+      Header Files\attribute
+    
+    
+      Header Files\attribute
+    
+    
+      Header Files\attribute
+    
+    
+      Header Files\attribute
+    
+    
+      Header Files\attribute\resolver
+    
+    
+      Header Files\attribute\resolver
+    
+    
+      Header Files\attribute\resolver
+    
+    
+      Header Files\attribute\filtering
+    
+    
+      Header Files\attribute\filtering
+    
+    
+      Header Files\attribute\filtering
+    
+    
+      Header Files\attribute\filtering
+    
+    
+      Header Files\attribute\filtering
+    
+    
+      Header Files\binding
+    
+    
+      Header Files\binding
+    
+    
+      Header Files\handler
+    
+    
+      Header Files\handler
+    
+    
+      Header Files\handler
+    
+    
+      Header Files\handler
+    
+    
+      Header Files\handler
+    
+    
+      Header Files\handler
+    
+    
+      Header Files\metadata
+    
+    
+      Header Files\metadata
+    
+  
+  
+    
+      Resource Files
+    
+  
+  
+    
+    
+  
+
\ No newline at end of file
diff --git a/shibsp/util/CGIParser.cpp b/shibsp/util/CGIParser.cpp
index 0314896..fdc63a9 100644
--- a/shibsp/util/CGIParser.cpp
+++ b/shibsp/util/CGIParser.cpp
@@ -1,5 +1,5 @@
 /*
- *  Copyright 2001-2007 Internet2
+ *  Copyright 2001-2010 Internet2
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,7 +17,7 @@
 /**
  * CGIParser.cpp
  * 
- * CGI GET/POST parameter parsing
+ * CGI GET/POST parameter parsing.
  */
 
 #include "internal.h"
@@ -34,7 +34,7 @@ using namespace std;
 
 CGIParser::CGIParser(const HTTPRequest& request)
 {
-    const char* pch=NULL;
+    const char* pch=nullptr;
     if (!strcmp(request.getMethod(),"POST"))
         pch=request.getRequestBody();
     else
diff --git a/shibsp/util/CGIParser.h b/shibsp/util/CGIParser.h
index 66d133b..d9b437d 100644
--- a/shibsp/util/CGIParser.h
+++ b/shibsp/util/CGIParser.h
@@ -1,5 +1,5 @@
 /*
- *  Copyright 2001-2009 Internet2
+ *  Copyright 2001-2010 Internet2
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,7 +17,7 @@
 /**
  * @file shibsp/util/CGIParser.h
  * 
- * CGI GET/POST parameter parsing
+ * CGI GET/POST parameter parsing.
  */
 
 #ifndef __shibsp_cgi_h__
@@ -61,7 +61,7 @@ namespace shibsp {
         /**
          * Returns a pair of bounded iterators around the values of a parameter.
          * 
-         * @param name  name of parameter, or NULL to return all parameters
+         * @param name  name of parameter, or nullptr to return all parameters
          * @return  a pair of multimap iterators surrounding the matching value(s)
          */
         std::pair getParameters(const char* name) const;
diff --git a/shibsp/util/DOMPropertySet.cpp b/shibsp/util/DOMPropertySet.cpp
index 0a5dadd..12155fc 100644
--- a/shibsp/util/DOMPropertySet.cpp
+++ b/shibsp/util/DOMPropertySet.cpp
@@ -1,5 +1,5 @@
 /*
- *  Copyright 2001-2009 Internet2
+ *  Copyright 2001-2010 Internet2
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -40,7 +40,7 @@ PropertySet::~PropertySet()
 {
 }
 
-DOMPropertySet::DOMPropertySet() : m_parent(NULL), m_root(NULL)
+DOMPropertySet::DOMPropertySet() : m_parent(nullptr), m_root(nullptr)
 {
 }
 
@@ -173,7 +173,7 @@ pair DOMPropertySet::getBool(const char* name, const char* ns) const
 
 pair DOMPropertySet::getString(const char* name, const char* ns) const
 {
-    pair ret(false,NULL);
+    pair ret(false,nullptr);
     map >::const_iterator i;
 
     if (ns)
@@ -185,7 +185,7 @@ pair DOMPropertySet::getString(const char* name, const char* n
         return pair(true,i->second.first);
     else if (m_parent)
         return m_parent->getString(name,ns);
-    return pair(false,NULL);
+    return pair(false,nullptr);
 }
 
 pair DOMPropertySet::getXMLString(const char* name, const char* ns) const
@@ -201,7 +201,7 @@ pair DOMPropertySet::getXMLString(const char* name, const cha
         return make_pair(true,i->second.second);
     else if (m_parent)
         return m_parent->getXMLString(name,ns);
-    return pair(false,NULL);
+    return pair(false,nullptr);
 }
 
 pair DOMPropertySet::getUnsignedInt(const char* name, const char* ns) const
@@ -214,7 +214,7 @@ pair DOMPropertySet::getUnsignedInt(const char* name, const c
         i=m_map.find(name);
 
     if (i!=m_map.end())
-        return pair(true,strtol(i->second.first,NULL,10));
+        return pair(true,strtol(i->second.first,nullptr,10));
     else if (m_parent)
         return m_parent->getUnsignedInt(name,ns);
     return pair(false,0);
@@ -253,5 +253,5 @@ const PropertySet* DOMPropertySet::getPropertySet(const char* name, const char*
     else
         i=m_nested.find(name);
 
-    return (i!=m_nested.end()) ? i->second : (m_parent ? m_parent->getPropertySet(name,ns) : NULL);
+    return (i!=m_nested.end()) ? i->second : (m_parent ? m_parent->getPropertySet(name,ns) : nullptr);
 }
diff --git a/shibsp/util/DOMPropertySet.h b/shibsp/util/DOMPropertySet.h
index a42294b..24e11fc 100644
--- a/shibsp/util/DOMPropertySet.h
+++ b/shibsp/util/DOMPropertySet.h
@@ -1,5 +1,5 @@
 /*
- *  Copyright 2001-2009 Internet2
+ *  Copyright 2001-2010 Internet2
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -41,11 +41,11 @@ namespace shibsp {
 
         const PropertySet* getParent() const;
         void setParent(const PropertySet* parent);
-        std::pair getBool(const char* name, const char* ns=NULL) const;
-        std::pair getString(const char* name, const char* ns=NULL) const;
-        std::pair getXMLString(const char* name, const char* ns=NULL) const;
-        std::pair getUnsignedInt(const char* name, const char* ns=NULL) const;
-        std::pair getInt(const char* name, const char* ns=NULL) const;
+        std::pair getBool(const char* name, const char* ns=nullptr) const;
+        std::pair getString(const char* name, const char* ns=nullptr) const;
+        std::pair getXMLString(const char* name, const char* ns=nullptr) const;
+        std::pair getUnsignedInt(const char* name, const char* ns=nullptr) const;
+        std::pair getInt(const char* name, const char* ns=nullptr) const;
         void getAll(std::map& properties) const;
         const PropertySet* getPropertySet(const char* name, const char* ns=shibspconstants::ASCII_SHIB2SPCONFIG_NS) const;
         const xercesc::DOMElement* getElement() const;
@@ -60,9 +60,9 @@ namespace shibsp {
          */
         void load(
             const xercesc::DOMElement* e,
-            xmltooling::logging::Category* log=NULL,
-            xercesc::DOMNodeFilter* filter=NULL,
-            const std::map* remapper=NULL
+            xmltooling::logging::Category* log=nullptr,
+            xercesc::DOMNodeFilter* filter=nullptr,
+            const std::map* remapper=nullptr
             );
 
     private:
diff --git a/shibsp/util/PropertySet.h b/shibsp/util/PropertySet.h
index 98c1091..f7d36cf 100644
--- a/shibsp/util/PropertySet.h
+++ b/shibsp/util/PropertySet.h
@@ -1,5 +1,5 @@
 /*
- *  Copyright 2001-2009 Internet2
+ *  Copyright 2001-2010 Internet2
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -45,7 +45,7 @@ namespace shibsp {
         /**
          * Returns parent of this PropertySet, if any.
          *
-         * @return the parent object, or NULL
+         * @return the parent object, or nullptr
          */
         virtual const PropertySet* getParent() const=0;
 
@@ -60,46 +60,46 @@ namespace shibsp {
          * Returns a boolean-valued property.
          * 
          * @param name  property name
-         * @param ns    property namespace, or NULL
-         * @return a pair consisting of a NULL indicator and the property value iff the indicator is true
+         * @param ns    property namespace, or nullptr
+         * @return a pair consisting of a nullptr indicator and the property value iff the indicator is true
          */
-        virtual std::pair getBool(const char* name, const char* ns=NULL) const=0;
+        virtual std::pair getBool(const char* name, const char* ns=nullptr) const=0;
 
         /**
          * Returns a string-valued property.
          * 
          * @param name  property name
-         * @param ns    property namespace, or NULL
-         * @return a pair consisting of a NULL indicator and the property value iff the indicator is true
+         * @param ns    property namespace, or nullptr
+         * @return a pair consisting of a nullptr indicator and the property value iff the indicator is true
          */
-        virtual std::pair getString(const char* name, const char* ns=NULL) const=0;
+        virtual std::pair getString(const char* name, const char* ns=nullptr) const=0;
 
         /**
          * Returns a Unicode string-valued property.
          * 
          * @param name  property name
-         * @param ns    property namespace, or NULL
-         * @return a pair consisting of a NULL indicator and the property value iff the indicator is true
+         * @param ns    property namespace, or nullptr
+         * @return a pair consisting of a nullptr indicator and the property value iff the indicator is true
          */
-        virtual std::pair getXMLString(const char* name, const char* ns=NULL) const=0;
+        virtual std::pair getXMLString(const char* name, const char* ns=nullptr) const=0;
 
         /**
          * Returns an unsigned integer-valued property.
          * 
          * @param name  property name
-         * @param ns    property namespace, or NULL
-         * @return a pair consisting of a NULL indicator and the property value iff the indicator is true
+         * @param ns    property namespace, or nullptr
+         * @return a pair consisting of a nullptr indicator and the property value iff the indicator is true
          */
-        virtual std::pair getUnsignedInt(const char* name, const char* ns=NULL) const=0;
+        virtual std::pair getUnsignedInt(const char* name, const char* ns=nullptr) const=0;
 
         /**
          * Returns an integer-valued property.
          * 
          * @param name  property name
-         * @param ns    property namespace, or NULL
-         * @return a pair consisting of a NULL indicator and the property value iff the indicator is true
+         * @param ns    property namespace, or nullptr
+         * @return a pair consisting of a nullptr indicator and the property value iff the indicator is true
          */
-        virtual std::pair getInt(const char* name, const char* ns=NULL) const=0;
+        virtual std::pair getInt(const char* name, const char* ns=nullptr) const=0;
 
         /**
          * Returns a map of all known properties in string form.
@@ -112,15 +112,15 @@ namespace shibsp {
          * Returns a nested property set.
          * 
          * @param name  nested property set name
-         * @param ns    nested property set namespace, or NULL
-         * @return the nested property set, or NULL
+         * @param ns    nested property set namespace, or nullptr
+         * @return the nested property set, or nullptr
          */        
         virtual const PropertySet* getPropertySet(const char* name, const char* ns=shibspconstants::ASCII_SHIB2SPCONFIG_NS) const=0;
         
         /**
          * Returns a DOM element representing the property container, if any.
          * 
-         * @return a DOM element, or NULL
+         * @return a DOM element, or nullptr
          */
         virtual const xercesc::DOMElement* getElement() const=0;
     };
diff --git a/shibsp/util/TemplateParameters.cpp b/shibsp/util/TemplateParameters.cpp
index 520dfc0..1c37a3e 100644
--- a/shibsp/util/TemplateParameters.cpp
+++ b/shibsp/util/TemplateParameters.cpp
@@ -1,5 +1,5 @@
 /*
- *  Copyright 2001-2009 Internet2
+ *  Copyright 2001-2010 Internet2
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -47,7 +47,7 @@ void TemplateParameters::setPropertySet(const PropertySet* props)
     m_props = props;
 
     // Create a timestamp.
-    time_t now = time(NULL);
+    time_t now = time(nullptr);
 #if defined(HAVE_CTIME_R_2)
     char timebuf[32];
     m_map["now"] = ctime_r(&now,timebuf);
@@ -77,7 +77,7 @@ const char* TemplateParameters::getParameter(const char* name) const
     if (pch || !m_props)
         return pch;
     pair p = m_props->getString(name);
-    return p.first ? p.second : NULL;
+    return p.first ? p.second : nullptr;
 }
 
 string TemplateParameters::toQueryString() const
diff --git a/shibsp/util/TemplateParameters.h b/shibsp/util/TemplateParameters.h
index 783979c..48cffdf 100644
--- a/shibsp/util/TemplateParameters.h
+++ b/shibsp/util/TemplateParameters.h
@@ -1,5 +1,5 @@
 /*
- *  Copyright 2001-2009 Internet2
+ *  Copyright 2001-2010 Internet2
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -43,7 +43,7 @@ namespace shibsp {
          * @param e     an exception to supply additional parameters
          * @param props a PropertySet to supply additional parameters
          */
-        TemplateParameters(const std::exception* e=NULL, const PropertySet* props=NULL);
+        TemplateParameters(const std::exception* e=nullptr, const PropertySet* props=nullptr);
 
         virtual ~TemplateParameters();
         
@@ -57,7 +57,7 @@ namespace shibsp {
         /**
          * Returns the exception passed to the object, if it contains rich information.
          *
-         * @return  an exception, or NULL
+         * @return  an exception, or nullptr
          */
         const xmltooling::XMLToolingException* getRichException() const;
 
diff --git a/util/Makefile.am b/util/Makefile.am
index 92e5dca..e2baaa0 100644
--- a/util/Makefile.am
+++ b/util/Makefile.am
@@ -16,4 +16,4 @@ mdquery_LDADD = \
 
 mdquery_LDFLAGS = $(XMLSEC_LIBS)
 
-EXTRA_DIST = mdquery.vcproj resolvertest.vcproj
+EXTRA_DIST = mdquery.vcxproj resolvertest.vcxproj
diff --git a/util/mdquery.cpp b/util/mdquery.cpp
index 9b928a8..b8ec308 100644
--- a/util/mdquery.cpp
+++ b/util/mdquery.cpp
@@ -1,5 +1,5 @@
 /*
- *  Copyright 2001-2009 Internet2
+ *  Copyright 2001-2010 Internet2
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,7 +17,7 @@
 /**
  * mdquery.cpp
  * 
- * SAML Metadata Query tool layered on SP configuration
+ * SAML Metadata Query tool layered on SP configuration.
  */
 
 #if defined (_MSC_VER) || defined(__BORLANDC__)
@@ -57,13 +57,13 @@ void usage()
 
 int main(int argc,char* argv[])
 {
-    char* entityID = NULL;
+    char* entityID = nullptr;
     char* appID = "default";
     bool strict = true;
-    char* prot = NULL;
-    const XMLCh* protocol = NULL;
-    char* rname = NULL;
-    char* rns = NULL;
+    char* prot = nullptr;
+    const XMLCh* protocol = nullptr;
+    char* rname = nullptr;
+    char* rns = nullptr;
 
     for (int i=1; igetMetadataProvider()->lock();
-    MetadataProviderCriteria mc(*app, entityID, NULL, NULL, strict);
+    MetadataProviderCriteria mc(*app, entityID, nullptr, nullptr, strict);
     if (rname) {
         const XMLCh* ns = rns ? XMLString::transcode(rns) : samlconstants::SAML20MD_NS;
         auto_ptr_XMLCh n(rname);
diff --git a/util/mdquery.vcxproj b/util/mdquery.vcxproj
new file mode 100644
index 0000000..8f93ce0
--- /dev/null
+++ b/util/mdquery.vcxproj
@@ -0,0 +1,213 @@
+
+
+  
+    
+      Debug
+      Win32
+    
+    
+      Debug
+      x64
+    
+    
+      Release
+      Win32
+    
+    
+      Release
+      x64
+    
+  
+  
+    {F13141B6-6C87-40BB-8D4E-5CC56EBB4C5A}
+    mdquery
+  
+  
+  
+    Application
+    MultiByte
+  
+  
+    Application
+    MultiByte
+    true
+  
+  
+    Application
+    MultiByte
+  
+  
+    Application
+    MultiByte
+    true
+  
+  
+  
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+  
+    <_ProjectFileVersion>10.0.30319.1
+    $(SolutionDir)$(Configuration)\
+    $(Configuration)\
+    false
+    $(SolutionDir)$(Platform)\$(Configuration)\
+    $(Platform)\$(Configuration)\
+    false
+    $(SolutionDir)$(Configuration)\
+    $(Configuration)\
+    true
+    $(SolutionDir)$(Platform)\$(Configuration)\
+    $(Platform)\$(Configuration)\
+    true
+    AllRules.ruleset
+    
+    
+    AllRules.ruleset
+    
+    
+    AllRules.ruleset
+    
+    
+    AllRules.ruleset
+    
+    
+  
+  
+    
+      
+      
+    
+    
+      MaxSpeed
+      OnlyExplicitInline
+      .;..;..\..\cpp-opensaml2;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+      true
+      true
+      true
+      Level3
+    
+    
+      NDEBUG;%(PreprocessorDefinitions)
+      0x0409
+    
+    
+      log4shib1.lib;saml2.lib;xmltooling1.lib;xerces-c_3.lib;%(AdditionalDependencies)
+      ..\..\cpp-opensaml2\$(Configuration);..\..\cpp-xmltooling\$(Configuration);%(AdditionalLibraryDirectories)
+      Console
+      
+      
+    
+  
+  
+    
+      X64
+      
+      
+    
+    
+      MaxSpeed
+      OnlyExplicitInline
+      .;..;..\..\cpp-opensaml2;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+      true
+      true
+      true
+      Level3
+    
+    
+      NDEBUG;%(PreprocessorDefinitions)
+      0x0409
+    
+    
+      log4shib1.lib;saml2.lib;xmltooling1.lib;xerces-c_3.lib;%(AdditionalDependencies)
+      ..\..\cpp-opensaml2\$(Platform)\$(Configuration);..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)
+      Console
+      
+      
+    
+  
+  
+    
+      
+      
+    
+    
+      Disabled
+      .;..;..\..\cpp-opensaml2;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)
+      _CONSOLE;WIN32;_DEBUG;%(PreprocessorDefinitions)
+      MultiThreadedDebugDLL
+      true
+      true
+      Level3
+      EditAndContinue
+      true
+    
+    
+      _DEBUG;%(PreprocessorDefinitions)
+      0x0409
+    
+    
+      log4shib1D.lib;saml2D.lib;xmltooling1D.lib;xerces-c_3D.lib;%(AdditionalDependencies)
+      ..\..\cpp-opensaml2\$(Configuration);..\..\cpp-xmltooling\$(Configuration);%(AdditionalLibraryDirectories)
+      true
+      Console
+      
+      
+    
+  
+  
+    
+      X64
+      
+      
+    
+    
+      Disabled
+      .;..;..\..\cpp-opensaml2;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)
+      _CONSOLE;WIN32;_DEBUG;%(PreprocessorDefinitions)
+      MultiThreadedDebugDLL
+      true
+      true
+      Level3
+      ProgramDatabase
+      true
+    
+    
+      _DEBUG;%(PreprocessorDefinitions)
+      0x0409
+    
+    
+      log4shib1D.lib;saml2D.lib;xmltooling1D.lib;xerces-c_3D.lib;%(AdditionalDependencies)
+      ..\..\cpp-opensaml2\$(Platform)\$(Configuration);..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)
+      true
+      Console
+      
+      
+    
+  
+  
+    
+  
+  
+    
+      {81f0f7a6-dc36-46ef-957f-f9e81d4403f6}
+      false
+    
+  
+  
+  
+  
+
\ No newline at end of file
diff --git a/util/resolvertest.cpp b/util/resolvertest.cpp
index 9a1709d..f68439d 100644
--- a/util/resolvertest.cpp
+++ b/util/resolvertest.cpp
@@ -1,5 +1,5 @@
 /*
- *  Copyright 2001-2009 Internet2
+ *  Copyright 2001-2010 Internet2
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -111,12 +111,12 @@ void usage()
 
 int main(int argc,char* argv[])
 {
-    char* a_param=NULL;
-    char* n_param=NULL;
-    char* f_param=NULL;
-    char* i_param=NULL;
-    char* prot = NULL;
-    const XMLCh* protocol = NULL;
+    char* a_param=nullptr;
+    char* n_param=nullptr;
+    char* f_param=nullptr;
+    char* i_param=nullptr;
+    char* prot = nullptr;
+    const XMLCh* protocol = nullptr;
 
     for (int i=1; i v2name(saml2::NameIDBuilder::buildNameID());
             v2name->setName(name.get());
             v2name->setFormat(format.get());
-            saml1::NameIdentifier* v1name = NULL;
+            saml1::NameIdentifier* v1name = nullptr;
             if (!XMLString::equals(protocol, samlconstants::SAML20P_NS)) {
                 v1name = saml1::NameIdentifierBuilder::buildNameIdentifier();
                 v1name->setName(name.get());
@@ -212,9 +212,9 @@ int main(int argc,char* argv[])
                 v1name->setNameQualifier(issuer.get());
             }
 
-            ResolverTest rt(NULL, a_param);
+            ResolverTest rt(nullptr, a_param);
             try {
-                ctx = rt.resolveAttributes(*app, site.second, protocol, v1name, v2name.get(), NULL, NULL, NULL);
+                ctx = rt.resolveAttributes(*app, site.second, protocol, v1name, v2name.get(), nullptr, nullptr, nullptr);
             }
             catch (...) {
                 delete v1name;
@@ -229,16 +229,16 @@ int main(int argc,char* argv[])
             docjan.release();
 
             // Get the issuer and protocol and NameIDs.
-            const XMLCh* issuer = NULL;
-            const saml1::NameIdentifier* v1name = NULL;
-            saml2::NameID* v2name = NULL;
+            const XMLCh* issuer = nullptr;
+            const saml1::NameIdentifier* v1name = nullptr;
+            saml2::NameID* v2name = nullptr;
             saml2::Assertion* a2 = dynamic_cast(token.get());
             saml1::Assertion* a1 = dynamic_cast(token.get());
             if (a2) {
                 const saml2::Issuer* iss = a2->getIssuer();
-                issuer = iss ? iss->getName() : NULL;
+                issuer = iss ? iss->getName() : nullptr;
                 protocol = samlconstants::SAML20P_NS;
-                v2name = a2->getSubject() ? a2->getSubject()->getNameID() : NULL;
+                v2name = a2->getSubject() ? a2->getSubject()->getNameID() : nullptr;
             }
             else if (a1) {
                 issuer = a1->getIssuer();
@@ -247,10 +247,10 @@ int main(int argc,char* argv[])
                 else
                     protocol = samlconstants::SAML11_PROTOCOL_ENUM;
                 v1name = a1->getAuthenticationStatements().size() ?
-                    a1->getAuthenticationStatements().front()->getSubject()->getNameIdentifier() : NULL;
+                    a1->getAuthenticationStatements().front()->getSubject()->getNameIdentifier() : nullptr;
                 if (!v1name)
                     v1name = a1->getAttributeStatements().size() ?
-                    a1->getAttributeStatements().front()->getSubject()->getNameIdentifier() : NULL;
+                    a1->getAttributeStatements().front()->getSubject()->getNameIdentifier() : nullptr;
                 if (v1name) {
                     // Normalize the SAML 1.x NameIdentifier...
                     v2name = saml2::NameIDBuilder::buildNameID();
@@ -263,7 +263,7 @@ int main(int argc,char* argv[])
                 throw FatalProfileException("Unknown assertion type.");
             }
 
-            auto_ptr nameidwrapper(v1name ? v2name : NULL);
+            auto_ptr nameidwrapper(v1name ? v2name : nullptr);
 
             if (!issuer)
                 throw FatalProfileException("Unable to determine issuer.");
@@ -278,8 +278,8 @@ int main(int argc,char* argv[])
             }
             
             vector tokens(1, dynamic_cast(token.get()));
-            ResolverTest rt(NULL, a_param);
-            ctx = rt.resolveAttributes(*app, site.second, protocol, v1name, v2name, NULL, NULL, &tokens);
+            ResolverTest rt(nullptr, a_param);
+            ctx = rt.resolveAttributes(*app, site.second, protocol, v1name, v2name, nullptr, nullptr, &tokens);
         }
 
         auto_ptr wrapper(ctx);
diff --git a/util/resolvertest.vcxproj b/util/resolvertest.vcxproj
new file mode 100644
index 0000000..8f2eea3
--- /dev/null
+++ b/util/resolvertest.vcxproj
@@ -0,0 +1,215 @@
+
+
+  
+    
+      Debug
+      Win32
+    
+    
+      Debug
+      x64
+    
+    
+      Release
+      Win32
+    
+    
+      Release
+      x64
+    
+  
+  
+    {F13141B6-6C87-40BB-8D4E-5CC56EBB4C59}
+    resolvertest
+  
+  
+  
+    Application
+    MultiByte
+  
+  
+    Application
+    MultiByte
+    true
+  
+  
+    Application
+    MultiByte
+  
+  
+    Application
+    MultiByte
+    true
+  
+  
+  
+  
+  
+    
+    
+  
+  
+    
+  
+  
+    
+    
+  
+  
+    
+  
+  
+  
+    <_ProjectFileVersion>10.0.30319.1
+    $(SolutionDir)$(Configuration)\
+    $(Configuration)\
+    false
+    $(SolutionDir)$(Platform)\$(Configuration)\
+    $(Platform)\$(Configuration)\
+    false
+    $(SolutionDir)$(Configuration)\
+    $(Configuration)\
+    true
+    $(SolutionDir)$(Platform)\$(Configuration)\
+    $(Platform)\$(Configuration)\
+    true
+    AllRules.ruleset
+    
+    
+    AllRules.ruleset
+    
+    
+    AllRules.ruleset
+    
+    
+    AllRules.ruleset
+    
+    
+  
+  
+    
+      
+      
+    
+    
+      MaxSpeed
+      OnlyExplicitInline
+      .;..;..\..\cpp-opensaml2;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+      true
+      true
+      true
+      Level3
+    
+    
+      NDEBUG;%(PreprocessorDefinitions)
+      0x0409
+    
+    
+      log4shib1.lib;saml2.lib;xmltooling1.lib;xerces-c_3.lib;%(AdditionalDependencies)
+      ..\..\cpp-opensaml2\$(Configuration);..\..\cpp-xmltooling\$(Configuration);%(AdditionalLibraryDirectories)
+      Console
+      
+      
+    
+  
+  
+    
+      X64
+      
+      
+    
+    
+      MaxSpeed
+      OnlyExplicitInline
+      .;..;..\..\cpp-opensaml2;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+      true
+      true
+      true
+      Level3
+    
+    
+      NDEBUG;%(PreprocessorDefinitions)
+      0x0409
+    
+    
+      log4shib1.lib;saml2.lib;xmltooling1.lib;xerces-c_3.lib;%(AdditionalDependencies)
+      ..\..\cpp-opensaml2\$(Platform)\$(Configuration);..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)
+      Console
+      
+      
+    
+  
+  
+    
+      
+      
+    
+    
+      Disabled
+      .;..;..\..\cpp-opensaml2;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)
+      _CONSOLE;WIN32;_DEBUG;%(PreprocessorDefinitions)
+      MultiThreadedDebugDLL
+      true
+      true
+      Level3
+      EditAndContinue
+      true
+    
+    
+      _DEBUG;%(PreprocessorDefinitions)
+      0x0409
+    
+    
+      log4shib1D.lib;saml2D.lib;xmltooling1D.lib;xerces-c_3D.lib;%(AdditionalDependencies)
+      ..\..\cpp-opensaml2\$(Configuration);..\..\cpp-xmltooling\$(Configuration);%(AdditionalLibraryDirectories)
+      true
+      Console
+      
+      
+    
+  
+  
+    
+      X64
+      
+      
+    
+    
+      Disabled
+      .;..;..\..\cpp-opensaml2;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)
+      _CONSOLE;WIN32;_DEBUG;%(PreprocessorDefinitions)
+      MultiThreadedDebugDLL
+      true
+      true
+      Level3
+      ProgramDatabase
+      true
+    
+    
+      _DEBUG;%(PreprocessorDefinitions)
+      0x0409
+    
+    
+      log4shib1D.lib;saml2D.lib;xmltooling1D.lib;xerces-c_3D.lib;%(AdditionalDependencies)
+      ..\..\cpp-opensaml2\$(Platform)\$(Configuration);..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)
+      true
+      Console
+      
+      
+    
+  
+  
+    
+  
+  
+    
+      {81f0f7a6-dc36-46ef-957f-f9e81d4403f6}
+      false
+    
+  
+  
+  
+  
+
\ No newline at end of file
-- 
2.1.4