[java-identity-provider] branch main updated: IDP-2069 Null handling

Rod Widdowson rdw at steadingsoftware.com
Thu Mar 9 15:02:20 UTC 2023


This is an automated email from the git hooks/post-receive script.

rdw pushed a commit to branch main
in repository java-identity-provider.

View the commit online:
http://git.shibboleth.net/view/?p=java-identity-provider.git;a=commit;h=4c7d53d57ced6b2aa67ce08547ade3e9d039057f

The following commit(s) were added to refs/heads/main by this push:
     new 4c7d53d57 IDP-2069 Null handling
4c7d53d57 is described below

commit 4c7d53d57ced6b2aa67ce08547ade3e9d039057f
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Thu Mar 9 15:01:17 2023 +0000

    IDP-2069 Null handling
    
    https://shibboleth.atlassian.net/browse/IDP-2069
    
    Fix some breakages from the OpenSAMl changes
    Use the BaseContext#removeFromParent() method rather than the cumbersome
    "get and check parent then remove" code.
---
 .../shibboleth/idp/authn/impl/ValidateExternalAuthentication.java | 4 +---
 .../idp/authn/revocation/impl/AttributeRevocationCondition.java   | 7 ++-----
 .../java/net/shibboleth/idp/profile/impl/FilterAttributes.java    | 4 +---
 .../saml1/profile/impl/IdPInitiatedSSORequestMessageDecoder.java  | 6 +++++-
 .../saml2/profile/impl/IdPInitiatedSSORequestMessageDecoder.java  | 3 ++-
 .../idp/saml/saml2/profile/impl/SAMLAuthnController.java          | 1 +
 .../idp/saml/saml2/profile/impl/ValidateSAMLAuthentication.java   | 4 +---
 .../java/net/shibboleth/idp/session/impl/DestroySessions.java     | 8 +++-----
 8 files changed, 16 insertions(+), 21 deletions(-)

diff --git a/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ValidateExternalAuthentication.java b/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ValidateExternalAuthentication.java
index 8d5402822..e0fe26010 100644
--- a/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ValidateExternalAuthentication.java
+++ b/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ValidateExternalAuthentication.java
@@ -361,9 +361,7 @@ public class ValidateExternalAuthentication extends AbstractAuditingValidationAc
         try (final ServiceableComponent<AttributeFilter> component = attributeFilterService.getServiceableComponent()) {
             final AttributeFilter filter = component.getComponent();
             filter.filterAttributes(filterContext);
-            final BaseContext parent = filterContext.getParent();
-            assert parent != null;
-            parent.removeSubcontext(filterContext);
+            filterContext.removeFromParent();
             ac.setIdPAttributes(filterContext.getFilteredIdPAttributes().values());
         } catch (final AttributeFilterException e) {
             log.error("{} Error while filtering inbound attributes", getLogPrefix(), e);
diff --git a/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/revocation/impl/AttributeRevocationCondition.java b/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/revocation/impl/AttributeRevocationCondition.java
index 7d17c443d..e4bdb18ce 100644
--- a/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/revocation/impl/AttributeRevocationCondition.java
+++ b/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/revocation/impl/AttributeRevocationCondition.java
@@ -27,7 +27,6 @@ import java.util.function.Function;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
-import org.opensaml.messaging.context.BaseContext;
 import org.opensaml.messaging.context.ScratchContext;
 import org.opensaml.profile.context.ProfileRequestContext;
 import org.slf4j.Logger;
@@ -39,8 +38,8 @@ import net.shibboleth.idp.attribute.StringAttributeValue;
 import net.shibboleth.idp.attribute.resolver.AttributeResolver;
 import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
 import net.shibboleth.idp.authn.AuthenticationResult;
-import net.shibboleth.profile.context.navigate.RelyingPartyIdLookupFunction;
 import net.shibboleth.profile.context.navigate.IssuerLookupFunction;
+import net.shibboleth.profile.context.navigate.RelyingPartyIdLookupFunction;
 import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
 import net.shibboleth.shared.annotation.constraint.NonnullElements;
 import net.shibboleth.shared.annotation.constraint.NotEmpty;
@@ -203,9 +202,7 @@ public class AttributeRevocationCondition extends AbstractInitializableComponent
             }
             
             context.getMap().put(getClass(), records);
-            final BaseContext parent = resolutionContext.getParent();
-            assert parent != null;
-            parent.removeSubcontext(resolutionContext);
+            resolutionContext.removeFromParent();
         }
         
         return isRevoked(principal, input2, (Collection<Instant>) context.getMap().get(getClass()));
diff --git a/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/FilterAttributes.java b/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/FilterAttributes.java
index 8dccd7c80..faf3a6c25 100644
--- a/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/FilterAttributes.java
+++ b/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/FilterAttributes.java
@@ -382,9 +382,7 @@ public class FilterAttributes extends AbstractProfileAction {
         try (final ServiceableComponent<AttributeFilter> component = attributeFilterService.getServiceableComponent()) {
             final AttributeFilter filter = component.getComponent();
             filter.filterAttributes(filterContext);
-            final BaseContext parent = filterContext.getParent();
-            assert parent != null;
-            parent.removeSubcontext(filterContext);
+            filterContext.removeFromParent();
             ac.setIdPAttributes(filterContext.getFilteredIdPAttributes().values());
         } catch (final AttributeFilterException e) {
             log.error("{} Error encountered while filtering attributes", getLogPrefix(), e);
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml1/profile/impl/IdPInitiatedSSORequestMessageDecoder.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml1/profile/impl/IdPInitiatedSSORequestMessageDecoder.java
index abf0b2c91..889996613 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml1/profile/impl/IdPInitiatedSSORequestMessageDecoder.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml1/profile/impl/IdPInitiatedSSORequestMessageDecoder.java
@@ -97,7 +97,11 @@ public class IdPInitiatedSSORequestMessageDecoder extends BaseIdPInitiatedSSOReq
     /** {@inheritDoc} */
     @Override
     @Nullable protected String getMessageToLog() {
-        final  Object message = Constraint.isNotNull((IdPInitiatedSSORequest) getMessageContext().getMessage(), "No message");
+        final MessageContext request = getMessageContext();
+        if (request == null) {
+            return "SAML1 initiated request did not exist?";
+        }
+        final  Object message = Constraint.isNotNull(request.getMessage(), "No message");
         return "SAML 1 IdP-initiated request was: " + message.toString();
     }
     
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/IdPInitiatedSSORequestMessageDecoder.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/IdPInitiatedSSORequestMessageDecoder.java
index 00fe03489..94930bd92 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/IdPInitiatedSSORequestMessageDecoder.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/IdPInitiatedSSORequestMessageDecoder.java
@@ -153,7 +153,8 @@ public class IdPInitiatedSSORequestMessageDecoder extends BaseIdPInitiatedSSOReq
     /** {@inheritDoc} */
     @Override
     @Nullable protected String getMessageToLog() {
-        final Object message = getMessageContext().getMessage();
+        final MessageContext ctx = getMessageContext();
+        final Object message = ctx == null ? null : ctx.getMessage();
         if (message == null || !(message instanceof XMLObject)) {
             log.warn("Decoded message was null or invalid, nothing to log");
             return null;
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/SAMLAuthnController.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/SAMLAuthnController.java
index c33cad224..03847feff 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/SAMLAuthnController.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/SAMLAuthnController.java
@@ -260,6 +260,7 @@ public class SAMLAuthnController extends AbstractInitializableComponent {
                 decoder.initialize();
                 decoder.decode();
                 final MessageContext messageContext = decoder.getMessageContext();
+                assert messageContext != null;
                 messageContext.addSubcontext(new SAMLMessageReceivedEndpointContext(httpRequest));
                 nestedPRC.setInboundMessageContext(messageContext);
             } finally {
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/ValidateSAMLAuthentication.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/ValidateSAMLAuthentication.java
index cadfb0efa..015518c92 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/ValidateSAMLAuthentication.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/ValidateSAMLAuthentication.java
@@ -563,9 +563,7 @@ public class ValidateSAMLAuthentication extends AbstractValidationAction {
         try (final ServiceableComponent<AttributeFilter> component = service.getServiceableComponent()) {
             final AttributeFilter filter = component.getComponent();
             filter.filterAttributes(filterContext);
-            final BaseContext parent = filterContext.getParent();
-            assert parent != null;
-            parent.removeSubcontext(filterContext);
+            filterContext.removeFromParent();
             assert attributeContext!=null;
             attributeContext.setIdPAttributes(filterContext.getFilteredIdPAttributes().values());
         } catch (final AttributeFilterException e) {
diff --git a/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/DestroySessions.java b/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/DestroySessions.java
index ef6fa0f2e..0d2556dfe 100644
--- a/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/DestroySessions.java
+++ b/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/DestroySessions.java
@@ -153,7 +153,7 @@ public class DestroySessions extends AbstractProfileAction {
         
         final LogoutContext lc = logoutContext;
         assert lc != null;
-        final SessionContext sc = sessionContext;
+        SessionContext sc = sessionContext;
         for (final IdPSession session : lc.getIdPSessions()) {
             assert session!= null;
             final IdPSession idpSession = sc != null ? sc.getIdPSession() : null;
@@ -162,10 +162,8 @@ public class DestroySessions extends AbstractProfileAction {
             final boolean unbind = idpSession != null ? idpSession.equals(session) : false;
             if (unbind) {
                 assert sc != null;
-                final BaseContext parent = sc.getParent();
-                assert parent != null;
-                parent.removeSubcontext(sc);
-                sessionContext = null;
+                sc.removeFromParent();
+                sc = sessionContext = null;
             }
             
             try {

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list