VS10 solution files, convert from NULL macro to nullptr.
authorcantor <cantor@cb58f699-b61c-0410-a6fe-9272a202ed29>
Wed, 5 May 2010 21:21:49 +0000 (21:21 +0000)
committercantor <cantor@cb58f699-b61c-0410-a6fe-9272a202ed29>
Wed, 5 May 2010 21:21:49 +0000 (21:21 +0000)
git-svn-id: https://svn.middleware.georgetown.edu/cpp-sp/branches/REL_2@3252 cb58f699-b61c-0410-a6fe-9272a202ed29

146 files changed:
.cproject
Shibboleth.sln
adfs/Makefile.am
adfs/adfs-lite.vcxproj [new file with mode: 0644]
adfs/adfs.cpp
adfs/adfs.vcxproj [new file with mode: 0644]
apache/Makefile.am
apache/mod_apache.cpp
apache/mod_shib13.vcxproj [new file with mode: 0644]
apache/mod_shib20.vcxproj [new file with mode: 0644]
apache/mod_shib22.vcxproj [new file with mode: 0644]
fastcgi/Makefile.am
fastcgi/shibauthorizer.cpp
fastcgi/shibauthorizer.vcxproj [new file with mode: 0644]
fastcgi/shibresponder.cpp
fastcgi/shibresponder.vcxproj [new file with mode: 0644]
isapi_shib/isapi_shib.cpp
isapi_shib/isapi_shib.vcxproj [new file with mode: 0644]
memcache-store/Makefile.am
memcache-store/memcache-store.cpp
memcache-store/memcache-store.vcxproj [new file with mode: 0644]
nsapi_shib/Makefile.am
nsapi_shib/nsapi_shib.cpp
nsapi_shib/nsapi_shib.vcxproj [new file with mode: 0644]
odbc-store/Makefile.am
odbc-store/odbc-store.cpp
odbc-store/odbc-store.vcxproj [new file with mode: 0644]
shibd/Makefile.am
shibd/shibd.cpp
shibd/shibd.vcxproj [new file with mode: 0644]
shibd/shibd_win32.cpp
shibsp/AbstractSPRequest.cpp
shibsp/AbstractSPRequest.h
shibsp/Application.h
shibsp/Makefile.am
shibsp/SPConfig.cpp
shibsp/SPConfig.h
shibsp/SPRequest.h
shibsp/ServiceProvider.cpp
shibsp/ServiceProvider.h
shibsp/SessionCache.h
shibsp/SessionCacheEx.h
shibsp/attribute/Attribute.cpp
shibsp/attribute/Attribute.h
shibsp/attribute/AttributeDecoder.h
shibsp/attribute/DOMAttributeDecoder.cpp
shibsp/attribute/ExtensibleAttribute.cpp
shibsp/attribute/KeyInfoAttributeDecoder.cpp
shibsp/attribute/NameIDAttributeDecoder.cpp
shibsp/attribute/NameIDFromScopedAttributeDecoder.cpp
shibsp/attribute/ScopedAttributeDecoder.cpp
shibsp/attribute/SimpleAttribute.cpp
shibsp/attribute/StringAttributeDecoder.cpp
shibsp/attribute/XMLAttribute.cpp
shibsp/attribute/XMLAttributeDecoder.cpp
shibsp/attribute/filtering/BasicFilteringContext.h
shibsp/attribute/filtering/FilteringContext.h
shibsp/attribute/filtering/impl/AndMatchFunctor.cpp
shibsp/attribute/filtering/impl/AttributeIssuerInEntityGroupFunctor.cpp
shibsp/attribute/filtering/impl/AttributeIssuerRegexFunctor.cpp
shibsp/attribute/filtering/impl/AttributeIssuerStringFunctor.cpp
shibsp/attribute/filtering/impl/AttributeRequesterInEntityGroupFunctor.cpp
shibsp/attribute/filtering/impl/AttributeRequesterRegexFunctor.cpp
shibsp/attribute/filtering/impl/AttributeRequesterStringFunctor.cpp
shibsp/attribute/filtering/impl/AttributeScopeMatchesShibMDScopeFunctor.cpp
shibsp/attribute/filtering/impl/AttributeScopeRegexFunctor.cpp
shibsp/attribute/filtering/impl/AttributeScopeStringFunctor.cpp
shibsp/attribute/filtering/impl/AttributeValueRegexFunctor.cpp
shibsp/attribute/filtering/impl/AttributeValueStringFunctor.cpp
shibsp/attribute/filtering/impl/AuthenticationMethodRegexFunctor.cpp
shibsp/attribute/filtering/impl/AuthenticationMethodStringFunctor.cpp
shibsp/attribute/filtering/impl/BasicFilteringContext.cpp
shibsp/attribute/filtering/impl/ChainingAttributeFilter.cpp
shibsp/attribute/filtering/impl/NotMatchFunctor.cpp
shibsp/attribute/filtering/impl/NumberOfAttributeValuesFunctor.cpp
shibsp/attribute/filtering/impl/OrMatchFunctor.cpp
shibsp/attribute/filtering/impl/XMLAttributeFilter.cpp
shibsp/attribute/resolver/AttributeResolver.h
shibsp/attribute/resolver/impl/ChainingAttributeExtractor.cpp
shibsp/attribute/resolver/impl/ChainingAttributeResolver.cpp
shibsp/attribute/resolver/impl/DelegationAttributeExtractor.cpp
shibsp/attribute/resolver/impl/KeyDescriptorAttributeExtractor.cpp
shibsp/attribute/resolver/impl/QueryAttributeResolver.cpp
shibsp/attribute/resolver/impl/SimpleAggregationAttributeResolver.cpp
shibsp/attribute/resolver/impl/XMLAttributeExtractor.cpp
shibsp/binding/impl/ArtifactResolver.cpp
shibsp/binding/impl/SOAPClient.cpp
shibsp/handler/AbstractHandler.h
shibsp/handler/AssertionConsumerService.h
shibsp/handler/LogoutHandler.h
shibsp/handler/RemotedHandler.h
shibsp/handler/impl/AbstractHandler.cpp
shibsp/handler/impl/AssertionConsumerService.cpp
shibsp/handler/impl/AssertionLookup.cpp
shibsp/handler/impl/ChainingLogoutInitiator.cpp
shibsp/handler/impl/ChainingSessionInitiator.cpp
shibsp/handler/impl/LogoutHandler.cpp
shibsp/handler/impl/MetadataGenerator.cpp
shibsp/handler/impl/RemotedHandler.cpp
shibsp/handler/impl/SAML1Consumer.cpp
shibsp/handler/impl/SAML2ArtifactResolution.cpp
shibsp/handler/impl/SAML2Consumer.cpp
shibsp/handler/impl/SAML2Logout.cpp
shibsp/handler/impl/SAML2LogoutInitiator.cpp
shibsp/handler/impl/SAML2NameIDMgmt.cpp
shibsp/handler/impl/SAML2SessionInitiator.cpp
shibsp/handler/impl/SAMLDSSessionInitiator.cpp
shibsp/handler/impl/SessionHandler.cpp
shibsp/handler/impl/SessionInitiator.cpp
shibsp/handler/impl/Shib1SessionInitiator.cpp
shibsp/handler/impl/StatusHandler.cpp
shibsp/handler/impl/TransformSessionInitiator.cpp
shibsp/handler/impl/WAYFSessionInitiator.cpp
shibsp/impl/ChainingAccessControl.cpp
shibsp/impl/StorageServiceSessionCache.cpp
shibsp/impl/XMLAccessControl.cpp
shibsp/impl/XMLRequestMapper.cpp
shibsp/impl/XMLServiceProvider.cpp
shibsp/metadata/DynamicMetadataProvider.cpp
shibsp/metadata/MetadataExtImpl.cpp
shibsp/metadata/MetadataProviderCriteria.h
shibsp/remoting/ListenerService.h
shibsp/remoting/ddf.h
shibsp/remoting/impl/ListenerService.cpp
shibsp/remoting/impl/SocketListener.cpp
shibsp/remoting/impl/TCPListener.cpp
shibsp/remoting/impl/UnixListener.cpp
shibsp/remoting/impl/ddf.cpp
shibsp/security/PKIXTrustEngine.cpp
shibsp/security/SecurityPolicy.h
shibsp/shibsp-lite.vcxproj [new file with mode: 0644]
shibsp/shibsp-lite.vcxproj.filters [new file with mode: 0644]
shibsp/shibsp.vcxproj [new file with mode: 0644]
shibsp/shibsp.vcxproj.filters [new file with mode: 0644]
shibsp/util/CGIParser.cpp
shibsp/util/CGIParser.h
shibsp/util/DOMPropertySet.cpp
shibsp/util/DOMPropertySet.h
shibsp/util/PropertySet.h
shibsp/util/TemplateParameters.cpp
shibsp/util/TemplateParameters.h
util/Makefile.am
util/mdquery.cpp
util/mdquery.vcxproj [new file with mode: 0644]
util/resolvertest.cpp
util/resolvertest.vcxproj [new file with mode: 0644]

index 83c8f62..cb78291 100644 (file)
--- a/.cproject
+++ b/.cproject
 <listOptionValue builtIn="false" value="WIN32"/>\r
 </option>\r
 <option id="org.eclipse.linuxtools.cdt.autotools.option.configure.includes.1925509387" name="includes" superClass="org.eclipse.linuxtools.cdt.autotools.option.configure.includes" valueType="includePath">\r
-<listOptionValue builtIn="false" value="&quot;${workspace_loc:/cpp-sp/cpp-xmltooling}&quot;"/>\r
-<listOptionValue builtIn="false" value="&quot;${workspace_loc:/cpp-sp/cpp-opensaml2}&quot;"/>\r
-<listOptionValue builtIn="false" value="C:/log4shib-1.0.3/include"/>\r
-<listOptionValue builtIn="false" value="C:/xerces-c-3.0.1-x86-windows-vc-9.0/include"/>\r
 <listOptionValue builtIn="false" value="C:/xml-security-c-1.5.1/include"/>\r
-<listOptionValue builtIn="false" value="&quot;C:/Program Files/Microsoft Visual Studio 9.0/VC/include&quot;"/>\r
+<listOptionValue builtIn="false" value="&quot;${workspace_loc:/cpp-xmltooling/xmltooling}&quot;"/>\r
+<listOptionValue builtIn="false" value="&quot;${workspace_loc:/cpp-opensaml2/saml}&quot;"/>\r
+<listOptionValue builtIn="false" value="&quot;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include&quot;"/>\r
+<listOptionValue builtIn="false" value="C:/xerces-c-3.1.1-x86-windows-vc-10.0/include"/>\r
+<listOptionValue builtIn="false" value="C:/log4shib-1.0.5/include"/>\r
 </option>\r
 <inputType id="org.eclipse.linuxtools.cdt.autotools.inputType.configure.1698708407" superClass="org.eclipse.linuxtools.cdt.autotools.inputType.configure"/>\r
 <inputType id="org.eclipse.linuxtools.cdt.autotools.inputType.configure1.2095849049" superClass="org.eclipse.linuxtools.cdt.autotools.inputType.configure1"/>\r
 </toolChain>\r
 </folderInfo>\r
 <fileInfo id="org.eclipse.linuxtools.cdt.autotools.configuration.build.951860450.560277989" name="LOG4CPP.LICENSE" rcbsApplicability="disable" resourcePath="doc/LOG4CPP.LICENSE" toolsToInvoke=""/>\r
+<folderInfo id="org.eclipse.linuxtools.cdt.autotools.configuration.build.951860450.327309470" name="/" resourcePath="apache">\r
+<toolChain id="org.eclipse.linuxtools.cdt.autotools.toolChain.651654003" name="GNU Autotools Toolchain" superClass="org.eclipse.linuxtools.cdt.autotools.toolChain" unusedChildren="">\r
+<tool id="org.eclipse.linuxtools.cdt.autotools.gnu.toolchain.tool.configure.243725962" name="configure" superClass="org.eclipse.linuxtools.cdt.autotools.gnu.toolchain.tool.configure.1723135584">\r
+<inputType id="org.eclipse.linuxtools.cdt.autotools.inputType.configure.1657073427" superClass="org.eclipse.linuxtools.cdt.autotools.inputType.configure"/>\r
+<inputType id="org.eclipse.linuxtools.cdt.autotools.inputType.configure1.2046555518" superClass="org.eclipse.linuxtools.cdt.autotools.inputType.configure1"/>\r
+</tool>\r
+<tool id="org.eclipse.linuxtools.cdt.autotools.toolchain.tool.autogen.1169775038" name="autogen.sh" superClass="org.eclipse.linuxtools.cdt.autotools.toolchain.tool.autogen.782580356"/>\r
+</toolChain>\r
+</folderInfo>\r
 <sourceEntries>\r
 <entry excluding="Debug/|odbc-store|shibd|Release/|util|nsapi_shib|adfs|remoting|memcache-store|shibsp|apache|fastcgi|isapi_shib|x64/" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>\r
 <entry excluding="attribute|handler|binding|impl|metadata|lite|remoting|Debug/|security|shibsp-lite-Release/|Release/|util|shibsp-lite-Debug/|x64/" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="shibsp"/>\r
 </scannerInfoProvider>\r
 </profile>\r
 </scannerConfigBuildInfo>\r
+<scannerConfigBuildInfo instanceId="org.eclipse.linuxtools.cdt.autotools.configuration.build.951860450;org.eclipse.linuxtools.cdt.autotools.configuration.build.951860450.327309470;org.eclipse.linuxtools.cdt.autotools.gnu.toolchain.tool.configure.243725962;org.eclipse.linuxtools.cdt.autotools.inputType.configure.1657073427">\r
+<autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile"/>\r
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">\r
+<buildOutputProvider>\r
+<openAction enabled="true" filePath=""/>\r
+<parser enabled="true"/>\r
+</buildOutputProvider>\r
+<scannerInfoProvider id="specsFile">\r
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>\r
+<parser enabled="true"/>\r
+</scannerInfoProvider>\r
+</profile>\r
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">\r
+<buildOutputProvider>\r
+<openAction enabled="true" filePath=""/>\r
+<parser enabled="true"/>\r
+</buildOutputProvider>\r
+<scannerInfoProvider id="makefileGenerator">\r
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>\r
+<parser enabled="true"/>\r
+</scannerInfoProvider>\r
+</profile>\r
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">\r
+<buildOutputProvider>\r
+<openAction enabled="true" filePath=""/>\r
+<parser enabled="true"/>\r
+</buildOutputProvider>\r
+<scannerInfoProvider id="specsFile">\r
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>\r
+<parser enabled="true"/>\r
+</scannerInfoProvider>\r
+</profile>\r
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">\r
+<buildOutputProvider>\r
+<openAction enabled="true" filePath=""/>\r
+<parser enabled="true"/>\r
+</buildOutputProvider>\r
+<scannerInfoProvider id="specsFile">\r
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>\r
+<parser enabled="true"/>\r
+</scannerInfoProvider>\r
+</profile>\r
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">\r
+<buildOutputProvider>\r
+<openAction enabled="true" filePath=""/>\r
+<parser enabled="true"/>\r
+</buildOutputProvider>\r
+<scannerInfoProvider id="specsFile">\r
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>\r
+<parser enabled="true"/>\r
+</scannerInfoProvider>\r
+</profile>\r
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">\r
+<buildOutputProvider>\r
+<openAction enabled="true" filePath=""/>\r
+<parser enabled="true"/>\r
+</buildOutputProvider>\r
+<scannerInfoProvider id="specsFile">\r
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>\r
+<parser enabled="true"/>\r
+</scannerInfoProvider>\r
+</profile>\r
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">\r
+<buildOutputProvider>\r
+<openAction enabled="true" filePath=""/>\r
+<parser enabled="true"/>\r
+</buildOutputProvider>\r
+<scannerInfoProvider id="specsFile">\r
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>\r
+<parser enabled="true"/>\r
+</scannerInfoProvider>\r
+</profile>\r
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">\r
+<buildOutputProvider>\r
+<openAction enabled="true" filePath=""/>\r
+<parser enabled="true"/>\r
+</buildOutputProvider>\r
+<scannerInfoProvider id="specsFile">\r
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>\r
+<parser enabled="true"/>\r
+</scannerInfoProvider>\r
+</profile>\r
+</scannerConfigBuildInfo>\r
+<scannerConfigBuildInfo instanceId="org.eclipse.linuxtools.cdt.autotools.configuration.build.951860450;org.eclipse.linuxtools.cdt.autotools.configuration.build.951860450.327309470;org.eclipse.linuxtools.cdt.autotools.gnu.toolchain.tool.configure.243725962;org.eclipse.linuxtools.cdt.autotools.inputType.configure1.2046555518">\r
+<autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile"/>\r
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">\r
+<buildOutputProvider>\r
+<openAction enabled="true" filePath=""/>\r
+<parser enabled="true"/>\r
+</buildOutputProvider>\r
+<scannerInfoProvider id="specsFile">\r
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>\r
+<parser enabled="true"/>\r
+</scannerInfoProvider>\r
+</profile>\r
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">\r
+<buildOutputProvider>\r
+<openAction enabled="true" filePath=""/>\r
+<parser enabled="true"/>\r
+</buildOutputProvider>\r
+<scannerInfoProvider id="makefileGenerator">\r
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>\r
+<parser enabled="true"/>\r
+</scannerInfoProvider>\r
+</profile>\r
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">\r
+<buildOutputProvider>\r
+<openAction enabled="true" filePath=""/>\r
+<parser enabled="true"/>\r
+</buildOutputProvider>\r
+<scannerInfoProvider id="specsFile">\r
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>\r
+<parser enabled="true"/>\r
+</scannerInfoProvider>\r
+</profile>\r
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">\r
+<buildOutputProvider>\r
+<openAction enabled="true" filePath=""/>\r
+<parser enabled="true"/>\r
+</buildOutputProvider>\r
+<scannerInfoProvider id="specsFile">\r
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>\r
+<parser enabled="true"/>\r
+</scannerInfoProvider>\r
+</profile>\r
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">\r
+<buildOutputProvider>\r
+<openAction enabled="true" filePath=""/>\r
+<parser enabled="true"/>\r
+</buildOutputProvider>\r
+<scannerInfoProvider id="specsFile">\r
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>\r
+<parser enabled="true"/>\r
+</scannerInfoProvider>\r
+</profile>\r
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">\r
+<buildOutputProvider>\r
+<openAction enabled="true" filePath=""/>\r
+<parser enabled="true"/>\r
+</buildOutputProvider>\r
+<scannerInfoProvider id="specsFile">\r
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>\r
+<parser enabled="true"/>\r
+</scannerInfoProvider>\r
+</profile>\r
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">\r
+<buildOutputProvider>\r
+<openAction enabled="true" filePath=""/>\r
+<parser enabled="true"/>\r
+</buildOutputProvider>\r
+<scannerInfoProvider id="specsFile">\r
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>\r
+<parser enabled="true"/>\r
+</scannerInfoProvider>\r
+</profile>\r
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">\r
+<buildOutputProvider>\r
+<openAction enabled="true" filePath=""/>\r
+<parser enabled="true"/>\r
+</buildOutputProvider>\r
+<scannerInfoProvider id="specsFile">\r
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>\r
+<parser enabled="true"/>\r
+</scannerInfoProvider>\r
+</profile>\r
+</scannerConfigBuildInfo>\r
 </storageModule>\r
 </cconfiguration>\r
 </storageModule>\r
index c799c03..6283aa3 100644 (file)
@@ -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
index 196504b..e6aa05c 100644 (file)
@@ -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 (file)
index 0000000..c45a4e9
--- /dev/null
@@ -0,0 +1,212 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{26D4FABF-ACDE-4947-9C4A-7AE1B50CD83B}</ProjectGuid>\r
+    <RootNamespace>adfs-lite</RootNamespace>\r
+    <Keyword>Win32Proj</Keyword>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectName)-$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(ProjectName)-$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectName)-$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(ProjectName)-$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />\r
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.so</TargetExt>\r
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.so</TargetExt>\r
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.so</TargetExt>\r
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.so</TargetExt>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;SHIBSP_LITE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>SHIBSP_LITE;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>log4shib1D.lib;xerces-c_3D.lib;xmltooling-lite1D.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Windows</SubSystem>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;SHIBSP_LITE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>SHIBSP_LITE;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>log4shib1D.lib;xerces-c_3D.lib;xmltooling-lite1D.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Windows</SubSystem>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;SHIBSP_LITE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>SHIBSP_LITE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>log4shib1.lib;xerces-c_3.lib;xmltooling-lite1.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Windows</SubSystem>\r
+      <OptimizeReferences>true</OptimizeReferences>\r
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;SHIBSP_LITE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>SHIBSP_LITE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>log4shib1.lib;xerces-c_3.lib;xmltooling-lite1.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Windows</SubSystem>\r
+      <OptimizeReferences>true</OptimizeReferences>\r
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="adfs.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ResourceCompile Include="adfs.rc" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="Makefile.am" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="resource.h" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\shibsp\shibsp-lite.vcxproj">\r
+      <Project>{81f0f7a6-dc36-46ef-957f-f9e81d4403f7}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index f724540..0c9f242 100644 (file)
@@ -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<bool,const char*> loc = getString("Location");
             if (loc.first) {
@@ -328,7 +328,7 @@ pair<bool,long> ADFSSessionInitiator::run(SPRequest& request, string& entityID,
     string target;
     pair<bool,const char*> prop;
     pair<bool,const char*> acClass;
-    const Handler* ACS=NULL;
+    const Handler* ACS=nullptr;
     const Application& app=request.getApplication();
 
     if (isHandler) {
@@ -408,7 +408,7 @@ pair<bool,long> 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<bool,long> 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<XMLObject*>::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<const EntityDescriptor*>(policy.getIssuerMetadata()->getParent()) : NULL;
+    const EntityDescriptor* entity = policy.getIssuerMetadata() ? dynamic_cast<const EntityDescriptor*>(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<const saml1::Assertion*>(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<saml2::NameID> nameid(saml1name ? saml2::NameIDBuilder::buildNameID() : NULL);
+    auto_ptr<saml2::NameID> 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<bool,long> 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<HTTPRequest> req(getRequest(in));
 
     // Set up a response shim.
-    DDF ret(NULL);
+    DDF ret(nullptr);
     DDFJanitor jout(ret);
     auto_ptr<HTTPResponse> 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<bool,long> 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 (file)
index 0000000..b99c43d
--- /dev/null
@@ -0,0 +1,206 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{26D4FABF-ACDE-4947-9C4A-7AE1B50CD83A}</ProjectGuid>\r
+    <RootNamespace>adfs</RootNamespace>\r
+    <Keyword>Win32Proj</Keyword>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />\r
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.so</TargetExt>\r
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.so</TargetExt>\r
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.so</TargetExt>\r
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.so</TargetExt>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-opensaml2;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>log4shib1D.lib;xerces-c_3D.lib;saml2D.lib;xmltooling1D.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-opensaml2\$(Configuration);..\..\cpp-xmltooling\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Windows</SubSystem>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-opensaml2;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>log4shib1D.lib;xerces-c_3D.lib;saml2D.lib;xmltooling1D.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-opensaml2\$(Platform)\$(Configuration);..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Windows</SubSystem>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-opensaml2;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <Link>\r
+      <AdditionalDependencies>log4shib1.lib;xerces-c_3.lib;saml2.lib;xmltooling1.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-opensaml2\$(Configuration);..\..\cpp-xmltooling\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Windows</SubSystem>\r
+      <OptimizeReferences>true</OptimizeReferences>\r
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-opensaml2;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <Link>\r
+      <AdditionalDependencies>log4shib1.lib;xerces-c_3.lib;saml2.lib;xmltooling1.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-opensaml2\$(Platform)\$(Configuration);..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Windows</SubSystem>\r
+      <OptimizeReferences>true</OptimizeReferences>\r
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="adfs.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ResourceCompile Include="adfs.rc" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="Makefile.am" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="resource.h" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\shibsp\shibsp.vcxproj">\r
+      <Project>{81f0f7a6-dc36-46ef-957f-f9e81d4403f6}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index 805ebed..0af9efe 100644 (file)
@@ -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
index efe531e..3f776b1 100644 (file)
@@ -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<bool,long> 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<bool,bool> getBool(const char* name, const char* ns=NULL) const;
-    pair<bool,const char*> getString(const char* name, const char* ns=NULL) const;
-    pair<bool,const XMLCh*> getXMLString(const char* name, const char* ns=NULL) const;
-    pair<bool,unsigned int> getUnsignedInt(const char* name, const char* ns=NULL) const;
-    pair<bool,int> getInt(const char* name, const char* ns=NULL) const;
+    pair<bool,bool> getBool(const char* name, const char* ns=nullptr) const;
+    pair<bool,const char*> getString(const char* name, const char* ns=nullptr) const;
+    pair<bool,const XMLCh*> getXMLString(const char* name, const char* ns=nullptr) const;
+    pair<bool,unsigned int> getUnsignedInt(const char* name, const char* ns=nullptr) const;
+    pair<bool,int> getInt(const char* name, const char* ns=nullptr) const;
     void getAll(map<string,const char*>& 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<bool,const char*> ApacheRequestMapper::getString(const char* name, const ch
                 return make_pair(true, prop);
         }
     }
-    return s ? s->getString(name,ns) : pair<bool,const char*>(false,NULL);
+    return s ? s->getString(name,ns) : pair<bool,const char*>(false,nullptr);
 }
 
 pair<bool,const XMLCh*> ApacheRequestMapper::getXMLString(const char* name, const char* ns) const
 {
     const PropertySet* s=reinterpret_cast<const PropertySet*>(m_propsKey->getData());
-    return s ? s->getXMLString(name,ns) : pair<bool,const XMLCh*>(false,NULL);
+    return s ? s->getXMLString(name,ns) : pair<bool,const XMLCh*>(false,nullptr);
 }
 
 pair<bool,unsigned int> ApacheRequestMapper::getUnsignedInt(const char* name, const char* ns) const
@@ -832,7 +832,7 @@ pair<bool,unsigned int> 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<bool,unsigned int>(true, strtol(sta->m_dc->szRedirectToSSL, NULL, 10));
+            return pair<bool,unsigned int>(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<string,const char*>& properties) const
 const PropertySet* ApacheRequestMapper::getPropertySet(const char* name, const char* ns) const
 {
     const PropertySet* s=reinterpret_cast<const PropertySet*>(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<const PropertySet*>(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<multimap<string,const Attribute*>::const_iterator,multimap<string,const Attribute*>::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 (file)
index 0000000..8fb71a1
--- /dev/null
@@ -0,0 +1,251 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{D243B43E-728E-4F32-BDFF-B3A897037C6D}</ProjectGuid>\r
+    <ProjectName>mod_shib_13</ProjectName>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />\r
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.so</TargetExt>\r
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.so</TargetExt>\r
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.so</TargetExt>\r
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.so</TargetExt>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>.\Release/mod_shib13.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..;\Apache\include;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;EAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>xerces-c_3.lib;ApacheCore.lib;xmltooling-lite1.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Configuration);\Apache\libexec;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\Release/mod_shib13.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..;\Apache\include;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;EAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>xerces-c_3.lib;ApacheCore.lib;xmltooling-lite1.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Platform)\$(Configuration);\Apache\libexec;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\Release/mod_shib_13.pdb</ProgramDatabaseFile>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>.\Debug/mod_shib13.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..;\Apache\include;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_WINDOWS;EAPI;WIN32;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>xerces-c_3D.lib;ApacheCore.lib;xmltooling-lite1D.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Configuration);\Apache\libexec;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\Debug/mod_shib13.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..;\Apache\include;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_WINDOWS;EAPI;WIN32;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>xerces-c_3D.lib;ApacheCore.lib;xmltooling-lite1D.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Platform)\$(Configuration);\Apache\libexec;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <None Include="Makefile.am" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="mod_apache.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="mod_shib_13.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ResourceCompile Include="mod_shib_13.rc" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="resource.h" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\shibsp\shibsp-lite.vcxproj">\r
+      <Project>{81f0f7a6-dc36-46ef-957f-f9e81d4403f7}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
diff --git a/apache/mod_shib20.vcxproj b/apache/mod_shib20.vcxproj
new file mode 100644 (file)
index 0000000..b7a3d94
--- /dev/null
@@ -0,0 +1,255 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{68E9568B-476C-4289-B93C-893432378ADC}</ProjectGuid>\r
+    <ProjectName>mod_shib_20</ProjectName>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectName)-$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(ProjectName)-$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectName)-$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(ProjectName)-$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />\r
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.so</TargetExt>\r
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.so</TargetExt>\r
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.so</TargetExt>\r
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.so</TargetExt>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>.\mod_shib20___Win32_Release/mod_shib20.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..;\Apache2.0.63\Apache2\include;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>xerces-c_3.lib;libapr.lib;libaprutil.lib;libhttpd.lib;xmltooling-lite1.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Configuration);\Apache2.0.63\Apache2\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\mod_shib20___Win32_Release/mod_shib20.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..;\Apache2.0.63\Apache2\include;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>xerces-c_3.lib;libapr.lib;libaprutil.lib;libhttpd.lib;xmltooling-lite1.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Platform)\$(Configuration);\Apache2.0.63\Apache2\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\mod_shib20___Win32_Release/mod_shib_20.pdb</ProgramDatabaseFile>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>.\mod_shib20___Win32_Debug/mod_shib20.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..;\Apache2.0.63\Apache2\include;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_WINDOWS;WIN32;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>xerces-c_3D.lib;libapr.lib;libaprutil.lib;libhttpd.lib;xmltooling-lite1D.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Configuration);\Apache2.0.63\Apache2\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\mod_shib20___Win32_Debug/mod_shib20.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..;\Apache2.0.63\Apache2\include;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_WINDOWS;WIN32;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>xerces-c_3D.lib;libapr.lib;libaprutil.lib;libhttpd.lib;xmltooling-lite1D.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Platform)\$(Configuration);\Apache2.0.63\Apache2\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <None Include="Makefile.am" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="mod_apache.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="mod_shib_20.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ResourceCompile Include="mod_shib_20.rc" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="resource.h" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\shibsp\shibsp-lite.vcxproj">\r
+      <Project>{81f0f7a6-dc36-46ef-957f-f9e81d4403f7}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
diff --git a/apache/mod_shib22.vcxproj b/apache/mod_shib22.vcxproj
new file mode 100644 (file)
index 0000000..9e2f803
--- /dev/null
@@ -0,0 +1,262 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{B44C0852-83B8-4FB2-A86E-097C9C8256D0}</ProjectGuid>\r
+    <ProjectName>mod_shib_22</ProjectName>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectName)-$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(ProjectName)-$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectName)-$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(ProjectName)-$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />\r
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.so</TargetExt>\r
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.so</TargetExt>\r
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.so</TargetExt>\r
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.so</TargetExt>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>.\mod_shib22___Win32_Release/mod_shib22.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..;\Apache2.2.14\include;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;WIN32;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>xerces-c_3.lib;xmltooling-lite1.lib;libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Configuration);\Apache2.2.14\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\mod_shib22___Win32_Release/mod_shib22.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..;\httpd-2.2-x64\include;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;WIN32;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>xerces-c_3.lib;xmltooling-lite1.lib;libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Platform)\$(Configuration);C:\httpd-2.2-x64\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>.\mod_shib22___Win32_Debug/mod_shib22.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..;\Apache2.2.14\include;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;WIN32;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>xerces-c_3D.lib;xmltooling-lite1D.lib;libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Configuration);\Apache2.2.14\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\mod_shib22___Win32_Debug/mod_shib22.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..;\httpd-2.2-x64\include;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;WIN32;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>xerces-c_3D.lib;xmltooling-lite1D.lib;libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Platform)\$(Configuration);C:\httpd-2.2-x64\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <None Include="Makefile.am" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="mod_apache.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="mod_shib_22.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ResourceCompile Include="mod_shib_22.rc" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="resource.h" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\shibsp\shibsp-lite.vcxproj">\r
+      <Project>{81f0f7a6-dc36-46ef-957f-f9e81d4403f7}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index 1c4ba8c..232c0b7 100644 (file)
@@ -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
index b7babb5..10355f6 100644 (file)
@@ -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<string,string> 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 (file)
index 0000000..d6b0e1a
--- /dev/null
@@ -0,0 +1,236 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{8CF7DDFA-EAA0-416E-853E-3DCB210C4AE0}</ProjectGuid>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectName)-$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(ProjectName)-$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectName)-$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(ProjectName)-$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\shibauthorizer___Win32_Release/shibauthorizer.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>xerces-c_3.lib;xmltooling1.lib;libfcgi.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Configuration);\fcgi-2.4.0-VC9\Win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\shibauthorizer___Win32_Release/shibauthorizer.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>xerces-c_3.lib;xmltooling1.lib;libfcgi.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Platform)\$(Configuration);\fcgi-2.4.0-VC9\Win32\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\shibauthorizer___Win32_Release/shibauthorizer.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\shibauthorizer___Win32_Debug/shibauthorizer.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>xerces-c_3D.lib;xmltooling1D.lib;libfcgi.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Configuration);\fcgi-2.4.0-VC9\Win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Console</SubSystem>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\shibauthorizer___Win32_Debug/shibauthorizer.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>xerces-c_3D.lib;xmltooling1D.lib;libfcgi.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Platform)\$(Configuration);\fcgi-2.4.0-VC9\Win32\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Console</SubSystem>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="resource.h" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="shibauthorizer.cpp">\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+    </ClCompile>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ResourceCompile Include="shibauthorizer.rc" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\shibsp\shibsp-lite.vcxproj">\r
+      <Project>{81f0f7a6-dc36-46ef-957f-f9e81d4403f7}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index c99d945..0ce5744 100644 (file)
@@ -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 (file)
index 0000000..0768e86
--- /dev/null
@@ -0,0 +1,237 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{B2423DCE-048D-4BAA-9AB9-F5D1FCDD3D25}</ProjectGuid>\r
+    <RootNamespace>shibresponder</RootNamespace>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectName)-$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(ProjectName)-$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectName)-$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(ProjectName)-$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\shibresponder___Win32_Release/shibresponder.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>xerces-c_3.lib;xmltooling1.lib;libfcgi.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Configuration);\fcgi-2.4.0-VC9\Win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\shibresponder___Win32_Release/shibresponder.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>xerces-c_3.lib;xmltooling1.lib;libfcgi.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Platform)\$(Configuration);\fcgi-2.4.0-VC9\Win32\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\shibresponder___Win32_Release/shibresponder.pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>.\shibresponder___Win32_Debug/shibresponder.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>xerces-c_3D.lib;xmltooling1D.lib;libfcgi.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Configuration);\fcgi-2.4.0-VC9\Win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Console</SubSystem>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\shibresponder___Win32_Debug/shibresponder.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>xerces-c_3D.lib;xmltooling1D.lib;libfcgi.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Platform)\$(Configuration);\fcgi-2.4.0-VC9\Win32\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Console</SubSystem>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="resource.h" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="shibresponder.cpp">\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+    </ClCompile>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ResourceCompile Include="shibresponder.rc" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\shibsp\shibsp-lite.vcxproj">\r
+      <Project>{81f0f7a6-dc36-46ef-957f-f9e81d4403f7}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index 95948af..58bc86b 100644 (file)
@@ -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<string,site_t> 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<string,site_t>(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<char*>(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="<HTML><HEAD><TITLE>Shibboleth Filter Error</TITLE></HEAD><BODY>"
@@ -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="<HTML><HEAD><TITLE>Shibboleth Error</TITLE></HEAD><BODY><H1>Shibboleth Error</H1>";
@@ -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<XMLByte*>(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 (file)
index 0000000..2ca8c02
--- /dev/null
@@ -0,0 +1,243 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{87C25D4E-8D19-4513-B0BA-BC668BC2DEE3}</ProjectGuid>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>.\Release/isapi_shib.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;WIN32;_WINDOWS;WIN32_LEAN_AND_MEAN;_WIN32_WINNT=0x0400;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalOptions>/export:GetExtensionVersion /export:GetFilterVersion /export:TerminateExtension /export:TerminateFilter /export:HttpFilterProc /export:HttpExtensionProc %(AdditionalOptions)</AdditionalOptions>\r
+      <AdditionalDependencies>xerces-c_3.lib;xmltooling-lite1.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\Release/isapi_shib.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;WIN32;_WINDOWS;WIN32_LEAN_AND_MEAN;_WIN32_WINNT=0x0400;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalOptions>/export:GetExtensionVersion /export:GetFilterVersion /export:TerminateExtension /export:TerminateFilter /export:HttpFilterProc /export:HttpExtensionProc %(AdditionalOptions)</AdditionalOptions>\r
+      <AdditionalDependencies>xerces-c_3.lib;xmltooling-lite1.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\Release/isapi_shib.pdb</ProgramDatabaseFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>.\Debug/isapi_shib.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_WINDOWS;WIN32;_DEBUG;WIN32_LEAN_AND_MEAN;_WIN32_WINNT=0x0400;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalOptions>/export:GetExtensionVersion /export:GetFilterVersion /export:TerminateExtension /export:TerminateFilter /export:HttpFilterProc /export:HttpExtensionProc %(AdditionalOptions)</AdditionalOptions>\r
+      <AdditionalDependencies>xerces-c_3D.lib;xmltooling-lite1D.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\Debug/isapi_shib.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_WINDOWS;WIN32;_DEBUG;WIN32_LEAN_AND_MEAN;_WIN32_WINNT=0x0400;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalOptions>/export:GetExtensionVersion /export:GetFilterVersion /export:TerminateExtension /export:TerminateFilter /export:HttpFilterProc /export:HttpExtensionProc %(AdditionalOptions)</AdditionalOptions>\r
+      <AdditionalDependencies>xerces-c_3D.lib;xmltooling-lite1D.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="isapi_shib.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ResourceCompile Include="isapi_shib.rc" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="resource.h" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\shibsp\shibsp-lite.vcxproj">\r
+      <Project>{81f0f7a6-dc36-46ef-957f-f9e81d4403f7}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index fa11fd8..db992f5 100644 (file)
@@ -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
index 278fbde..7222503 100644 (file)
@@ -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 (file)
index 0000000..ae86cb8
--- /dev/null
@@ -0,0 +1,198 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{666A63A7-983F-4C19-8411-207F24305198}</ProjectGuid>\r
+    <RootNamespace>memcachestore</RootNamespace>\r
+    <Keyword>Win32Proj</Keyword>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />\r
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.so</TargetExt>\r
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.so</TargetExt>\r
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.so</TargetExt>\r
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.so</TargetExt>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-xmltooling;..\..\..\libmemcached;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>log4shib1D.lib;xerces-c_3D.lib;xmltooling1D.lib;memcached.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Configuration);..\..\..\libmemcached\visualc\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Windows</SubSystem>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\cpp-xmltooling;..\..\..\libmemcached\visualc\toolset;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>log4shib1D.lib;xerces-c_3D.lib;xmltooling1D.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Windows</SubSystem>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-xmltooling;..\..\..\libmemcached;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <Link>\r
+      <AdditionalDependencies>log4shib1.lib;xerces-c_3.lib;xmltooling1.lib;memcached.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Configuration);..\..\..\libmemcached\visualc\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Windows</SubSystem>\r
+      <OptimizeReferences>true</OptimizeReferences>\r
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>..\..\cpp-xmltooling;..\..\..\libmemcached\visualc\toolset;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <Link>\r
+      <AdditionalDependencies>log4shib1.lib;xerces-c_3.lib;xmltooling1.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Windows</SubSystem>\r
+      <OptimizeReferences>true</OptimizeReferences>\r
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <None Include="Makefile.am" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="memcache-store.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ResourceCompile Include="memcache-store.rc" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="resource.h" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\shibsp\shibsp.vcxproj">\r
+      <Project>{81f0f7a6-dc36-46ef-957f-f9e81d4403f6}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index 82c65c0..17b36f5 100644 (file)
@@ -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
index 8914e7e..2c67868 100644 (file)
@@ -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<char*>(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<bool,bool> getBool(const char* name, const char* ns=NULL) const;
-    pair<bool,const char*> getString(const char* name, const char* ns=NULL) const;
-    pair<bool,const XMLCh*> getXMLString(const char* name, const char* ns=NULL) const;
-    pair<bool,unsigned int> getUnsignedInt(const char* name, const char* ns=NULL) const;
-    pair<bool,int> getInt(const char* name, const char* ns=NULL) const;
+    pair<bool,bool> getBool(const char* name, const char* ns=nullptr) const;
+    pair<bool,const char*> getString(const char* name, const char* ns=nullptr) const;
+    pair<bool,const XMLCh*> getXMLString(const char* name, const char* ns=nullptr) const;
+    pair<bool,unsigned int> getUnsignedInt(const char* name, const char* ns=nullptr) const;
+    pair<bool,int> getInt(const char* name, const char* ns=nullptr) const;
     void getAll(map<string,const char*>& 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<bool,const char*> SunRequestMapper::getString(const char* name, const char*
                 return make_pair(true,param);
         }
     }
-    return s ? s->getString(name,ns) : pair<bool,const char*>(false,NULL);
+    return s ? s->getString(name,ns) : pair<bool,const char*>(false,nullptr);
 }
 
 pair<bool,const XMLCh*> SunRequestMapper::getXMLString(const char* name, const char* ns) const
 {
     const PropertySet* s=reinterpret_cast<const PropertySet*>(m_propsKey->getData());
-    return s ? s->getXMLString(name,ns) : pair<bool,const XMLCh*>(false,NULL);
+    return s ? s->getXMLString(name,ns) : pair<bool,const XMLCh*>(false,nullptr);
 }
 
 pair<bool,unsigned int> SunRequestMapper::getUnsignedInt(const char* name, const char* ns) const
@@ -638,7 +638,7 @@ pair<bool,unsigned int> SunRequestMapper::getUnsignedInt(const char* name, const
         // Override int properties.
         const char* param=pblock_findval(name,stn->m_pb);
         if (param)
-            return pair<bool,unsigned int>(true,strtol(param,NULL,10));
+            return pair<bool,unsigned int>(true,strtol(param,nullptr,10));
     }
     return s ? s->getUnsignedInt(name,ns) : pair<bool,unsigned int>(false,0);
 }
@@ -678,11 +678,11 @@ void SunRequestMapper::getAll(map<string,const char*>& properties) const
 const PropertySet* SunRequestMapper::getPropertySet(const char* name, const char* ns) const
 {
     const PropertySet* s=reinterpret_cast<const PropertySet*>(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<const PropertySet*>(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 (file)
index 0000000..431c080
--- /dev/null
@@ -0,0 +1,240 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{1396D80A-8672-4224-9B02-95F3F4207CDB}</ProjectGuid>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>.\Release/nsapi_shib.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_WINDOWS;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>xerces-c_3.lib;xmltooling-lite1.lib;ns-httpd30.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\Release/nsapi_shib.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_WINDOWS;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>xerces-c_3.lib;xmltooling-lite1.lib;ns-httpd30.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ProgramDatabaseFile>.\Release/nsapi_shib.pdb</ProgramDatabaseFile>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>.\Debug/nsapi_shib.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_WINDOWS;WIN32;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>xerces-c_3D.lib;xmltooling-lite1D.lib;ns-httpd30.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>.\Debug/nsapi_shib.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_WINDOWS;WIN32;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>xerces-c_3D.lib;xmltooling-lite1D.lib;ns-httpd30.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <None Include="Makefile.am" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="nsapi_shib.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ResourceCompile Include="nsapi_shib.rc" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="resource.h" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\shibsp\shibsp-lite.vcxproj">\r
+      <Project>{81f0f7a6-dc36-46ef-957f-f9e81d4403f7}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index c18fe5b..774f423 100644 (file)
@@ -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
index 546eefc..0e9c089 100644 (file)
@@ -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<int,int> getVersion(SQLHDBC);
-        pair<bool,bool> log_error(SQLHANDLE handle, SQLSMALLINT htype, const char* checkfor=NULL);
+        pair<bool,bool> 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<int,int> 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<int,int>(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 (file)
index 0000000..d21b7b3
--- /dev/null
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{666A63A7-983F-4C19-8411-207F24305197}</ProjectGuid>\r
+    <RootNamespace>odbcstore</RootNamespace>\r
+    <Keyword>Win32Proj</Keyword>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />\r
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.so</TargetExt>\r
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.so</TargetExt>\r
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.so</TargetExt>\r
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.so</TargetExt>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>log4shib1D.lib;xerces-c_3D.lib;xmltooling1D.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Windows</SubSystem>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>log4shib1D.lib;xerces-c_3D.lib;xmltooling1D.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Windows</SubSystem>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <Link>\r
+      <AdditionalDependencies>log4shib1.lib;xerces-c_3.lib;xmltooling1.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Windows</SubSystem>\r
+      <OptimizeReferences>true</OptimizeReferences>\r
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <Link>\r
+      <AdditionalDependencies>log4shib1.lib;xerces-c_3.lib;xmltooling1.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Windows</SubSystem>\r
+      <OptimizeReferences>true</OptimizeReferences>\r
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <None Include="Makefile.am" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="odbc-store.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ResourceCompile Include="odbc-store.rc" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="resource.h" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index 2563e00..909f343 100644 (file)
@@ -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
index eee5c8b..054aa45 100644 (file)
@@ -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.
  */
 
 /*
- * shar.cpp -- the shibd "main" code.  All the functionality is elsewhere
- *
- * Created By: Derek Atkins <derek@ihtfp.com>
- *
- * $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 (file)
index 0000000..33a0836
--- /dev/null
@@ -0,0 +1,223 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{F13141B5-6C87-40BB-8D4E-5CC56EBB4C59}</ProjectGuid>\r
+    <RootNamespace>shibd</RootNamespace>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-opensaml2;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>wsock32.lib;log4shib1.lib;xmltooling1.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-opensaml2\$(Configuration);..\..\cpp-xmltooling\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-opensaml2;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>wsock32.lib;log4shib1.lib;xmltooling1.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-opensaml2\$(Platform)\$(Configuration);..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-opensaml2;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_CONSOLE;WIN32;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>wsock32.lib;log4shib1D.lib;xmltooling1D.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-opensaml2\$(Configuration);..\..\cpp-xmltooling\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Console</SubSystem>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-opensaml2;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_CONSOLE;WIN32;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>wsock32.lib;log4shib1D.lib;xmltooling1D.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-opensaml2\$(Platform)\$(Configuration);..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Console</SubSystem>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <None Include="Makefile.am" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="resource.h" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="shibd.cpp" />\r
+    <ClCompile Include="shibd_win32.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ResourceCompile Include="shibd.rc" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\shibsp\shibsp.vcxproj">\r
+      <Project>{81f0f7a6-dc36-46ef-957f-f9e81d4403f6}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index 7069a91..96315d1 100644 (file)
@@ -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.
 
 /*
  * 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);
 }
index eb0c320..5fefc01 100644 (file)
@@ -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<CGIParser::walker,CGIParser::walker> bounds=m_parser->getParameters(name);
-    return (bounds.first==bounds.second) ? NULL : bounds.first->second;
+    return (bounds.first==bounds.second) ? nullptr : bounds.first->second;
 }
 
 vector<const char*>::size_type AbstractSPRequest::getParameters(const char* name, vector<const char*>& 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<bool,bool> 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;
index 318f68c..6d497bd 100644 (file)
@@ -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<const char*>::size_type getParameters(const char* name, std::vector<const char*>& 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;
 
index 676b24c..9669a3b 100644 (file)
@@ -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<std::string,const char*> getCookieNameProps(const char* prefix, time_t* lifetime=NULL) const;
+        virtual std::pair<std::string,const char*> 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<const XMLCh*>* 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;
 
index 0061c00..334f513 100644 (file)
@@ -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
index c5c8d4e..7a4585b 100644 (file)
@@ -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<unsigned int>(std::time(NULL)));
+    srand(static_cast<unsigned int>(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<xercesc::DOMDocument> 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
index 3764eda..e8afff6 100644 (file)
@@ -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
index 6ce9eff..af95123 100644 (file)
@@ -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);
 
index fa6ac37..e166771 100644 (file)
@@ -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<const opensaml::saml2md::MetadataException*>(tp.getRichException())!=NULL;
+        bool mderror = dynamic_cast<const opensaml::saml2md::MetadataException*>(tp.getRichException())!=nullptr;
         bool accesserror = (strcmp(page, "access")==0);
-        pair<bool,const char*> redirectErrors = pair<bool,const char*>(false,NULL);
-        pair<bool,const char*> pathname = pair<bool,const char*>(false,NULL);
+        pair<bool,const char*> redirectErrors = pair<bool,const char*>(false,nullptr);
+        pair<bool,const char*> pathname = pair<bool,const char*>(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<bool,long> 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<bool,long> 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<opensaml::RetryableProfileException*>(&e)==NULL)
+            if (dynamic_cast<opensaml::RetryableProfileException*>(&e)==nullptr)
                 throw;
         }
 
@@ -256,7 +256,7 @@ pair<bool,long> 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<bool,long> 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<bool,long> 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<bool,long> 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<bool,long> ServiceProvider::doExport(SPRequest& request, bool requireSessio
         pair<bool,bool> exp=settings.first->getBool("exportAssertion");
         if (exp.first && exp.second) {
             const PropertySet* sessions=app->getPropertySet("Sessions");
-            pair<bool,const char*> exportLocation = sessions ? sessions->getString("exportLocation") : pair<bool,const char*>(false,NULL);
+            pair<bool,const char*> exportLocation = sessions ? sessions->getString("exportLocation") : pair<bool,const char*>(false,nullptr);
             if (!exportLocation.first)
                 log.warn("can't export assertions without an exportLocation Sessions property");
             else {
@@ -500,7 +500,7 @@ pair<bool,long> 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 {
index 2d0694a..2a4e4b7 100644 (file)
@@ -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;
 
index 38fa126..932f9de 100644 (file)
@@ -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<const opensaml::Assertion*>* tokens=NULL,
-            const std::vector<Attribute*>* 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<const opensaml::Assertion*>* tokens=nullptr,
+            const std::vector<Attribute*>* 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. */
index 61a35fb..7ad21a0 100644 (file)
@@ -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.
index 8b99f45..ceedaef 100644 (file)
@@ -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<std::string>::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);
         }
     }
index 39dae79..c734909 100644 (file)
@@ -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;
 
index a4ffd04..c5c9764 100644 (file)
@@ -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<std::string>& ids,
             const xmltooling::XMLObject* xmlObject,
-            const char* assertingParty=NULL,
-            const char* relyingParty=NULL
+            const char* assertingParty=nullptr,
+            const char* relyingParty=nullptr
             ) const=0;
     };
 
index d996be3..33509e3 100644 (file)
@@ -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<string>& ids, const XMLObject* xmlObject, const char* assertingParty=NULL, const char* relyingParty=NULL
+            const vector<string>& 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<xmltooling::QName> 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<xmltooling::QName> 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<ExtensibleAttribute> 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<pair<xstring,xstring>,string>::const_iterator mapping;
-    DDF obj = DDF(NULL).structure();
+    DDF obj = DDF(nullptr).structure();
 
     if (nameit) {
         // Name this structure.
index cede806..ad04d98 100644 (file)
@@ -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)
index 741d5da..c9e966e 100644 (file)
@@ -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<string>& ids, const XMLObject* xmlObject, const char* assertingParty=NULL, const char* relyingParty=NULL
+            const vector<string>& 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<SimpleAttribute> 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());
 }
index 82ff313..6b03fae 100644 (file)
@@ -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<string>& ids, const XMLObject* xmlObject, const char* assertingParty=NULL, const char* relyingParty=NULL
+            const vector<string>& 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<const NameIDType*>(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(
index ab72dfb..1751341 100644 (file)
@@ -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<string>& ids, const XMLObject* xmlObject, const char* assertingParty=NULL, const char* relyingParty=NULL
+            const vector<string>& 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<NameIDAttribute> 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<const AttributeExtensibleXMLObject*>(*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;
 }
index 424ee7c..42ffd25 100644 (file)
@@ -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<string>& ids, const XMLObject* xmlObject, const char* assertingParty=NULL, const char* relyingParty=NULL
+            const vector<string>& 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<ScopedAttribute> scoped(new ScopedAttribute(ids, m_delimiter));
     vector< pair<string,string> >& dest = scoped->getValues();
     vector<XMLObject*>::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<const AttributeExtensibleXMLObject*>(*v);
-                    xmlscope = aexo ? aexo->getAttribute(scopeqname) : NULL;
+                    xmlscope = aexo ? aexo->getAttribute(scopeqname) : nullptr;
                     if (xmlscope && *xmlscope) {
                         scope = toUTF8(xmlscope);
                         dest.push_back(pair<string,string>(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<const NameID*>(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());
 }
index 11af5c8..1a5c394 100644 (file)
@@ -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<string>::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;
 }
index c19fc6b..2abb399 100644 (file)
@@ -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<string>& ids, const XMLObject* xmlObject, const char* assertingParty=NULL, const char* relyingParty=NULL
+            const vector<string>& 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<const NameID*>(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());
 }
index 38bc13d..79db4f2 100644 (file)
@@ -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<string>::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;
 }
index 4c99938..8c192c5 100644 (file)
@@ -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<string>& ids, const XMLObject* xmlObject, const char* assertingParty=NULL, const char* relyingParty=NULL
+            const vector<string>& 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<XMLObject*>::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());
 }
index 888a324..636e8fa 100644 (file)
@@ -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<Attribute*>& 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();
index 422a725..012c1a6 100644 (file)
@@ -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;
 
index 828071d..fc84e25 100644 (file)
@@ -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 pair<const FilterPolicyContext*,const DOM
     MatchFunctor* func;
     const DOMElement* e = XMLHelper::getFirstChildElement(p.second);
     while (e) {
-        func = NULL;
+        func = nullptr;
         if (XMLHelper::isNodeNamed(e, shibspconstants::SHIB2ATTRIBUTEFILTER_MF_BASIC_NS, Rule)) {
             func = buildFunctor(e, p.first);
         }
         else if (XMLHelper::isNodeNamed(e, shibspconstants::SHIB2ATTRIBUTEFILTER_MF_BASIC_NS, RuleReference)) {
-            auto_ptr_char ref(e->getAttributeNS(NULL, _ref));
+            auto_ptr_char ref(e->getAttributeNS(nullptr, _ref));
             if (ref.get() && *ref.get()) {
                 multimap<string,MatchFunctor*>::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 pair<const FilterPolicyContext*,const DOM
 MatchFunctor* AndMatchFunctor::buildFunctor(const DOMElement* e, const FilterPolicyContext* functorMap)
 {
     // We'll track and map IDs just for consistency, but don't require them or worry about dups.
-    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 (*id && functorMap->getMatchFunctors().count(id))
         id = "";
index 9701023..c85fcf6 100644 (file)
@@ -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.");
         }
index b421a11..fa1d029 100644 (file)
@@ -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());
index e4cb12d..220ac8a 100644 (file)
@@ -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)); 
         }
 
index 8c37255..e03c12a 100644 (file)
@@ -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.");
         }
index 171a898..b169394 100644 (file)
@@ -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());
index 82cb30f..ee7a481 100644 (file)
@@ -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)); 
         }
 
index 5f57d71..96bf8dc 100644 (file)
@@ -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<XMLObject*>& exts = ext->getUnknownXMLObjects();
index 3b33ac1..b4470b0 100644 (file)
@@ -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());
index 9a1cdfc..a62121d 100644 (file)
@@ -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)); 
         }
 
index ac4952b..d49ff7e 100644 (file)
@@ -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());
index 7721fe8..16b2725 100644 (file)
@@ -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"
                     );
index d7e6665..fc3e365 100644 (file)
@@ -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());
index f52843a..27b89ae 100644 (file)
@@ -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)); 
         }
 
index 67ba166..06dada7 100644 (file)
@@ -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<EntityDescriptor*>(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
index f9ba21e..ca5dbef 100644 (file)
@@ -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));
index a0f07b4..142041c 100644 (file)
@@ -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<const FilterPolicyContext*,const DOMElement*>& p) : m_functor(NULL)
+NotMatchFunctor::NotMatchFunctor(const pair<const FilterPolicyContext*,const DOMElement*>& p) : m_functor(nullptr)
 {
     const DOMElement* e = XMLHelper::getFirstChildElement(p.second);
     if (e) {
@@ -80,10 +80,10 @@ NotMatchFunctor::NotMatchFunctor(const pair<const FilterPolicyContext*,const DOM
             m_functor = buildFunctor(e, p.first);
         }
         else if (XMLHelper::isNodeNamed(e, shibspconstants::SHIB2ATTRIBUTEFILTER_MF_BASIC_NS, RuleReference)) {
-            auto_ptr_char ref(e->getAttributeNS(NULL, _ref));
+            auto_ptr_char ref(e->getAttributeNS(nullptr, _ref));
             if (ref.get() && *ref.get()) {
                 multimap<string,MatchFunctor*>::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 pair<const FilterPolicyContext*,const DOM
 MatchFunctor* NotMatchFunctor::buildFunctor(const DOMElement* e, const FilterPolicyContext* functorMap)
 {
     // We'll track and map IDs just for consistency, but don't require them or worry about dups.
-    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 (*id && functorMap->getMatchFunctors().count(id))
         id = "";
index f1630c3..c2baf67 100644 (file)
@@ -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);
         }
index 7b260c2..4abe24f 100644 (file)
@@ -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 pair<const FilterPolicyContext*,const DOMEl
     MatchFunctor* func;
     const DOMElement* e = XMLHelper::getFirstChildElement(p.second);
     while (e) {
-        func = NULL;
+        func = nullptr;
         if (XMLHelper::isNodeNamed(e, shibspconstants::SHIB2ATTRIBUTEFILTER_MF_BASIC_NS, Rule)) {
             func = buildFunctor(e, p.first);
         }
         else if (XMLHelper::isNodeNamed(e, shibspconstants::SHIB2ATTRIBUTEFILTER_MF_BASIC_NS, RuleReference)) {
-            auto_ptr_char ref(e->getAttributeNS(NULL, _ref));
+            auto_ptr_char ref(e->getAttributeNS(nullptr, _ref));
             if (ref.get() && *ref.get()) {
                 multimap<string,MatchFunctor*>::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 pair<const FilterPolicyContext*,const DOMEl
 MatchFunctor* OrMatchFunctor::buildFunctor(const DOMElement* e, const FilterPolicyContext* functorMap)
 {
     // We'll track and map IDs just for consistency, but don't require them or worry about dups.
-    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 (*id && functorMap->getMatchFunctors().count(id))
         id = "";
index a42c883..c522f48 100644 (file)
@@ -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<const MatchFunctor*,const MatchFunctor*> > 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<string,MatchFunctor*>::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<const MatchFunctor*,const MatchFunctor*> > 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<const MatchFunctor*,const MatchFunctor*>(NULL,NULL));
+        return make_pair(string(),pair<const MatchFunctor*,const MatchFunctor*>(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<const MatchFunctor*,const MatchFunctor*>(NULL,NULL));
+            return make_pair(string(),pair<const MatchFunctor*,const MatchFunctor*>(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<const MatchFunctor*,const MatchFunctor*> > 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<string,MatchFunctor*>::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<const MatchFunctor*,const MatchFunctor*> > 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<string,MatchFunctor*>::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<const MatchFunctor*,const MatchFunctor*> > 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<const MatchFunctor*,const MatchFunctor*> >(string(),pair<const MatchFunctor*,const MatchFunctor*>(NULL,NULL));
+    return pair< string,pair<const MatchFunctor*,const MatchFunctor*> >(string(),pair<const MatchFunctor*,const MatchFunctor*>(nullptr,nullptr));
 }
 
 void XMLFilterImpl::filterAttributes(const FilteringContext& context, vector<Attribute*>& attributes) const
@@ -464,7 +464,7 @@ pair<bool,DOMElement*> XMLFilter::background_load()
     pair<bool,DOMElement*> raw = ReloadableXMLFile::load();
 
     // If we own it, wrap it.
-    XercesJanitor<DOMDocument> docjanitor(raw.first ? raw.second->getOwnerDocument() : NULL);
+    XercesJanitor<DOMDocument> docjanitor(raw.first ? raw.second->getOwnerDocument() : nullptr);
 
     XMLFilterImpl* impl = new XMLFilterImpl(raw.second, m_log);
 
@@ -478,5 +478,5 @@ pair<bool,DOMElement*> XMLFilter::background_load()
     delete m_impl;
     m_impl = impl;
 
-    return make_pair(false,(DOMElement*)NULL);
+    return make_pair(false,(DOMElement*)nullptr);
 }
index bcf0232..9f3f773 100644 (file)
@@ -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<const opensaml::Assertion*>* tokens=NULL,
-            const std::vector<Attribute*>* attributes=NULL
+            const opensaml::saml2::NameID* nameid=nullptr,
+            const XMLCh* authncontext_class=nullptr,
+            const XMLCh* authncontext_decl=nullptr,
+            const std::vector<const opensaml::Assertion*>* tokens=nullptr,
+            const std::vector<Attribute*>* attributes=nullptr
             ) const=0;
 
         /**
index d46fdff..e80543b 100644 (file)
@@ -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));
index 4dd7702..0cb6b07 100644 (file)
@@ -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<const opensaml::Assertion*>* tokens,
             const vector<shibsp::Attribute*>* 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<const opensaml::Assertion*>* tokens=NULL,
-            const vector<shibsp::Attribute*>* attributes=NULL
+            const NameID* nameid=nullptr,
+            const XMLCh* authncontext_class=nullptr,
+            const XMLCh* authncontext_decl=nullptr,
+            const vector<const opensaml::Assertion*>* tokens=nullptr,
+            const vector<shibsp::Attribute*>* 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));
index f98f2a2..ba9b642 100644 (file)
@@ -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<EntityDescriptor*>(issuer->getParent()) : NULL
+                            issuer ? dynamic_cast<EntityDescriptor*>(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());
index 0cb4142..bb397f3 100644 (file)
@@ -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());
index f080088..5013173 100644 (file)
@@ -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<const opensaml::Assertion*>* 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<const opensaml::Assertion*>* 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<const opensaml::Assertion*>* tokens=NULL,
-            const vector<shibsp::Attribute*>* attributes=NULL
+            const NameID* nameid=nullptr,
+            const XMLCh* authncontext_class=nullptr,
+            const XMLCh* authncontext_decl=nullptr,
+            const vector<const opensaml::Assertion*>* tokens=nullptr,
+            const vector<shibsp::Attribute*>* 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<bool,bool> 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<AttributeService*>& endpoints=AA->getAttributeServices();
     for (vector<AttributeService*>::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<saml1::AttributeStatement*>::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<bool,bool> signedAssertions = relyingParty->getBool("requireSignedAssertions");
     pair<bool,const char*> 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<AttributeService*>& endpoints=AA->getAttributeServices();
     for (vector<AttributeService*>::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<saml2::Assertion*>& assertions = const_cast<const saml2p::Response*>(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<NameID> nameIDwrapper(ownedName ? respName : NULL);
+            auto_ptr<NameID> nameIDwrapper(ownedName ? respName : nullptr);
 
             if (!respName || !XMLString::equals(respName->getName(), ctx.getNameID()->getName()) ||
                 !XMLString::equals(respName->getFormat(), ctx.getNameID()->getFormat()) ||
index 5492b1f..7f8cc26 100644 (file)
@@ -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<const opensaml::Assertion*>* tokens=NULL,
-            const vector<shibsp::Attribute*>* attributes=NULL
+            const NameID* nameid=nullptr,
+            const XMLCh* entityID=nullptr,
+            const XMLCh* authncontext_class=nullptr,
+            const XMLCh* authncontext_decl=nullptr,
+            const vector<const opensaml::Assertion*>* tokens=nullptr,
+            const vector<shibsp::Attribute*>* 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<XMLCh*>(authncontext_class)),
                 m_decl(const_cast<XMLCh*>(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<const opensaml::Assertion*>* tokens=NULL,
-            const vector<shibsp::Attribute*>* attributes=NULL
+            const NameID* nameid=nullptr,
+            const XMLCh* authncontext_class=nullptr,
+            const XMLCh* authncontext_decl=nullptr,
+            const vector<const opensaml::Assertion*>* tokens=nullptr,
+            const vector<shibsp::Attribute*>* 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<const EntityDescriptor*,const RoleDescriptor*> mdresult =
         (m_metadata ? m_metadata : application.getMetadataProvider())->getEntityDescriptor(mc);
     if (!mdresult.first) {
@@ -344,7 +344,7 @@ bool SimpleAggregationResolver::doQuery(SimpleAggregationContext& ctx, const cha
     pair<bool,bool> signedAssertions = relyingParty->getBool("requireSignedAssertions");
     pair<bool,const char*> 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<AttributeService*>& endpoints=AA->getAttributeServices();
     for (vector<AttributeService*>::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<saml2::Assertion*>& assertions = const_cast<const saml2p::Response*>(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<NameID> nameIDwrapper(ownedName ? respName : NULL);
+            auto_ptr<NameID> 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<SimpleAggregationContext&>(ctx);
 
     // First we manufacture the appropriate NameID to use.
-    NameID* n=NULL;
+    NameID* n=nullptr;
     for (vector<string>::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<multimap<string,const Attribute*>::const_iterator, multimap<string,const Attribute*>::const_iterator> range =
index 2ff01c7..5746cbb 100644 (file)
@@ -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<saml2::Attribute*>& attrs = container->getAttributes();
         for (vector<saml2::Attribute*>::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<const EntityDescriptor*>(policy.getIssuerMetadata()->getParent()) : NULL;
-                    auto_ptr_char inlineAssertingParty(inlineEntity ? inlineEntity->getEntityID() : NULL);
+                        policy.getIssuerMetadata() ? dynamic_cast<const EntityDescriptor*>(policy.getIssuerMetadata()->getParent()) : nullptr;
+                    auto_ptr_char inlineAssertingParty(inlineEntity ? inlineEntity->getEntityID() : nullptr);
                     relyingParty = application.getRelyingParty(inlineEntity)->getString("entityID").second;
                     const vector<saml2::Attribute*>& attrs2 =
                         const_cast<const saml2::AttributeStatement*>(tokencopy->getAttributeStatements().front())->getAttributes();
@@ -830,14 +830,14 @@ void XMLExtractor::extractAttributes(
     if (!m_impl)
         return;
 
-    const EntityDescriptor* entity = issuer ? dynamic_cast<const EntityDescriptor*>(issuer->getParent()) : NULL;
+    const EntityDescriptor* entity = issuer ? dynamic_cast<const EntityDescriptor*>(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<const saml2::AttributeStatement*>(&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<saml2::EncryptedAttribute*>& encattrs = statement2->getEncryptedAttributes();
@@ -848,7 +848,7 @@ void XMLExtractor::extractAttributes(
 
         const saml1::AttributeStatement* statement1 = dynamic_cast<const saml1::AttributeStatement*>(&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<const saml2::Assertion*>(&xmlObject);
         if (token2) {
-            auto_ptr_char assertingParty(entity ? entity->getEntityID() : NULL);
+            auto_ptr_char assertingParty(entity ? entity->getEntityID() : nullptr);
             const vector<saml2::AttributeStatement*>& statements = token2->getAttributeStatements();
             for (vector<saml2::AttributeStatement*>::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<const saml1::Assertion*>(&xmlObject);
         if (token1) {
-            auto_ptr_char assertingParty(entity ? entity->getEntityID() : NULL);
+            auto_ptr_char assertingParty(entity ? entity->getEntityID() : nullptr);
             const vector<saml1::AttributeStatement*>& statements = token1->getAttributeStatements();
             for (vector<saml1::AttributeStatement*>::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<const RoleDescriptor*>(&xmlObject);
-        const EntityDescriptor* entityToExtract = roleToExtract ? dynamic_cast<const EntityDescriptor*>(roleToExtract->getParent()) : NULL;
+        const EntityDescriptor* entityToExtract = roleToExtract ? dynamic_cast<const EntityDescriptor*>(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<const ObservableMetadataProvider*>(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<const saml2::Attribute*>(&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<const NameID*>(&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<const NameIdentifier*>(&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<bool,DOMElement*> XMLExtractor::background_load()
     pair<bool,DOMElement*> raw = ReloadableXMLFile::load();
 
     // If we own it, wrap it.
-    XercesJanitor<DOMDocument> docjanitor(raw.first ? raw.second->getOwnerDocument() : NULL);
+    XercesJanitor<DOMDocument> docjanitor(raw.first ? raw.second->getOwnerDocument() : nullptr);
 
     XMLExtractorImpl* impl = new XMLExtractorImpl(raw.second, m_log);
 
@@ -1002,5 +1002,5 @@ pair<bool,DOMElement*> XMLExtractor::background_load()
     delete m_impl;
     m_impl = impl;
 
-    return make_pair(false,(DOMElement*)NULL);
+    return make_pair(false,(DOMElement*)nullptr);
 }
index 3e18aff..d05e00a 100644 (file)
@@ -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<ArtifactResolutionService*>& endpoints=idpDescriptor.getArtifactResolutionServices();
     for (vector<ArtifactResolutionService*>::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<ArtifactResolutionService*>& endpoints=ssoDescriptor.getArtifactResolutionServices();
     for (vector<ArtifactResolutionService*>::const_iterator ep=endpoints.begin(); !response && ep!=endpoints.end(); ++ep) {
         try {
index e12f4f0..c04ff52 100644 (file)
@@ -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<Signature*> 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();
 }
 
index 78f3183..c9b0e59 100644 (file)
@@ -73,8 +73,8 @@ namespace shibsp {
         AbstractHandler(
             const xercesc::DOMElement* e,
             xmltooling::logging::Category& log,
-            xercesc::DOMNodeFilter* filter=NULL,
-            const std::map<std::string,std::string>* remapper=NULL
+            xercesc::DOMNodeFilter* filter=nullptr,
+            const std::map<std::string,std::string>* 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<bool,bool> 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<bool,const char*> 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<bool,unsigned int> 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<bool,int> getInt(const char* name, const SPRequest& request, unsigned int type=HANDLER_PROPERTY_ALL) const;
 
index 4354e97..bbdafd4 100644 (file)
@@ -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<std::string,std::string>* remapper=NULL
+            xercesc::DOMNodeFilter* filter=nullptr,
+            const std::map<std::string,std::string>* 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<const opensaml::Assertion*>* 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<const opensaml::Assertion*>* tokens=nullptr
             ) const;
 
     public:
index 7040500..e23f7db 100644 (file)
@@ -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<std::string,std::string>* params=NULL
+            const std::map<std::string,std::string>* 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;
 
         /**
index d7bdd8a..3511af6 100644 (file)
@@ -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<std::string>* headers=NULL, bool certs=false) const;
+        DDF wrap(const SPRequest& request, const std::vector<std::string>* headers=nullptr, bool certs=false) const;
         
         /**
          * Unwraps a response by examining an incoming data flow to determine
index 6e1a0ba..e8e8b55 100644 (file)
@@ -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<string,string>* 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<const EntityDescriptor*>(role->getParent()) : NULL;
+    const EntityDescriptor* entity = role ? dynamic_cast<const EntityDescriptor*>(role->getParent()) : nullptr;
     const PropertySet* relyingParty = application.getRelyingParty(entity);
     pair<bool,const char*> 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<bool,const char*> keyName = relyingParty->getString("keyName");
             pair<bool,const XMLCh*> 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<CGIParser::walker,CGIParser::walker> params = cgi.getParameters(NULL);
+            pair<CGIParser::walker,CGIParser::walker> params = cgi.getParameters(nullptr);
             if (params.first == params.second)
                 return DDF("parameters").list();
             DDF child;
@@ -754,7 +754,7 @@ pair<bool,const char*> AbstractHandler::getString(const char* name, const SPRequ
         return getString(name);
     }
 
-    return pair<bool,const char*>(false,NULL);
+    return pair<bool,const char*>(false,nullptr);
 }
 
 pair<bool,unsigned int> AbstractHandler::getUnsignedInt(const char* name, const SPRequest& request, unsigned int type) const
@@ -762,7 +762,7 @@ pair<bool,unsigned int> AbstractHandler::getUnsignedInt(const char* name, const
     if (type & HANDLER_PROPERTY_REQUEST) {
         const char* param = request.getParameter(name);
         if (param && *param)
-            return pair<bool,unsigned int>(true, strtol(param,NULL,10));
+            return pair<bool,unsigned int>(true, strtol(param,nullptr,10));
     }
     
     if (type & HANDLER_PROPERTY_MAP) {
index f5d4e5e..1c1160b 100644 (file)
@@ -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<string,string>* 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<HTTPRequest> req(getRequest(in));
 
     // Wrap a response shim.
-    DDF ret(NULL);
+    DDF ret(nullptr);
     DDFJanitor jout(ret);
     auto_ptr<HTTPResponse> resp(getResponse(ret));
 
@@ -166,7 +166,7 @@ pair<bool,long> 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<Attribute*>::iterator a = resolvedAttributes.begin(); a != resolvedAttributes.end(); ++a) {
                         vector<string>& ids = (*a)->getAliases();
                         for (vector<string>::iterator id = ids.begin(); id != ids.end(); ++id)
@@ -383,7 +383,7 @@ ResolutionContext* AssertionConsumerService::resolveAttributes(
             auto_ptr<ResolutionContext> ctx(
                 resolver->createResolutionContext(
                     application,
-                    issuer ? dynamic_cast<const saml2md::EntityDescriptor*>(issuer->getParent()) : NULL,
+                    issuer ? dynamic_cast<const saml2md::EntityDescriptor*>(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);
index d842763..05204f8 100644 (file)
@@ -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<HTTPResponse> resp(getResponse(ret));
 
@@ -194,7 +194,7 @@ pair<bool,long> 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);
index 4fc6776..2475787 100644 (file)
@@ -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)));
index 468a9e9..f01cd31 100644 (file)
@@ -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)));
index 5d6b087..63e7553 100644 (file)
@@ -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<bool,long> LogoutHandler::sendLogoutPage(
 {
     string tname = string(type) + "Logout";
     const PropertySet* props = application.getPropertySet("Errors");
-    pair<bool,const char*> prop = props ? props->getString(tname.c_str()) : pair<bool,const char*>(false,NULL);
+    pair<bool,const char*> prop = props ? props->getString(tname.c_str()) : pair<bool,const char*>(false,nullptr);
     if (!prop.first) {
         tname += ".html";
         prop.second = tname.c_str();
@@ -96,14 +96,14 @@ pair<bool,long> 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<string>::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<string>::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);
index 322b7e3..feafda6 100644 (file)
@@ -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<HTTPResponse> resp(getResponse(ret));
 
@@ -234,7 +234,7 @@ pair<bool,long> 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<bool,long> 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;
index 93f21df..6a6db3a 100644 (file)
@@ -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<XSECCryptoX509*> 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<XSECCryptoX509>());
             delete m_parser;
@@ -134,7 +134,7 @@ const char* RemotedRequest::getParameter(const char* name) const
         m_parser=new CGIParser(*this);
     
     pair<CGIParser::walker,CGIParser::walker> 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<const char*>::size_type RemotedRequest::getParameters(const char* name, std::vector<const char*>& values) const
@@ -273,7 +273,7 @@ DDF RemotedHandler::wrap(const SPRequest& request, const vector<string>* headers
         if (!xvec.empty()) {
             DDF clist = in.addmember("certificates").list();
             for (vector<XSECCryptoX509*>::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<string>* headers
         if (!xvec.empty()) {
             DDF clist = in.addmember("certificates").list();
             for (vector<string>::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);
             }
         }
index 88ab9c0..b098aab 100644 (file)
@@ -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<bool,int> minor = response->getMinorVersion();
 
     // Maintain list of "legit" tokens to feed to SP subsystems.
-    const AuthenticationStatement* ssoStatement=NULL;
+    const AuthenticationStatement* ssoStatement=nullptr;
     vector<const opensaml::Assertion*> tokens;
 
     // Also track "bad" tokens that we'll cache but not use.
@@ -173,7 +173,7 @@ void SAML1Consumer::implementProtocol(
     vector<const opensaml::Assertion*> badtokens;
 
     // With this flag on, we ignore any unsigned assertions.
-    const EntityDescriptor* entity = policy.getIssuerMetadata() ? dynamic_cast<const EntityDescriptor*>(policy.getIssuerMetadata()->getParent()) : NULL;
+    const EntityDescriptor* entity = policy.getIssuerMetadata() ? dynamic_cast<const EntityDescriptor*>(policy.getIssuerMetadata()->getParent()) : nullptr;
     pair<bool,bool> 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<saml1::Assertion*>::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> nameid(n ? NameIDBuilder::buildNameID() : NULL);
+    auto_ptr<NameID> 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
         );
 }
 
index bec9c01..7d17e83 100644 (file)
@@ -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<const DOMElement*,const XMLCh*>(e,NULL)
+                getString("Binding").second,pair<const DOMElement*,const XMLCh*>(e,nullptr)
                 );
             m_decoder = SAMLConfig::getConfig().MessageDecoderManager.newPlugin(
-                getString("Binding").second,pair<const DOMElement*,const XMLCh*>(e,NULL)
+                getString("Binding").second,pair<const DOMElement*,const XMLCh*>(e,nullptr)
                 );
         }
         catch (exception&) {
@@ -180,7 +180,7 @@ pair<bool,long> 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<bool,long> 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<HTTPResponse> resp(getResponse(ret));
         
@@ -261,7 +261,7 @@ void SAML2ArtifactResolution::receive(DDF& in, ostream& out)
         pair<bool,bool> 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<bool,long> SAML2ArtifactResolution::processMessage(const Application& appli
     if (!req)
         throw FatalProfileException("Decoded message was not a samlp::ArtifactResolve request.");
 
-    const EntityDescriptor* entity = policy.getIssuerMetadata() ? dynamic_cast<EntityDescriptor*>(policy.getIssuerMetadata()->getParent()) : NULL;
+    const EntityDescriptor* entity = policy.getIssuerMetadata() ? dynamic_cast<EntityDescriptor*>(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<bool,long> 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<bool,long> 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);
 }
index 1c7af13..c22f4a2 100644 (file)
@@ -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<const opensaml::Assertion*> tokens;
 
     // Also track "bad" tokens that we'll cache but not use.
@@ -161,7 +161,7 @@ void SAML2Consumer::implementProtocol(
     vector<saml2::Assertion*> ownedtokens;
 
     // With this flag on, we ignore any unsigned assertions.
-    const EntityDescriptor* entity = NULL;
+    const EntityDescriptor* entity = nullptr;
     pair<bool,bool> flag = make_pair(false,false);
     if (alreadySecured && policy.getIssuerMetadata()) {
         entity = dynamic_cast<const EntityDescriptor*>(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<saml2::Assertion*>::const_iterator a = assertions.begin(); a!=assertions.end(); ++a) {
         try {
             // Skip unsigned assertion?
@@ -253,11 +253,11 @@ void SAML2Consumer::implementProtocol(
 
     for (vector<saml2::EncryptedAssertion*>::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<MetadataCredentialCriteria> mcc(
-                policy.getIssuerMetadata() ? new MetadataCredentialCriteria(*policy.getIssuerMetadata()) : NULL
+                policy.getIssuerMetadata() ? new MetadataCredentialCriteria(*policy.getIssuerMetadata()) : nullptr
                 );
             auto_ptr<XMLObject> wrapper((*ea)->decrypt(*cr, application.getRelyingParty(entity)->getXMLString("entityID").second, mcc.get()));
             decrypted = dynamic_cast<saml2::Assertion*>(wrapper.get());
@@ -353,7 +353,7 @@ void SAML2Consumer::implementProtocol(
             else {
                 Locker credlocker(cr);
                 auto_ptr<MetadataCredentialCriteria> mcc(
-                    policy.getIssuerMetadata() ? new MetadataCredentialCriteria(*policy.getIssuerMetadata()) : NULL
+                    policy.getIssuerMetadata() ? new MetadataCredentialCriteria(*policy.getIssuerMetadata()) : nullptr
                     );
                 try {
                     auto_ptr<XMLObject> 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)
index 23b1bc8..919a0b5 100644 (file)
@@ -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<const DOMElement*,const XMLCh*>(e,shibspconstants::SHIB2SPCONFIG_NS)
                 );
-            m_encoders.insert(pair<const XMLCh*,MessageEncoder*>(NULL, encoder));
+            m_encoders.insert(pair<const XMLCh*,MessageEncoder*>(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<HTTPRequest> req(getRequest(in));
 
     // Wrap a response shim.
-    DDF ret(NULL);
+    DDF ret(nullptr);
     DDFJanitor jout(ret);
     auto_ptr<HTTPResponse> resp(getResponse(ret));
 
@@ -312,13 +312,13 @@ pair<bool,long> 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<bool,long> SAML2Logout::doRequest(const Application& application, const HTT
                 else {
                     Locker credlocker(cr);
                     auto_ptr<MetadataCredentialCriteria> mcc(
-                        policy.getIssuerMetadata() ? new MetadataCredentialCriteria(*policy.getIssuerMetadata()) : NULL
+                        policy.getIssuerMetadata() ? new MetadataCredentialCriteria(*policy.getIssuerMetadata()) : nullptr
                         );
                     try {
                         auto_ptr<XMLObject> decryptedID(
                             encname->decrypt(
                                 *cr,
-                                application.getRelyingParty(policy.getIssuerMetadata() ? dynamic_cast<EntityDescriptor*>(policy.getIssuerMetadata()->getParent()) : NULL)->getXMLString("entityID").second,
+                                application.getRelyingParty(policy.getIssuerMetadata() ? dynamic_cast<EntityDescriptor*>(policy.getIssuerMetadata()->getParent()) : nullptr)->getXMLString("entityID").second,
                                 mcc.get()
                                 )
                             );
@@ -416,11 +416,11 @@ pair<bool,long> SAML2Logout::doRequest(const Application& application, const HTT
                 );
         }
 
-        auto_ptr<NameID> namewrapper(ownedName ? nameid : NULL);
+        auto_ptr<NameID> namewrapper(ownedName ? nameid : nullptr);
 
         // Suck indexes out of the request for next steps.
         set<string> indexes;
-        EntityDescriptor* entity = policy.getIssuerMetadata() ? dynamic_cast<EntityDescriptor*>(policy.getIssuerMetadata()->getParent()) : NULL;
+        EntityDescriptor* entity = policy.getIssuerMetadata() ? dynamic_cast<EntityDescriptor*>(policy.getIssuerMetadata()->getParent()) : nullptr;
         const vector<SessionIndex*> sindexes = logoutRequest->getSessionIndexs();
         for (vector<SessionIndex*>::const_iterator i = sindexes.begin(); i != sindexes.end(); ++i) {
             auto_ptr_char sindex((*i)->getSessionIndex());
@@ -468,7 +468,7 @@ pair<bool,long> 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<bool,long> SAML2Logout::doRequest(const Application& application, const HTT
             map<string,string> 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<bool,long> 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<bool,long> 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<bool,long> 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<const IDPSSODescriptor*>(role);
         for (vector<const XMLCh*>::const_iterator b = m_bindings.begin(); idp && b!=m_bindings.end(); ++b) {
index 1dc10d6..a776bc3 100644 (file)
@@ -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<const DOMElement*,const XMLCh*>(e,NULL));
+                    SAMLConfig::getConfig().MessageEncoderManager.newPlugin(b.get(),pair<const DOMElement*,const XMLCh*>(e,nullptr));
                 if (encoder->isUserAgentPresent()) {
                     m_encoders[start] = encoder;
                     m_log.debug("supporting outgoing binding (%s)", b.get());
@@ -192,7 +192,7 @@ pair<bool,long> 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<HTTPRequest> req(getRequest(in));
 
     // Set up a response shim.
-    DDF ret(NULL);
+    DDF ret(nullptr);
     DDFJanitor jout(ret);
     auto_ptr<HTTPResponse> 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<bool,long> SAML2LogoutInitiator::doRequest(
                 );
         }
 
-        const EndpointType* ep=NULL;
-        const MessageEncoder* encoder=NULL;
+        const EndpointType* ep=nullptr;
+        const MessageEncoder* encoder=nullptr;
         vector<const XMLCh*>::const_iterator b;
         for (b = m_bindings.begin(); b!=m_bindings.end(); ++b) {
             if (ep=EndpointManager<SingleLogoutService>(role->getSingleLogoutServices()).getByBinding(*b)) {
@@ -331,7 +331,7 @@ pair<bool,long> 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<SingleLogoutService*>& endpoints=role->getSingleLogoutServices();
             for (vector<SingleLogoutService*>::const_iterator epit=endpoints.begin(); !logoutResponse && epit!=endpoints.end(); ++epit) {
@@ -365,7 +365,7 @@ pair<bool,long> 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<bool,long> SAML2LogoutInitiator::doRequest(
 
             if (session) {
                 session->unlock();
-                session = NULL;
+                session = nullptr;
                 application.getServiceProvider().getSessionCache()->remove(application, httpRequest, &httpResponse);
             }
 
@@ -415,7 +415,7 @@ pair<bool,long> SAML2LogoutInitiator::doRequest(
 
     if (session) {
         session->unlock();
-        session = NULL;
+        session = nullptr;
         application.getServiceProvider().getSessionCache()->remove(application, httpRequest, &httpResponse);
     }
 
index 12c0ed6..61fd3ba 100644 (file)
@@ -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<const DOMElement*,const XMLCh*>(e,shibspconstants::SHIB2SPCONFIG_NS)
                 );
-            m_encoders.insert(pair<const XMLCh*,MessageEncoder*>(NULL, encoder));
+            m_encoders.insert(pair<const XMLCh*,MessageEncoder*>(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<HTTPRequest> req(getRequest(in));
 
     // Wrap a response shim.
-    DDF ret(NULL);
+    DDF ret(nullptr);
     DDFJanitor jout(ret);
     auto_ptr<HTTPResponse> resp(getResponse(ret));
 
@@ -295,7 +295,7 @@ pair<bool,long> SAML2NameIDMgmt::doRequest(
                 );
         }
 
-        EntityDescriptor* entity = policy.getIssuerMetadata() ? dynamic_cast<EntityDescriptor*>(policy.getIssuerMetadata()->getParent()) : NULL;
+        EntityDescriptor* entity = policy.getIssuerMetadata() ? dynamic_cast<EntityDescriptor*>(policy.getIssuerMetadata()->getParent()) : nullptr;
 
         bool ownedName = false;
         NameID* nameid = mgmtRequest->getNameID();
@@ -309,7 +309,7 @@ pair<bool,long> SAML2NameIDMgmt::doRequest(
                 else {
                     Locker credlocker(cr);
                     auto_ptr<MetadataCredentialCriteria> mcc(
-                        policy.getIssuerMetadata() ? new MetadataCredentialCriteria(*policy.getIssuerMetadata()) : NULL
+                        policy.getIssuerMetadata() ? new MetadataCredentialCriteria(*policy.getIssuerMetadata()) : nullptr
                         );
                     try {
                         auto_ptr<XMLObject> decryptedID(encname->decrypt(*cr,application.getRelyingParty(entity)->getXMLString("entityID").second,mcc.get()));
@@ -339,12 +339,12 @@ pair<bool,long> SAML2NameIDMgmt::doRequest(
                 );
         }
 
-        auto_ptr<NameID> namewrapper(ownedName ? nameid : NULL);
+        auto_ptr<NameID> 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<bool,long> 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<bool,long> SAML2NameIDMgmt::doRequest(
                     else {
                         Locker credlocker(cr);
                         auto_ptr<MetadataCredentialCriteria> mcc(
-                            policy.getIssuerMetadata() ? new MetadataCredentialCriteria(*policy.getIssuerMetadata()) : NULL
+                            policy.getIssuerMetadata() ? new MetadataCredentialCriteria(*policy.getIssuerMetadata()) : nullptr
                             );
                         try {
                             auto_ptr<XMLObject> decryptedID(encnewid->decrypt(*cr,application.getRelyingParty(entity)->getXMLString("entityID").second,mcc.get()));
@@ -396,7 +396,7 @@ pair<bool,long> 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<bool,long> SAML2NameIDMgmt::doRequest(
             }
         }
 
-        auto_ptr<NewID> newwrapper(ownedNewID ? newid : NULL);
+        auto_ptr<NewID> newwrapper(ownedNewID ? newid : nullptr);
 
         // TODO: maybe support in-place modification of sessions?
         /*
@@ -425,7 +425,7 @@ pair<bool,long> 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<bool,long> 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<bool,long> 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<const IDPSSODescriptor*>(role);
         for (vector<const XMLCh*>::const_iterator b = m_bindings.begin(); idp && b!=m_bindings.end(); ++b) {
index 30e303c..2765ce6 100644 (file)
@@ -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<const DOMElement*,const XMLCh*>(e,NULL)
+                    samlconstants::SAML20_BINDING_PAOS, pair<const DOMElement*,const XMLCh*>(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<const DOMElement*,const XMLCh*>(e,NULL)
+                    b.get(),pair<const DOMElement*,const XMLCh*>(e,nullptr)
                     );
                 if (encoder->isUserAgentPresent()) {
                     m_encoders[start] = encoder;
@@ -236,7 +236,7 @@ pair<bool,long> SAML2SessionInitiator::run(SPRequest& request, string& entityID,
 
     string target;
     pair<bool,const char*> prop;
-    const Handler* ACS=NULL;
+    const Handler* ACS=nullptr;
     pair<bool,const char*> acClass, acComp, nidFormat, spQual;
     bool isPassive=false,forceAuthn=false;
     const Application& app=request.getApplication();
@@ -252,7 +252,7 @@ pair<bool,long> 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<bool,long> SAML2SessionInitiator::run(SPRequest& request, string& entityID,
 
     // Validate the ACS for use with this protocol.
     if (!ECP) {
-        pair<bool,const char*> ACSbinding = ACS ? ACS->getString("Binding") : pair<bool,const char*>(false,NULL);
+        pair<bool,const char*> ACSbinding = ACS ? ACS->getString("Binding") : pair<bool,const char*>(false,nullptr);
         if (ACSbinding.first) {
             pair<bool,const char*> 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<bool,long> SAML2SessionInitiator::run(SPRequest& request, string& entityID,
             }
 
             // Determine index to use.
-            pair<bool,const XMLCh*> ix = pair<bool,const XMLCh*>(false,NULL);
+            pair<bool,const XMLCh*> ix = pair<bool,const XMLCh*>(false,nullptr);
             if (ACS) {
                if (!strncmp(ACSloc.c_str(), "https", 5)) {
                        ix = ACS->getXMLString("sslIndex", shibspconstants::ASCII_SHIB2SPCONFIG_NS);
@@ -377,19 +377,19 @@ pair<bool,long> 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<bool,const char*>(false,NULL);
+        prop = ACS ? ACS->getString("Location") : pair<bool,const char*>(false,nullptr);
         if (prop.first)
             ACSloc += prop.second;
 
@@ -404,14 +404,14 @@ pair<bool,long> 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<bool,long> SAML2SessionInitiator::run(SPRequest& request, string& entityID,
     if (acsByIndex.first && acsByIndex.second) {
         if (ACS) {
             // Determine index to use.
-            pair<bool,const char*> ix = pair<bool,const char*>(false,NULL);
+            pair<bool,const char*> ix = pair<bool,const char*>(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<bool,long> 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<bool,const char*>(false,NULL);
+        prop = ACS ? ACS->getString("Location") : pair<bool,const char*>(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<bool,long> SAML2SessionInitiator::doRequest(
 #ifndef SHIBSP_LITE
     bool ECP = XMLString::equals(acsBinding, m_paosBinding.get());
 
-    pair<const EntityDescriptor*,const RoleDescriptor*> entity = pair<const EntityDescriptor*,const RoleDescriptor*>(NULL,NULL);
-    const IDPSSODescriptor* role = NULL;
-    const EndpointType* ep = NULL;
-    const MessageEncoder* encoder = NULL;
+    pair<const EntityDescriptor*,const RoleDescriptor*> entity = pair<const EntityDescriptor*,const RoleDescriptor*>(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<bool,long> SAML2SessionInitiator::doRequest(
     auto_ptr<AuthnRequest> 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<bool,long> 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<bool,long> 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<bool,long> 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.
index 10de535..5f4f5ed 100644 (file)
@@ -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<const AttributeExtensibleXMLObject*>(*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();
index 813aad9..c77ecf7 100644 (file)
@@ -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<bool,long> SessionHandler::run(SPRequest& request, bool isHandler) const
     stringstream s;
     s << "<html><head><title>Session Summary</title></head><body><pre>" << endl;
 
-    Session* session = NULL;
+    Session* session = nullptr;
     try {
         session = request.getSession();
         if (!session) {
@@ -143,7 +143,7 @@ pair<bool,long> SessionHandler::run(SPRequest& request, bool isHandler) const
     s << "<strong>Authentication Context Decl:</strong> " << (session->getAuthnContextDeclRef() ? session->getAuthnContextDeclRef() : "(none)") << endl;
     s << "<strong>Session Expiration (barring inactivity):</strong> ";
     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;
 
index d1eeffa..9972d3c 100644 (file)
@@ -112,7 +112,7 @@ bool SessionInitiator::checkCompatibility(SPRequest& request, bool isHandler) co
 
 pair<bool,long> SessionInitiator::run(SPRequest& request, bool isHandler) const
 {
-    const char* entityID = NULL;
+    const char* entityID = nullptr;
     pair<bool,const char*> param = getString("entityIDParam");
     if (isHandler) {
         entityID = request.getParameter(param.first ? param.second : "entityID");
index cc2cd11..d210ff4 100644 (file)
@@ -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<bool,const char*> loc = getString("Location");
             if (loc.first) {
@@ -117,7 +117,7 @@ pair<bool,long> Shib1SessionInitiator::run(SPRequest& request, string& entityID,
 
     string target;
     pair<bool,const char*> prop;
-    const Handler* ACS=NULL;
+    const Handler* ACS=nullptr;
     const Application& app = request.getApplication();
 
     if (isHandler) {
@@ -158,10 +158,10 @@ pair<bool,long> Shib1SessionInitiator::run(SPRequest& request, string& entityID,
     }
 
     // Validate the ACS for use with this protocol.
-    pair<bool,const char*> ACSbinding = ACS ? ACS->getString("Binding") : pair<bool,const char*>(false,NULL);
+    pair<bool,const char*> ACSbinding = ACS ? ACS->getString("Binding") : pair<bool,const char*>(false,nullptr);
     if (ACSbinding.first) {
         pair<bool,const char*> 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<bool,long> 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<bool,const char*>(false,NULL);
+    prop = ACS ? ACS->getString("Location") : pair<bool,const char*>(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<bool,long> 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) +
index 64cca9a..f2cbd7f 100644 (file)
@@ -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<CGIParser::walker,CGIParser::walker> bounds=m_parser->getParameters(name);
-            return (bounds.first==bounds.second) ? NULL : bounds.first->second;
+            return (bounds.first==bounds.second) ? nullptr : bounds.first->second;
         }
         vector<const char*>::size_type getParameters(const char* name, vector<const char*>& 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<HTTPRequest> req(getRequest(in));
     auto_ptr<HTTPResponse> resp(getResponse(ret));
@@ -396,7 +396,7 @@ pair<bool,long> 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<bool,long> StatusHandler::processMessage(
             status = "<Partial/>";
         }
 
-        const PropertySet* relyingParty=NULL;
+        const PropertySet* relyingParty=nullptr;
         param=httpRequest.getParameter("entityID");
         if (param) {
             MetadataProvider* m = application.getMetadataProvider();
index 3aa012c..4ba5c49 100644 (file)
@@ -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<bool,string>((*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<string,string>(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;
 }
index 86f9f45..b9cc9c9 100644 (file)
@@ -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<bool,const char*> url = getString("URL");
             if (!url.first)
                 throw ConfigurationException("WAYF SessionInitiator requires a URL property.");
@@ -87,7 +87,7 @@ pair<bool,long> WAYFSessionInitiator::run(SPRequest& request, string& entityID,
 
     string target;
     pair<bool,const char*> prop;
-    const Handler* ACS=NULL;
+    const Handler* ACS=nullptr;
     const Application& app=request.getApplication();
     pair<bool,const char*> discoveryURL = pair<bool,const char*>(true, m_url);
 
@@ -135,10 +135,10 @@ pair<bool,long> WAYFSessionInitiator::run(SPRequest& request, string& entityID,
     }
 
     // Validate the ACS for use with this protocol.
-    pair<bool,const char*> ACSbinding = ACS ? ACS->getString("Binding") : pair<bool,const char*>(false,NULL);
+    pair<bool,const char*> ACSbinding = ACS ? ACS->getString("Binding") : pair<bool,const char*>(false,nullptr);
     if (ACSbinding.first) {
         pair<bool,const char*> 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<bool,long> 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<bool,const char*>(false,NULL);
+    prop = ACS ? ACS->getString("Location") : pair<bool,const char*>(false,nullptr);
     if (prop.first)
         ACSloc += prop.second;
 
@@ -177,7 +177,7 @@ pair<bool,long> 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()) +
index 6feafda..60c1429 100644 (file)
@@ -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));
index e23735a..e1551cf 100644 (file)
@@ -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<const Assertion*>* tokens=NULL,
-            const vector<Attribute*>* 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<const Assertion*>* tokens=nullptr,
+            const vector<Attribute*>* attributes=nullptr
             );
         vector<string>::size_type logout(
             const Application& application,
@@ -112,7 +112,7 @@ namespace shibsp {
             const set<string>* 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<string,const char*> 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<Attribute*>& 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<string,StoredSession>());
         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 Assertion*>::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<string>* 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<string>::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<string>::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<string>::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<string> 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<SSCache*>(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;
     }
index 22738e4..6eecf78 100644 (file)
@@ -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<char> vals(toUTF8(e->hasChildNodes() ? e->getFirstChild()->getNodeValue() : NULL));
+    auto_arrayptr<char> 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<char*>(vals.get())," ",&pos);
 #else
     const char* token=strtok(const_cast<char*>(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<bool,DOMElement*> XMLAccessControl::background_load()
     pair<bool,DOMElement*> raw = ReloadableXMLFile::load();
 
     // If we own it, wrap it.
-    XercesJanitor<DOMDocument> docjanitor(raw.first ? raw.second->getOwnerDocument() : NULL);
+    XercesJanitor<DOMDocument> 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<bool,DOMElement*> 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
index 715f71a..8f03a88 100644 (file)
@@ -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<const Override*>(getParent())->getAC() : NULL)); }
+        AccessControl* getAC() const { return (m_acl ? m_acl : (getParent() ? dynamic_cast<const Override*>(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<Override> o(new Override(path,log,this));
 
-                const XMLCh* flag=path->getAttributeNS(NULL,ignoreCase);
+                const XMLCh* flag=path->getAttributeNS(nullptr,ignoreCase);
                 try {
                     auto_ptr<RegularExpression> 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<Override> 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<Override> o(new Override(host,log,this));
 
-        const XMLCh* flag=host->getAttributeNS(NULL,ignoreCase);
+        const XMLCh* flag=host->getAttributeNS(nullptr,ignoreCase);
         try {
             auto_ptr<RegularExpression> 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<string,Override*>::const_iterator i=m_map.find(vhost);
     if (i!=m_map.end())
         o=i->second;
@@ -638,7 +638,7 @@ pair<bool,DOMElement*> XMLRequestMapper::background_load()
     pair<bool,DOMElement*> raw = ReloadableXMLFile::load();
 
     // If we own it, wrap it.
-    XercesJanitor<DOMDocument> docjanitor(raw.first ? raw.second->getOwnerDocument() : NULL);
+    XercesJanitor<DOMDocument> docjanitor(raw.first ? raw.second->getOwnerDocument() : nullptr);
 
     XMLRequestMapperImpl* impl = new XMLRequestMapperImpl(raw.second, m_log);
 
@@ -652,7 +652,7 @@ pair<bool,DOMElement*> 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
index 06f7fce..c7efee5 100644 (file)
@@ -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<string,string> >::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<string,StorageService>());
 #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<bool,bool> getBool(const char* name, const char* ns=NULL) const {return m_impl->getBool(name,ns);}
-        pair<bool,const char*> getString(const char* name, const char* ns=NULL) const {return m_impl->getString(name,ns);}
-        pair<bool,const XMLCh*> getXMLString(const char* name, const char* ns=NULL) const {return m_impl->getXMLString(name,ns);}
-        pair<bool,unsigned int> getUnsignedInt(const char* name, const char* ns=NULL) const {return m_impl->getUnsignedInt(name,ns);}
-        pair<bool,int> getInt(const char* name, const char* ns=NULL) const {return m_impl->getInt(name,ns);}
+        pair<bool,bool> getBool(const char* name, const char* ns=nullptr) const {return m_impl->getBool(name,ns);}
+        pair<bool,const char*> getString(const char* name, const char* ns=nullptr) const {return m_impl->getString(name,ns);}
+        pair<bool,const XMLCh*> getXMLString(const char* name, const char* ns=nullptr) const {return m_impl->getXMLString(name,ns);}
+        pair<bool,unsigned int> getUnsignedInt(const char* name, const char* ns=nullptr) const {return m_impl->getUnsignedInt(name,ns);}
+        pair<bool,int> getInt(const char* name, const char* ns=nullptr) const {return m_impl->getInt(name,ns);}
         void getAll(map<string,const char*>& 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<string,Application*>::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<string,string>(m_attributePrefix.first + start, m_attributePrefix.second + transformed));
                     if (prefix.first)
                         m_unsetHeaders.push_back(pair<string,string>(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<string,string>(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<bool,const char*> location = sessions ? sessions->getString("exportLocation") : pair<bool,const char*>(false,NULL);
+        pair<bool,const char*> location = sessions ? sessions->getString("exportLocation") : pair<bool,const char*>(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<bool,const XMLCh*> 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<const DOMElement*,const char*>(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 && i<nlist->getLength(); i++) {
             if (nlist->item(i)->getParentNode()->isSameNode(e)) {
-                const XMLCh* channel = static_cast<DOMElement*>(nlist->item(i))->getAttributeNS(NULL,Channel);
-                auto_ptr_char loc(static_cast<DOMElement*>(nlist->item(i))->getAttributeNS(NULL,Location));
+                const XMLCh* channel = static_cast<DOMElement*>(nlist->item(i))->getAttributeNS(nullptr,Channel);
+                auto_ptr_char loc(static_cast<DOMElement*>(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<MetadataProvider> 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<DOMPropertySet> 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<xstring,PropertySet>());
     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<string,const SessionInitiator*>::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<unsigned int,const Handler*>::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<const Handler*>& XMLApplication::getAssertionConsumerServicesByBinding(const XMLCh* binding) const
@@ -1190,7 +1190,7 @@ const Handler* XMLApplication::getHandler(const char* path) const
     map<string,const Handler*>::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<const Handler*>& 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<const SecurityPolicyRule*> >& rules = m_policyMap[id.get()];
-                rules.first = NULL;
+                rules.first = nullptr;
                 auto_ptr<DOMPropertySet> 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<bool,DOMElement*> XMLConfig::background_load()
     pair<bool,DOMElement*> raw = ReloadableXMLFile::load();
 
     // If we own it, wrap it.
-    XercesJanitor<DOMDocument> docjanitor(raw.first ? raw.second->getOwnerDocument() : NULL);
+    XercesJanitor<DOMDocument> 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<bool,DOMElement*> XMLConfig::background_load()
     delete m_impl;
     m_impl = impl;
 
-    return make_pair(false,(DOMElement*)NULL);
+    return make_pair(false,(DOMElement*)nullptr);
 }
index 32c9886..8b346f0 100644 (file)
@@ -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<const Credential*>::size_type resolve(
-            vector<const Credential*>& results, const CredentialCriteria* criteria=NULL
+            vector<const Credential*>& 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<X509TrustEngine*>(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<bool,const char*> 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)
index 7ae11c2..8811fb5 100644 (file)
@@ -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);
         }
 
index d1a0d98..25498b6 100644 (file)
@@ -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();
index 60b5b7a..0590681 100644 (file)
@@ -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;
 
index abcc045..6a51604 100644 (file)
@@ -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);
index 814db96..f0df7a4 100644 (file)
@@ -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<string,Remoted*>::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<string,Remoted*>::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;
     }
index 50aa95b..41383f1 100644 (file)
@@ -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;
index 05f2f90..4630ef3 100644 (file)
@@ -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();
index 1180e27..19777a8 100644 (file)
@@ -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;
index 81122cf..c5f2d78 100644 (file)
@@ -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<char*>(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());
index 8c4bea3..39cc232 100644 (file)
@@ -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<const ObservableMetadataProvider*,credmap_t>::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<const ObservableMetadataProvider*>(&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.
index 0357e82..fdf7a22 100644 (file)
@@ -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 (file)
index 0000000..3942708
--- /dev/null
@@ -0,0 +1,288 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{81F0F7A6-DC36-46EF-957F-F9E81D4403F7}</ProjectGuid>\r
+    <RootNamespace>shibsp-lite</RootNamespace>\r
+    <Keyword>Win32Proj</Keyword>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectName)-$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(ProjectName)-$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectName)-$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(ProjectName)-$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectName)1_4</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectName)1_4</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectName)1_4D</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectName)1_4D</TargetName>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;WANT_TCP_SHAR;SHIBSP_LITE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_UNICODE;UNICODE;SHIBSP_LITE;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>log4shib1D.lib;xerces-c_3D.lib;xmltooling-lite1D.lib;wsock32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Windows</SubSystem>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(ProjectName)1D.lib</ImportLibrary>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;WANT_TCP_SHAR;SHIBSP_LITE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_UNICODE;UNICODE;SHIBSP_LITE;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>log4shib1D.lib;xerces-c_3D.lib;xmltooling-lite1D.lib;wsock32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Windows</SubSystem>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(ProjectName)1D.lib</ImportLibrary>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;WANT_TCP_SHAR;SHIBSP_LITE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_UNICODE;UNICODE;SHIBSP_LITE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>log4shib1.lib;xerces-c_3.lib;xmltooling-lite1.lib;wsock32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Windows</SubSystem>\r
+      <OptimizeReferences>true</OptimizeReferences>\r
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(ProjectName)1.lib</ImportLibrary>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;WANT_TCP_SHAR;SHIBSP_LITE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_UNICODE;UNICODE;SHIBSP_LITE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>log4shib1.lib;xerces-c_3.lib;xmltooling-lite1.lib;wsock32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Windows</SubSystem>\r
+      <OptimizeReferences>true</OptimizeReferences>\r
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(ProjectName)1.lib</ImportLibrary>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="AbstractSPRequest.cpp" />\r
+    <ClCompile Include="Application.cpp" />\r
+    <ClCompile Include="ServiceProvider.cpp" />\r
+    <ClCompile Include="SPConfig.cpp" />\r
+    <ClCompile Include="util\CGIParser.cpp" />\r
+    <ClCompile Include="util\DOMPropertySet.cpp" />\r
+    <ClCompile Include="util\SPConstants.cpp" />\r
+    <ClCompile Include="util\TemplateParameters.cpp" />\r
+    <ClCompile Include="remoting\impl\ddf.cpp" />\r
+    <ClCompile Include="remoting\impl\ListenerService.cpp" />\r
+    <ClCompile Include="remoting\impl\SocketListener.cpp" />\r
+    <ClCompile Include="remoting\impl\TCPListener.cpp" />\r
+    <ClCompile Include="impl\ChainingAccessControl.cpp" />\r
+    <ClCompile Include="impl\StorageServiceSessionCache.cpp" />\r
+    <ClCompile Include="impl\XMLAccessControl.cpp" />\r
+    <ClCompile Include="impl\XMLRequestMapper.cpp" />\r
+    <ClCompile Include="impl\XMLServiceProvider.cpp" />\r
+    <ClCompile Include="attribute\Attribute.cpp" />\r
+    <ClCompile Include="attribute\ExtensibleAttribute.cpp" />\r
+    <ClCompile Include="attribute\NameIDAttribute.cpp" />\r
+    <ClCompile Include="attribute\ScopedAttribute.cpp" />\r
+    <ClCompile Include="attribute\SimpleAttribute.cpp" />\r
+    <ClCompile Include="attribute\XMLAttribute.cpp" />\r
+    <ClCompile Include="handler\impl\AbstractHandler.cpp" />\r
+    <ClCompile Include="handler\impl\AssertionConsumerService.cpp" />\r
+    <ClCompile Include="handler\impl\AssertionLookup.cpp" />\r
+    <ClCompile Include="handler\impl\ChainingLogoutInitiator.cpp" />\r
+    <ClCompile Include="handler\impl\ChainingSessionInitiator.cpp" />\r
+    <ClCompile Include="handler\impl\CookieSessionInitiator.cpp" />\r
+    <ClCompile Include="handler\impl\FormSessionInitiator.cpp" />\r
+    <ClCompile Include="handler\impl\LocalLogoutInitiator.cpp" />\r
+    <ClCompile Include="handler\impl\LogoutHandler.cpp" />\r
+    <ClCompile Include="handler\impl\MetadataGenerator.cpp" />\r
+    <ClCompile Include="handler\impl\RemotedHandler.cpp" />\r
+    <ClCompile Include="handler\impl\SAML1Consumer.cpp" />\r
+    <ClCompile Include="handler\impl\SAML2ArtifactResolution.cpp" />\r
+    <ClCompile Include="handler\impl\SAML2Consumer.cpp" />\r
+    <ClCompile Include="handler\impl\SAML2Logout.cpp" />\r
+    <ClCompile Include="handler\impl\SAML2LogoutInitiator.cpp" />\r
+    <ClCompile Include="handler\impl\SAML2NameIDMgmt.cpp" />\r
+    <ClCompile Include="handler\impl\SAML2SessionInitiator.cpp" />\r
+    <ClCompile Include="handler\impl\SAMLDSSessionInitiator.cpp" />\r
+    <ClCompile Include="handler\impl\SessionHandler.cpp" />\r
+    <ClCompile Include="handler\impl\SessionInitiator.cpp" />\r
+    <ClCompile Include="handler\impl\Shib1SessionInitiator.cpp" />\r
+    <ClCompile Include="handler\impl\StatusHandler.cpp" />\r
+    <ClCompile Include="handler\impl\TransformSessionInitiator.cpp" />\r
+    <ClCompile Include="handler\impl\WAYFSessionInitiator.cpp" />\r
+    <ClCompile Include="lite\CommonDomainCookie.cpp" />\r
+    <ClCompile Include="lite\SAMLConstants.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="remoting\impl\SocketListener.h" />\r
+    <ClInclude Include="AbstractSPRequest.h" />\r
+    <ClInclude Include="AccessControl.h" />\r
+    <ClInclude Include="Application.h" />\r
+    <ClInclude Include="ApplicationAwarePlugin.h" />\r
+    <ClInclude Include="base.h" />\r
+    <ClInclude Include="exceptions.h" />\r
+    <ClInclude Include="internal.h" />\r
+    <ClInclude Include="RequestMapper.h" />\r
+    <ClInclude Include="resource.h" />\r
+    <ClInclude Include="ServiceProvider.h" />\r
+    <ClInclude Include="SessionCache.h" />\r
+    <ClInclude Include="SessionCacheEx.h" />\r
+    <ClInclude Include="SPConfig.h" />\r
+    <ClInclude Include="SPRequest.h" />\r
+    <ClInclude Include="version.h" />\r
+    <ClInclude Include="util\CGIParser.h" />\r
+    <ClInclude Include="util\DOMPropertySet.h" />\r
+    <ClInclude Include="util\PropertySet.h" />\r
+    <ClInclude Include="util\SPConstants.h" />\r
+    <ClInclude Include="util\TemplateParameters.h" />\r
+    <ClInclude Include="remoting\ddf.h" />\r
+    <ClInclude Include="remoting\ListenerService.h" />\r
+    <ClInclude Include="attribute\Attribute.h" />\r
+    <ClInclude Include="attribute\ExtensibleAttribute.h" />\r
+    <ClInclude Include="attribute\NameIDAttribute.h" />\r
+    <ClInclude Include="attribute\ScopedAttribute.h" />\r
+    <ClInclude Include="attribute\SimpleAttribute.h" />\r
+    <ClInclude Include="attribute\XMLAttribute.h" />\r
+    <ClInclude Include="handler\AbstractHandler.h" />\r
+    <ClInclude Include="handler\AssertionConsumerService.h" />\r
+    <ClInclude Include="handler\Handler.h" />\r
+    <ClInclude Include="handler\LogoutHandler.h" />\r
+    <ClInclude Include="handler\RemotedHandler.h" />\r
+    <ClInclude Include="handler\SessionInitiator.h" />\r
+    <ClInclude Include="lite\CommonDomainCookie.h" />\r
+    <ClInclude Include="lite\SAMLConstants.h" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ResourceCompile Include="shibsp.rc" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="Makefile.am" />\r
+    <None Include="paths.h.in" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
diff --git a/shibsp/shibsp-lite.vcxproj.filters b/shibsp/shibsp-lite.vcxproj.filters
new file mode 100644 (file)
index 0000000..9293c01
--- /dev/null
@@ -0,0 +1,330 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup>\r
+    <Filter Include="Source Files">\r
+      <UniqueIdentifier>{4FC737F2-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>\r
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>\r
+    </Filter>\r
+    <Filter Include="Source Files\util">\r
+      <UniqueIdentifier>{729ea3af-cb77-4897-b55c-b18a4c66817f}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Source Files\remoting">\r
+      <UniqueIdentifier>{7b456f03-9c40-438c-8b69-c1676ec904f6}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Source Files\remoting\impl">\r
+      <UniqueIdentifier>{623deb32-df2f-4bad-abcd-96d2275eaafd}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Source Files\impl">\r
+      <UniqueIdentifier>{92af54d1-b5c1-4391-9b8a-d7ee57cae671}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Source Files\attribute">\r
+      <UniqueIdentifier>{354c1fc9-211b-48f9-99c1-27f5065a08fc}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Source Files\handler">\r
+      <UniqueIdentifier>{dcb5bf8b-b08d-4bb4-9025-52a624c06312}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Source Files\handler\impl">\r
+      <UniqueIdentifier>{02b1ace5-7717-4406-9643-901632993d12}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Source Files\lite">\r
+      <UniqueIdentifier>{b0e40290-ca47-49fb-8484-99d3fb5287f2}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Header Files">\r
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFC}</UniqueIdentifier>\r
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>\r
+    </Filter>\r
+    <Filter Include="Header Files\util">\r
+      <UniqueIdentifier>{51edefcb-98b4-4be2-8a21-69e248ce62cc}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Header Files\remoting">\r
+      <UniqueIdentifier>{14c2631a-de71-4a3a-a761-b2a38519bd77}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Header Files\attribute">\r
+      <UniqueIdentifier>{4adb84e6-4b87-43b7-a7a9-bbb903ff8bb5}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Header Files\handler">\r
+      <UniqueIdentifier>{242efec0-e402-4083-8719-9e0eb247d24a}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Header Files\lite">\r
+      <UniqueIdentifier>{810cab8c-6d86-43af-8ec7-e4cfa6a42ff9}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Resource Files">\r
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD02}</UniqueIdentifier>\r
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>\r
+    </Filter>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="AbstractSPRequest.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="Application.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="ServiceProvider.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="SPConfig.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="util\CGIParser.cpp">\r
+      <Filter>Source Files\util</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="util\DOMPropertySet.cpp">\r
+      <Filter>Source Files\util</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="util\SPConstants.cpp">\r
+      <Filter>Source Files\util</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="util\TemplateParameters.cpp">\r
+      <Filter>Source Files\util</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="remoting\impl\ddf.cpp">\r
+      <Filter>Source Files\remoting\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="remoting\impl\ListenerService.cpp">\r
+      <Filter>Source Files\remoting\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="remoting\impl\SocketListener.cpp">\r
+      <Filter>Source Files\remoting\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="remoting\impl\TCPListener.cpp">\r
+      <Filter>Source Files\remoting\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="impl\ChainingAccessControl.cpp">\r
+      <Filter>Source Files\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="impl\StorageServiceSessionCache.cpp">\r
+      <Filter>Source Files\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="impl\XMLAccessControl.cpp">\r
+      <Filter>Source Files\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="impl\XMLRequestMapper.cpp">\r
+      <Filter>Source Files\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="impl\XMLServiceProvider.cpp">\r
+      <Filter>Source Files\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\Attribute.cpp">\r
+      <Filter>Source Files\attribute</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\ExtensibleAttribute.cpp">\r
+      <Filter>Source Files\attribute</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\NameIDAttribute.cpp">\r
+      <Filter>Source Files\attribute</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\ScopedAttribute.cpp">\r
+      <Filter>Source Files\attribute</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\SimpleAttribute.cpp">\r
+      <Filter>Source Files\attribute</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\XMLAttribute.cpp">\r
+      <Filter>Source Files\attribute</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\AbstractHandler.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\AssertionConsumerService.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\AssertionLookup.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\ChainingLogoutInitiator.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\ChainingSessionInitiator.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\CookieSessionInitiator.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\FormSessionInitiator.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\LocalLogoutInitiator.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\LogoutHandler.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\MetadataGenerator.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\RemotedHandler.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\SAML1Consumer.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\SAML2ArtifactResolution.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\SAML2Consumer.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\SAML2Logout.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\SAML2LogoutInitiator.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\SAML2NameIDMgmt.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\SAML2SessionInitiator.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\SAMLDSSessionInitiator.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\SessionHandler.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\SessionInitiator.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\Shib1SessionInitiator.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\StatusHandler.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\TransformSessionInitiator.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\WAYFSessionInitiator.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="lite\CommonDomainCookie.cpp">\r
+      <Filter>Source Files\lite</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="lite\SAMLConstants.cpp">\r
+      <Filter>Source Files\lite</Filter>\r
+    </ClCompile>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="remoting\impl\SocketListener.h">\r
+      <Filter>Source Files\remoting\impl</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="AbstractSPRequest.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="AccessControl.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="Application.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="ApplicationAwarePlugin.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="base.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="exceptions.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="internal.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="RequestMapper.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="resource.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="ServiceProvider.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="SessionCache.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="SessionCacheEx.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="SPConfig.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="SPRequest.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="version.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="util\CGIParser.h">\r
+      <Filter>Header Files\util</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="util\DOMPropertySet.h">\r
+      <Filter>Header Files\util</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="util\PropertySet.h">\r
+      <Filter>Header Files\util</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="util\SPConstants.h">\r
+      <Filter>Header Files\util</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="util\TemplateParameters.h">\r
+      <Filter>Header Files\util</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="remoting\ddf.h">\r
+      <Filter>Header Files\remoting</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="remoting\ListenerService.h">\r
+      <Filter>Header Files\remoting</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="attribute\Attribute.h">\r
+      <Filter>Header Files\attribute</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="attribute\ExtensibleAttribute.h">\r
+      <Filter>Header Files\attribute</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="attribute\NameIDAttribute.h">\r
+      <Filter>Header Files\attribute</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="attribute\ScopedAttribute.h">\r
+      <Filter>Header Files\attribute</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="attribute\SimpleAttribute.h">\r
+      <Filter>Header Files\attribute</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="attribute\XMLAttribute.h">\r
+      <Filter>Header Files\attribute</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="handler\AbstractHandler.h">\r
+      <Filter>Header Files\handler</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="handler\AssertionConsumerService.h">\r
+      <Filter>Header Files\handler</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="handler\Handler.h">\r
+      <Filter>Header Files\handler</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="handler\LogoutHandler.h">\r
+      <Filter>Header Files\handler</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="handler\RemotedHandler.h">\r
+      <Filter>Header Files\handler</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="handler\SessionInitiator.h">\r
+      <Filter>Header Files\handler</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="lite\CommonDomainCookie.h">\r
+      <Filter>Header Files\lite</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="lite\SAMLConstants.h">\r
+      <Filter>Header Files\lite</Filter>\r
+    </ClInclude>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ResourceCompile Include="shibsp.rc">\r
+      <Filter>Resource Files</Filter>\r
+    </ResourceCompile>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="Makefile.am" />\r
+    <None Include="paths.h.in" />\r
+  </ItemGroup>\r
+</Project>
\ No newline at end of file
diff --git a/shibsp/shibsp.vcxproj b/shibsp/shibsp.vcxproj
new file mode 100644 (file)
index 0000000..990b70f
--- /dev/null
@@ -0,0 +1,338 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{81F0F7A6-DC36-46EF-957F-F9E81D4403F6}</ProjectGuid>\r
+    <RootNamespace>shibsp</RootNamespace>\r
+    <Keyword>Win32Proj</Keyword>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectName)1_4D</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectName)1_4D</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectName)1_4</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectName)1_4</TargetName>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-opensaml2;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;WANT_TCP_SHAR;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_UNICODE;UNICODE;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>log4shib1D.lib;xerces-c_3D.lib;xsec_1D.lib;saml2D.lib;xmltooling1D.lib;wsock32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-opensaml2\$(Configuration);..\..\cpp-xmltooling\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Windows</SubSystem>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(ProjectName)1D.lib</ImportLibrary>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-opensaml2;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;WANT_TCP_SHAR;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_UNICODE;UNICODE;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>log4shib1D.lib;xerces-c_3D.lib;xsec_1D.lib;saml2D.lib;xmltooling1D.lib;wsock32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-opensaml2\$(Platform)\$(Configuration);..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Windows</SubSystem>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(ProjectName)1D.lib</ImportLibrary>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-opensaml2;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;WANT_TCP_SHAR;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <Link>\r
+      <AdditionalDependencies>log4shib1.lib;xerces-c_3.lib;xsec_1.lib;saml2.lib;xmltooling1.lib;wsock32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-opensaml2\$(Configuration);..\..\cpp-xmltooling\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Windows</SubSystem>\r
+      <OptimizeReferences>true</OptimizeReferences>\r
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(ProjectName)1.lib</ImportLibrary>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-opensaml2;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;WANT_TCP_SHAR;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <Link>\r
+      <AdditionalDependencies>log4shib1.lib;xerces-c_3.lib;xsec_1.lib;saml2.lib;xmltooling1.lib;wsock32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-opensaml2\$(Platform)\$(Configuration);..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Windows</SubSystem>\r
+      <OptimizeReferences>true</OptimizeReferences>\r
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(ProjectName)1.lib</ImportLibrary>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="AbstractSPRequest.cpp" />\r
+    <ClCompile Include="Application.cpp" />\r
+    <ClCompile Include="ServiceProvider.cpp" />\r
+    <ClCompile Include="SPConfig.cpp" />\r
+    <ClCompile Include="util\CGIParser.cpp" />\r
+    <ClCompile Include="util\DOMPropertySet.cpp" />\r
+    <ClCompile Include="util\SPConstants.cpp" />\r
+    <ClCompile Include="util\TemplateParameters.cpp" />\r
+    <ClCompile Include="security\PKIXTrustEngine.cpp" />\r
+    <ClCompile Include="security\SecurityPolicy.cpp" />\r
+    <ClCompile Include="metadata\DynamicMetadataProvider.cpp" />\r
+    <ClCompile Include="metadata\MetadataExtImpl.cpp" />\r
+    <ClCompile Include="metadata\MetadataExtSchemaValidators.cpp" />\r
+    <ClCompile Include="metadata\MetadataProviderCriteria.cpp" />\r
+    <ClCompile Include="remoting\impl\ddf.cpp" />\r
+    <ClCompile Include="remoting\impl\ListenerService.cpp" />\r
+    <ClCompile Include="remoting\impl\SocketListener.cpp" />\r
+    <ClCompile Include="remoting\impl\TCPListener.cpp" />\r
+    <ClCompile Include="impl\ChainingAccessControl.cpp" />\r
+    <ClCompile Include="impl\StorageServiceSessionCache.cpp" />\r
+    <ClCompile Include="impl\XMLAccessControl.cpp" />\r
+    <ClCompile Include="impl\XMLRequestMapper.cpp" />\r
+    <ClCompile Include="impl\XMLServiceProvider.cpp" />\r
+    <ClCompile Include="attribute\Attribute.cpp" />\r
+    <ClCompile Include="attribute\DOMAttributeDecoder.cpp" />\r
+    <ClCompile Include="attribute\ExtensibleAttribute.cpp" />\r
+    <ClCompile Include="attribute\KeyInfoAttributeDecoder.cpp" />\r
+    <ClCompile Include="attribute\NameIDAttribute.cpp" />\r
+    <ClCompile Include="attribute\NameIDAttributeDecoder.cpp" />\r
+    <ClCompile Include="attribute\NameIDFromScopedAttributeDecoder.cpp" />\r
+    <ClCompile Include="attribute\ScopedAttribute.cpp" />\r
+    <ClCompile Include="attribute\ScopedAttributeDecoder.cpp" />\r
+    <ClCompile Include="attribute\SimpleAttribute.cpp" />\r
+    <ClCompile Include="attribute\StringAttributeDecoder.cpp" />\r
+    <ClCompile Include="attribute\XMLAttribute.cpp" />\r
+    <ClCompile Include="attribute\XMLAttributeDecoder.cpp" />\r
+    <ClCompile Include="attribute\resolver\impl\ChainingAttributeExtractor.cpp" />\r
+    <ClCompile Include="attribute\resolver\impl\ChainingAttributeResolver.cpp" />\r
+    <ClCompile Include="attribute\resolver\impl\DelegationAttributeExtractor.cpp" />\r
+    <ClCompile Include="attribute\resolver\impl\KeyDescriptorAttributeExtractor.cpp" />\r
+    <ClCompile Include="attribute\resolver\impl\QueryAttributeResolver.cpp" />\r
+    <ClCompile Include="attribute\resolver\impl\SimpleAggregationAttributeResolver.cpp" />\r
+    <ClCompile Include="attribute\resolver\impl\XMLAttributeExtractor.cpp" />\r
+    <ClCompile Include="attribute\filtering\impl\AndMatchFunctor.cpp" />\r
+    <ClCompile Include="attribute\filtering\impl\AnyMatchFunctor.cpp" />\r
+    <ClCompile Include="attribute\filtering\impl\AttributeFilter.cpp" />\r
+    <ClCompile Include="attribute\filtering\impl\AttributeIssuerInEntityGroupFunctor.cpp" />\r
+    <ClCompile Include="attribute\filtering\impl\AttributeIssuerRegexFunctor.cpp" />\r
+    <ClCompile Include="attribute\filtering\impl\AttributeIssuerStringFunctor.cpp" />\r
+    <ClCompile Include="attribute\filtering\impl\AttributeRequesterInEntityGroupFunctor.cpp" />\r
+    <ClCompile Include="attribute\filtering\impl\AttributeRequesterRegexFunctor.cpp" />\r
+    <ClCompile Include="attribute\filtering\impl\AttributeRequesterStringFunctor.cpp" />\r
+    <ClCompile Include="attribute\filtering\impl\AttributeScopeMatchesShibMDScopeFunctor.cpp" />\r
+    <ClCompile Include="attribute\filtering\impl\AttributeScopeRegexFunctor.cpp" />\r
+    <ClCompile Include="attribute\filtering\impl\AttributeScopeStringFunctor.cpp" />\r
+    <ClCompile Include="attribute\filtering\impl\AttributeValueRegexFunctor.cpp" />\r
+    <ClCompile Include="attribute\filtering\impl\AttributeValueStringFunctor.cpp" />\r
+    <ClCompile Include="attribute\filtering\impl\AuthenticationMethodRegexFunctor.cpp" />\r
+    <ClCompile Include="attribute\filtering\impl\AuthenticationMethodStringFunctor.cpp" />\r
+    <ClCompile Include="attribute\filtering\impl\BasicFilteringContext.cpp" />\r
+    <ClCompile Include="attribute\filtering\impl\ChainingAttributeFilter.cpp" />\r
+    <ClCompile Include="attribute\filtering\impl\MatchFunctor.cpp" />\r
+    <ClCompile Include="attribute\filtering\impl\NotMatchFunctor.cpp" />\r
+    <ClCompile Include="attribute\filtering\impl\NumberOfAttributeValuesFunctor.cpp" />\r
+    <ClCompile Include="attribute\filtering\impl\OrMatchFunctor.cpp" />\r
+    <ClCompile Include="attribute\filtering\impl\XMLAttributeFilter.cpp" />\r
+    <ClCompile Include="binding\impl\ArtifactResolver.cpp" />\r
+    <ClCompile Include="binding\impl\SOAPClient.cpp" />\r
+    <ClCompile Include="handler\impl\AbstractHandler.cpp" />\r
+    <ClCompile Include="handler\impl\AssertionConsumerService.cpp" />\r
+    <ClCompile Include="handler\impl\AssertionLookup.cpp" />\r
+    <ClCompile Include="handler\impl\ChainingLogoutInitiator.cpp" />\r
+    <ClCompile Include="handler\impl\ChainingSessionInitiator.cpp" />\r
+    <ClCompile Include="handler\impl\CookieSessionInitiator.cpp" />\r
+    <ClCompile Include="handler\impl\FormSessionInitiator.cpp" />\r
+    <ClCompile Include="handler\impl\LocalLogoutInitiator.cpp" />\r
+    <ClCompile Include="handler\impl\LogoutHandler.cpp" />\r
+    <ClCompile Include="handler\impl\MetadataGenerator.cpp" />\r
+    <ClCompile Include="handler\impl\RemotedHandler.cpp" />\r
+    <ClCompile Include="handler\impl\SAML1Consumer.cpp" />\r
+    <ClCompile Include="handler\impl\SAML2ArtifactResolution.cpp" />\r
+    <ClCompile Include="handler\impl\SAML2Consumer.cpp" />\r
+    <ClCompile Include="handler\impl\SAML2Logout.cpp" />\r
+    <ClCompile Include="handler\impl\SAML2LogoutInitiator.cpp" />\r
+    <ClCompile Include="handler\impl\SAML2NameIDMgmt.cpp" />\r
+    <ClCompile Include="handler\impl\SAML2SessionInitiator.cpp" />\r
+    <ClCompile Include="handler\impl\SAMLDSSessionInitiator.cpp" />\r
+    <ClCompile Include="handler\impl\SessionHandler.cpp" />\r
+    <ClCompile Include="handler\impl\SessionInitiator.cpp" />\r
+    <ClCompile Include="handler\impl\Shib1SessionInitiator.cpp" />\r
+    <ClCompile Include="handler\impl\StatusHandler.cpp" />\r
+    <ClCompile Include="handler\impl\TransformSessionInitiator.cpp" />\r
+    <ClCompile Include="handler\impl\WAYFSessionInitiator.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="remoting\impl\SocketListener.h" />\r
+    <ClInclude Include="AbstractSPRequest.h" />\r
+    <ClInclude Include="AccessControl.h" />\r
+    <ClInclude Include="Application.h" />\r
+    <ClInclude Include="base.h" />\r
+    <ClInclude Include="exceptions.h" />\r
+    <ClInclude Include="internal.h" />\r
+    <ClInclude Include="RequestMapper.h" />\r
+    <ClInclude Include="resource.h" />\r
+    <ClInclude Include="ServiceProvider.h" />\r
+    <ClInclude Include="SessionCache.h" />\r
+    <ClInclude Include="SessionCacheEx.h" />\r
+    <ClInclude Include="SPConfig.h" />\r
+    <ClInclude Include="SPRequest.h" />\r
+    <ClInclude Include="TransactionLog.h" />\r
+    <ClInclude Include="version.h" />\r
+    <ClInclude Include="util\CGIParser.h" />\r
+    <ClInclude Include="util\DOMPropertySet.h" />\r
+    <ClInclude Include="util\PropertySet.h" />\r
+    <ClInclude Include="util\SPConstants.h" />\r
+    <ClInclude Include="util\TemplateParameters.h" />\r
+    <ClInclude Include="security\PKIXTrustEngine.h" />\r
+    <ClInclude Include="security\SecurityPolicy.h" />\r
+    <ClInclude Include="remoting\ddf.h" />\r
+    <ClInclude Include="remoting\ListenerService.h" />\r
+    <ClInclude Include="attribute\Attribute.h" />\r
+    <ClInclude Include="attribute\AttributeDecoder.h" />\r
+    <ClInclude Include="attribute\ExtensibleAttribute.h" />\r
+    <ClInclude Include="attribute\NameIDAttribute.h" />\r
+    <ClInclude Include="attribute\ScopedAttribute.h" />\r
+    <ClInclude Include="attribute\SimpleAttribute.h" />\r
+    <ClInclude Include="attribute\XMLAttribute.h" />\r
+    <ClInclude Include="attribute\resolver\AttributeExtractor.h" />\r
+    <ClInclude Include="attribute\resolver\AttributeResolver.h" />\r
+    <ClInclude Include="attribute\resolver\ResolutionContext.h" />\r
+    <ClInclude Include="attribute\filtering\AttributeFilter.h" />\r
+    <ClInclude Include="attribute\filtering\BasicFilteringContext.h" />\r
+    <ClInclude Include="attribute\filtering\FilteringContext.h" />\r
+    <ClInclude Include="attribute\filtering\FilterPolicyContext.h" />\r
+    <ClInclude Include="attribute\filtering\MatchFunctor.h" />\r
+    <ClInclude Include="binding\ArtifactResolver.h" />\r
+    <ClInclude Include="binding\SOAPClient.h" />\r
+    <ClInclude Include="handler\AbstractHandler.h" />\r
+    <ClInclude Include="handler\AssertionConsumerService.h" />\r
+    <ClInclude Include="handler\Handler.h" />\r
+    <ClInclude Include="handler\LogoutHandler.h" />\r
+    <ClInclude Include="handler\RemotedHandler.h" />\r
+    <ClInclude Include="handler\SessionInitiator.h" />\r
+    <ClInclude Include="metadata\MetadataExt.h" />\r
+    <ClInclude Include="metadata\MetadataProviderCriteria.h" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ResourceCompile Include="shibsp.rc" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="Makefile.am" />\r
+    <None Include="paths.h.in" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
diff --git a/shibsp/shibsp.vcxproj.filters b/shibsp/shibsp.vcxproj.filters
new file mode 100644 (file)
index 0000000..0c89b89
--- /dev/null
@@ -0,0 +1,531 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup>\r
+    <Filter Include="Source Files">\r
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>\r
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>\r
+    </Filter>\r
+    <Filter Include="Source Files\util">\r
+      <UniqueIdentifier>{f7a309f6-07d1-40c7-9f64-bf3fcd3b51ad}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Source Files\security">\r
+      <UniqueIdentifier>{89058d6e-5dc6-4464-89ae-4b9b0b7ca1fc}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Source Files\metadata">\r
+      <UniqueIdentifier>{48a6ad05-3636-4f2a-821a-908cd6a6f38c}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Source Files\remoting">\r
+      <UniqueIdentifier>{201f4b10-df25-487b-b345-07e3e8dcb725}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Source Files\remoting\impl">\r
+      <UniqueIdentifier>{369a0f3d-8063-437a-9562-3845d3e4b49b}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Source Files\impl">\r
+      <UniqueIdentifier>{41d82bec-c25d-4cab-a15f-754f338f7ca2}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Source Files\attribute">\r
+      <UniqueIdentifier>{d71b535e-d381-4c91-b6c8-cdf3b17d6f90}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Source Files\attribute\resolver">\r
+      <UniqueIdentifier>{60cebd87-179e-4fca-8837-13aa1900aaad}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Source Files\attribute\resolver\impl">\r
+      <UniqueIdentifier>{b329e6c6-afb7-4979-b52f-71b91ead3ffc}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Source Files\attribute\filtering">\r
+      <UniqueIdentifier>{c7ffdbc2-c0a8-4eb0-8a15-aba6f60955a7}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Source Files\attribute\filtering\impl">\r
+      <UniqueIdentifier>{23310ff9-ddd8-46cd-ad92-325166dac240}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Source Files\binding">\r
+      <UniqueIdentifier>{084ae0b6-d51e-4e60-a3f1-8341f2a5f324}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Source Files\binding\impl">\r
+      <UniqueIdentifier>{66bd1384-c499-4cb8-8079-4bf8a4adc8fc}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Source Files\handler">\r
+      <UniqueIdentifier>{cd97c469-f562-4710-a2e1-4fc30e476c18}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Source Files\handler\impl">\r
+      <UniqueIdentifier>{9e449f86-94ac-4ec6-aa44-26effcc9c5b5}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Header Files">\r
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>\r
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>\r
+    </Filter>\r
+    <Filter Include="Header Files\util">\r
+      <UniqueIdentifier>{ec709790-2a20-4ab1-afbc-9c1a70cd1426}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Header Files\security">\r
+      <UniqueIdentifier>{6d782306-386a-4bdb-9d34-8f40afc5f5fd}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Header Files\remoting">\r
+      <UniqueIdentifier>{92a56f33-88c5-4663-b33a-47a9c66a5a02}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Header Files\attribute">\r
+      <UniqueIdentifier>{cb5ac1c9-4ec1-40ad-8caf-9f307735452c}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Header Files\attribute\resolver">\r
+      <UniqueIdentifier>{a403b7f1-6320-4000-92c1-04780c6db4e4}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Header Files\attribute\filtering">\r
+      <UniqueIdentifier>{e993fd93-ce33-4276-a3d3-663e8accf759}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Header Files\binding">\r
+      <UniqueIdentifier>{faf404c0-29a2-4a95-ba99-82bd4570e350}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Header Files\handler">\r
+      <UniqueIdentifier>{23e9fed1-5ecf-4558-9c5e-0ccf09f1f953}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Header Files\metadata">\r
+      <UniqueIdentifier>{a9cc5780-b115-430f-b156-ca4fa5276f63}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Resource Files">\r
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>\r
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>\r
+    </Filter>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="AbstractSPRequest.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="Application.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="ServiceProvider.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="SPConfig.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="util\CGIParser.cpp">\r
+      <Filter>Source Files\util</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="util\DOMPropertySet.cpp">\r
+      <Filter>Source Files\util</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="util\SPConstants.cpp">\r
+      <Filter>Source Files\util</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="util\TemplateParameters.cpp">\r
+      <Filter>Source Files\util</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="security\PKIXTrustEngine.cpp">\r
+      <Filter>Source Files\security</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="security\SecurityPolicy.cpp">\r
+      <Filter>Source Files\security</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="metadata\DynamicMetadataProvider.cpp">\r
+      <Filter>Source Files\metadata</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="metadata\MetadataExtImpl.cpp">\r
+      <Filter>Source Files\metadata</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="metadata\MetadataExtSchemaValidators.cpp">\r
+      <Filter>Source Files\metadata</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="metadata\MetadataProviderCriteria.cpp">\r
+      <Filter>Source Files\metadata</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="remoting\impl\ddf.cpp">\r
+      <Filter>Source Files\remoting\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="remoting\impl\ListenerService.cpp">\r
+      <Filter>Source Files\remoting\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="remoting\impl\SocketListener.cpp">\r
+      <Filter>Source Files\remoting\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="remoting\impl\TCPListener.cpp">\r
+      <Filter>Source Files\remoting\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="impl\ChainingAccessControl.cpp">\r
+      <Filter>Source Files\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="impl\StorageServiceSessionCache.cpp">\r
+      <Filter>Source Files\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="impl\XMLAccessControl.cpp">\r
+      <Filter>Source Files\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="impl\XMLRequestMapper.cpp">\r
+      <Filter>Source Files\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="impl\XMLServiceProvider.cpp">\r
+      <Filter>Source Files\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\Attribute.cpp">\r
+      <Filter>Source Files\attribute</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\DOMAttributeDecoder.cpp">\r
+      <Filter>Source Files\attribute</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\ExtensibleAttribute.cpp">\r
+      <Filter>Source Files\attribute</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\KeyInfoAttributeDecoder.cpp">\r
+      <Filter>Source Files\attribute</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\NameIDAttribute.cpp">\r
+      <Filter>Source Files\attribute</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\NameIDAttributeDecoder.cpp">\r
+      <Filter>Source Files\attribute</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\NameIDFromScopedAttributeDecoder.cpp">\r
+      <Filter>Source Files\attribute</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\ScopedAttribute.cpp">\r
+      <Filter>Source Files\attribute</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\ScopedAttributeDecoder.cpp">\r
+      <Filter>Source Files\attribute</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\SimpleAttribute.cpp">\r
+      <Filter>Source Files\attribute</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\StringAttributeDecoder.cpp">\r
+      <Filter>Source Files\attribute</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\XMLAttribute.cpp">\r
+      <Filter>Source Files\attribute</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\XMLAttributeDecoder.cpp">\r
+      <Filter>Source Files\attribute</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\resolver\impl\ChainingAttributeExtractor.cpp">\r
+      <Filter>Source Files\attribute\resolver\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\resolver\impl\ChainingAttributeResolver.cpp">\r
+      <Filter>Source Files\attribute\resolver\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\resolver\impl\DelegationAttributeExtractor.cpp">\r
+      <Filter>Source Files\attribute\resolver\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\resolver\impl\KeyDescriptorAttributeExtractor.cpp">\r
+      <Filter>Source Files\attribute\resolver\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\resolver\impl\QueryAttributeResolver.cpp">\r
+      <Filter>Source Files\attribute\resolver\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\resolver\impl\SimpleAggregationAttributeResolver.cpp">\r
+      <Filter>Source Files\attribute\resolver\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\resolver\impl\XMLAttributeExtractor.cpp">\r
+      <Filter>Source Files\attribute\resolver\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\filtering\impl\AndMatchFunctor.cpp">\r
+      <Filter>Source Files\attribute\filtering\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\filtering\impl\AnyMatchFunctor.cpp">\r
+      <Filter>Source Files\attribute\filtering\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\filtering\impl\AttributeFilter.cpp">\r
+      <Filter>Source Files\attribute\filtering\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\filtering\impl\AttributeIssuerInEntityGroupFunctor.cpp">\r
+      <Filter>Source Files\attribute\filtering\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\filtering\impl\AttributeIssuerRegexFunctor.cpp">\r
+      <Filter>Source Files\attribute\filtering\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\filtering\impl\AttributeIssuerStringFunctor.cpp">\r
+      <Filter>Source Files\attribute\filtering\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\filtering\impl\AttributeRequesterInEntityGroupFunctor.cpp">\r
+      <Filter>Source Files\attribute\filtering\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\filtering\impl\AttributeRequesterRegexFunctor.cpp">\r
+      <Filter>Source Files\attribute\filtering\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\filtering\impl\AttributeRequesterStringFunctor.cpp">\r
+      <Filter>Source Files\attribute\filtering\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\filtering\impl\AttributeScopeMatchesShibMDScopeFunctor.cpp">\r
+      <Filter>Source Files\attribute\filtering\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\filtering\impl\AttributeScopeRegexFunctor.cpp">\r
+      <Filter>Source Files\attribute\filtering\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\filtering\impl\AttributeScopeStringFunctor.cpp">\r
+      <Filter>Source Files\attribute\filtering\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\filtering\impl\AttributeValueRegexFunctor.cpp">\r
+      <Filter>Source Files\attribute\filtering\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\filtering\impl\AttributeValueStringFunctor.cpp">\r
+      <Filter>Source Files\attribute\filtering\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\filtering\impl\AuthenticationMethodRegexFunctor.cpp">\r
+      <Filter>Source Files\attribute\filtering\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\filtering\impl\AuthenticationMethodStringFunctor.cpp">\r
+      <Filter>Source Files\attribute\filtering\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\filtering\impl\BasicFilteringContext.cpp">\r
+      <Filter>Source Files\attribute\filtering\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\filtering\impl\ChainingAttributeFilter.cpp">\r
+      <Filter>Source Files\attribute\filtering\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\filtering\impl\MatchFunctor.cpp">\r
+      <Filter>Source Files\attribute\filtering\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\filtering\impl\NotMatchFunctor.cpp">\r
+      <Filter>Source Files\attribute\filtering\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\filtering\impl\NumberOfAttributeValuesFunctor.cpp">\r
+      <Filter>Source Files\attribute\filtering\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\filtering\impl\OrMatchFunctor.cpp">\r
+      <Filter>Source Files\attribute\filtering\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="attribute\filtering\impl\XMLAttributeFilter.cpp">\r
+      <Filter>Source Files\attribute\filtering\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="binding\impl\ArtifactResolver.cpp">\r
+      <Filter>Source Files\binding\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="binding\impl\SOAPClient.cpp">\r
+      <Filter>Source Files\binding\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\AbstractHandler.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\AssertionConsumerService.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\AssertionLookup.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\ChainingLogoutInitiator.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\ChainingSessionInitiator.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\CookieSessionInitiator.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\FormSessionInitiator.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\LocalLogoutInitiator.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\LogoutHandler.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\MetadataGenerator.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\RemotedHandler.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\SAML1Consumer.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\SAML2ArtifactResolution.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\SAML2Consumer.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\SAML2Logout.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\SAML2LogoutInitiator.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\SAML2NameIDMgmt.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\SAML2SessionInitiator.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\SAMLDSSessionInitiator.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\SessionHandler.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\SessionInitiator.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\Shib1SessionInitiator.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\StatusHandler.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\TransformSessionInitiator.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="handler\impl\WAYFSessionInitiator.cpp">\r
+      <Filter>Source Files\handler\impl</Filter>\r
+    </ClCompile>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="remoting\impl\SocketListener.h">\r
+      <Filter>Source Files\remoting\impl</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="AbstractSPRequest.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="AccessControl.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="Application.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="base.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="exceptions.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="internal.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="RequestMapper.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="resource.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="ServiceProvider.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="SessionCache.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="SessionCacheEx.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="SPConfig.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="SPRequest.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="TransactionLog.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="version.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="util\CGIParser.h">\r
+      <Filter>Header Files\util</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="util\DOMPropertySet.h">\r
+      <Filter>Header Files\util</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="util\PropertySet.h">\r
+      <Filter>Header Files\util</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="util\SPConstants.h">\r
+      <Filter>Header Files\util</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="util\TemplateParameters.h">\r
+      <Filter>Header Files\util</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="security\PKIXTrustEngine.h">\r
+      <Filter>Header Files\security</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="security\SecurityPolicy.h">\r
+      <Filter>Header Files\security</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="remoting\ddf.h">\r
+      <Filter>Header Files\remoting</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="remoting\ListenerService.h">\r
+      <Filter>Header Files\remoting</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="attribute\Attribute.h">\r
+      <Filter>Header Files\attribute</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="attribute\AttributeDecoder.h">\r
+      <Filter>Header Files\attribute</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="attribute\ExtensibleAttribute.h">\r
+      <Filter>Header Files\attribute</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="attribute\NameIDAttribute.h">\r
+      <Filter>Header Files\attribute</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="attribute\ScopedAttribute.h">\r
+      <Filter>Header Files\attribute</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="attribute\SimpleAttribute.h">\r
+      <Filter>Header Files\attribute</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="attribute\XMLAttribute.h">\r
+      <Filter>Header Files\attribute</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="attribute\resolver\AttributeExtractor.h">\r
+      <Filter>Header Files\attribute\resolver</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="attribute\resolver\AttributeResolver.h">\r
+      <Filter>Header Files\attribute\resolver</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="attribute\resolver\ResolutionContext.h">\r
+      <Filter>Header Files\attribute\resolver</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="attribute\filtering\AttributeFilter.h">\r
+      <Filter>Header Files\attribute\filtering</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="attribute\filtering\BasicFilteringContext.h">\r
+      <Filter>Header Files\attribute\filtering</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="attribute\filtering\FilteringContext.h">\r
+      <Filter>Header Files\attribute\filtering</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="attribute\filtering\FilterPolicyContext.h">\r
+      <Filter>Header Files\attribute\filtering</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="attribute\filtering\MatchFunctor.h">\r
+      <Filter>Header Files\attribute\filtering</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="binding\ArtifactResolver.h">\r
+      <Filter>Header Files\binding</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="binding\SOAPClient.h">\r
+      <Filter>Header Files\binding</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="handler\AbstractHandler.h">\r
+      <Filter>Header Files\handler</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="handler\AssertionConsumerService.h">\r
+      <Filter>Header Files\handler</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="handler\Handler.h">\r
+      <Filter>Header Files\handler</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="handler\LogoutHandler.h">\r
+      <Filter>Header Files\handler</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="handler\RemotedHandler.h">\r
+      <Filter>Header Files\handler</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="handler\SessionInitiator.h">\r
+      <Filter>Header Files\handler</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="metadata\MetadataExt.h">\r
+      <Filter>Header Files\metadata</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="metadata\MetadataProviderCriteria.h">\r
+      <Filter>Header Files\metadata</Filter>\r
+    </ClInclude>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ResourceCompile Include="shibsp.rc">\r
+      <Filter>Resource Files</Filter>\r
+    </ResourceCompile>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="Makefile.am" />\r
+    <None Include="paths.h.in" />\r
+  </ItemGroup>\r
+</Project>
\ No newline at end of file
index 0314896..fdc63a9 100644 (file)
@@ -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
index 66d133b..d9b437d 100644 (file)
@@ -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<walker,walker> getParameters(const char* name) const;
index 0a5dadd..12155fc 100644 (file)
@@ -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<bool,bool> DOMPropertySet::getBool(const char* name, const char* ns) const
 
 pair<bool,const char*> DOMPropertySet::getString(const char* name, const char* ns) const
 {
-    pair<bool,const char*> ret(false,NULL);
+    pair<bool,const char*> ret(false,nullptr);
     map<string,pair<char*,const XMLCh*> >::const_iterator i;
 
     if (ns)
@@ -185,7 +185,7 @@ pair<bool,const char*> DOMPropertySet::getString(const char* name, const char* n
         return pair<bool,const char*>(true,i->second.first);
     else if (m_parent)
         return m_parent->getString(name,ns);
-    return pair<bool,const char*>(false,NULL);
+    return pair<bool,const char*>(false,nullptr);
 }
 
 pair<bool,const XMLCh*> DOMPropertySet::getXMLString(const char* name, const char* ns) const
@@ -201,7 +201,7 @@ pair<bool,const XMLCh*> 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<bool,const XMLCh*>(false,NULL);
+    return pair<bool,const XMLCh*>(false,nullptr);
 }
 
 pair<bool,unsigned int> DOMPropertySet::getUnsignedInt(const char* name, const char* ns) const
@@ -214,7 +214,7 @@ pair<bool,unsigned int> DOMPropertySet::getUnsignedInt(const char* name, const c
         i=m_map.find(name);
 
     if (i!=m_map.end())
-        return pair<bool,unsigned int>(true,strtol(i->second.first,NULL,10));
+        return pair<bool,unsigned int>(true,strtol(i->second.first,nullptr,10));
     else if (m_parent)
         return m_parent->getUnsignedInt(name,ns);
     return pair<bool,unsigned int>(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);
 }
index a42294b..24e11fc 100644 (file)
@@ -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<bool,bool> getBool(const char* name, const char* ns=NULL) const;
-        std::pair<bool,const char*> getString(const char* name, const char* ns=NULL) const;
-        std::pair<bool,const XMLCh*> getXMLString(const char* name, const char* ns=NULL) const;
-        std::pair<bool,unsigned int> getUnsignedInt(const char* name, const char* ns=NULL) const;
-        std::pair<bool,int> getInt(const char* name, const char* ns=NULL) const;
+        std::pair<bool,bool> getBool(const char* name, const char* ns=nullptr) const;
+        std::pair<bool,const char*> getString(const char* name, const char* ns=nullptr) const;
+        std::pair<bool,const XMLCh*> getXMLString(const char* name, const char* ns=nullptr) const;
+        std::pair<bool,unsigned int> getUnsignedInt(const char* name, const char* ns=nullptr) const;
+        std::pair<bool,int> getInt(const char* name, const char* ns=nullptr) const;
         void getAll(std::map<std::string,const char*>& 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<std::string,std::string>* remapper=NULL
+            xmltooling::logging::Category* log=nullptr,
+            xercesc::DOMNodeFilter* filter=nullptr,
+            const std::map<std::string,std::string>* remapper=nullptr
             );
 
     private:
index 98c1091..f7d36cf 100644 (file)
@@ -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<bool,bool> getBool(const char* name, const char* ns=NULL) const=0;
+        virtual std::pair<bool,bool> 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<bool,const char*> getString(const char* name, const char* ns=NULL) const=0;
+        virtual std::pair<bool,const char*> 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<bool,const XMLCh*> getXMLString(const char* name, const char* ns=NULL) const=0;
+        virtual std::pair<bool,const XMLCh*> 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<bool,unsigned int> getUnsignedInt(const char* name, const char* ns=NULL) const=0;
+        virtual std::pair<bool,unsigned int> 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<bool,int> getInt(const char* name, const char* ns=NULL) const=0;
+        virtual std::pair<bool,int> 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;
     };
index 520dfc0..1c37a3e 100644 (file)
@@ -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<bool,const char*> p = m_props->getString(name);
-    return p.first ? p.second : NULL;
+    return p.first ? p.second : nullptr;
 }
 
 string TemplateParameters::toQueryString() const
index 783979c..48cffdf 100644 (file)
@@ -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;
 
index 92e5dca..e2baaa0 100644 (file)
@@ -16,4 +16,4 @@ mdquery_LDADD = \
 
 mdquery_LDFLAGS = $(XMLSEC_LIBS)
 
-EXTRA_DIST = mdquery.vcproj resolvertest.vcproj
+EXTRA_DIST = mdquery.vcxproj resolvertest.vcxproj
index 9b928a8..b8ec308 100644 (file)
@@ -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; i<argc; i++) {
         if (!strcmp(argv[i],"-e") && i+1<argc)
@@ -133,7 +133,7 @@ int main(int argc,char* argv[])
     }
 
     app->getMetadataProvider()->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 (file)
index 0000000..8f93ce0
--- /dev/null
@@ -0,0 +1,213 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{F13141B6-6C87-40BB-8D4E-5CC56EBB4C5A}</ProjectGuid>\r
+    <RootNamespace>mdquery</RootNamespace>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-opensaml2;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>log4shib1.lib;saml2.lib;xmltooling1.lib;xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-opensaml2\$(Configuration);..\..\cpp-xmltooling\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-opensaml2;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>log4shib1.lib;saml2.lib;xmltooling1.lib;xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-opensaml2\$(Platform)\$(Configuration);..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-opensaml2;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_CONSOLE;WIN32;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>log4shib1D.lib;saml2D.lib;xmltooling1D.lib;xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-opensaml2\$(Configuration);..\..\cpp-xmltooling\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Console</SubSystem>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-opensaml2;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_CONSOLE;WIN32;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>log4shib1D.lib;saml2D.lib;xmltooling1D.lib;xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-opensaml2\$(Platform)\$(Configuration);..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Console</SubSystem>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="mdquery.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\shibsp\shibsp.vcxproj">\r
+      <Project>{81f0f7a6-dc36-46ef-957f-f9e81d4403f6}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
index 9a1709d..f68439d 100644 (file)
@@ -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<argc; i++) {
         if (!strcmp(argv[i],"-n") && i+1<argc)
@@ -204,7 +204,7 @@ int main(int argc,char* argv[])
             auto_ptr<saml2::NameID> 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<saml2::Assertion*>(token.get());
             saml1::Assertion* a1 = dynamic_cast<saml1::Assertion*>(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<saml2::NameID> nameidwrapper(v1name ? v2name : NULL);
+            auto_ptr<saml2::NameID> nameidwrapper(v1name ? v2name : nullptr);
 
             if (!issuer)
                 throw FatalProfileException("Unable to determine issuer.");
@@ -278,8 +278,8 @@ int main(int argc,char* argv[])
             }
             
             vector<const Assertion*> tokens(1, dynamic_cast<Assertion*>(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<ResolutionContext> wrapper(ctx);
diff --git a/util/resolvertest.vcxproj b/util/resolvertest.vcxproj
new file mode 100644 (file)
index 0000000..8f2eea3
--- /dev/null
@@ -0,0 +1,215 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{F13141B6-6C87-40BB-8D4E-5CC56EBB4C59}</ProjectGuid>\r
+    <RootNamespace>resolvertest</RootNamespace>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-opensaml2;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>log4shib1.lib;saml2.lib;xmltooling1.lib;xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-opensaml2\$(Configuration);..\..\cpp-xmltooling\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-opensaml2;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>log4shib1.lib;saml2.lib;xmltooling1.lib;xerces-c_3.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-opensaml2\$(Platform)\$(Configuration);..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-opensaml2;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_CONSOLE;WIN32;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>log4shib1D.lib;saml2D.lib;xmltooling1D.lib;xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-opensaml2\$(Configuration);..\..\cpp-xmltooling\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Console</SubSystem>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>.;..;..\..\cpp-opensaml2;..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_CONSOLE;WIN32;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>log4shib1D.lib;saml2D.lib;xmltooling1D.lib;xerces-c_3D.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>..\..\cpp-opensaml2\$(Platform)\$(Configuration);..\..\cpp-xmltooling\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <SubSystem>Console</SubSystem>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="resolvertest.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\shibsp\shibsp.vcxproj">\r
+      <Project>{81f0f7a6-dc36-46ef-957f-f9e81d4403f6}</Project>\r
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file