diff --git a/acl/src/main/java/org/springframework/security/acls/AclPermissionEvaluator.java b/acl/src/main/java/org/springframework/security/acls/AclPermissionEvaluator.java index e1bc0f20cf..446a403c11 100644 --- a/acl/src/main/java/org/springframework/security/acls/AclPermissionEvaluator.java +++ b/acl/src/main/java/org/springframework/security/acls/AclPermissionEvaluator.java @@ -23,6 +23,7 @@ import java.util.Locale; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.jspecify.annotations.Nullable; import org.springframework.core.log.LogMessage; import org.springframework.security.access.PermissionEvaluator; @@ -73,7 +74,7 @@ public class AclPermissionEvaluator implements PermissionEvaluator { * be overridden using a null check in the expression itself). */ @Override - public boolean hasPermission(Authentication authentication, Object domainObject, Object permission) { + public boolean hasPermission(Authentication authentication, @Nullable Object domainObject, Object permission) { if (domainObject == null) { return false; } diff --git a/core/src/main/java/org/springframework/security/access/PermissionEvaluator.java b/core/src/main/java/org/springframework/security/access/PermissionEvaluator.java index ea106e3227..08687e3f6c 100644 --- a/core/src/main/java/org/springframework/security/access/PermissionEvaluator.java +++ b/core/src/main/java/org/springframework/security/access/PermissionEvaluator.java @@ -18,6 +18,8 @@ package org.springframework.security.access; import java.io.Serializable; +import org.jspecify.annotations.Nullable; + import org.springframework.aop.framework.AopInfrastructureBean; import org.springframework.security.core.Authentication; @@ -39,7 +41,7 @@ public interface PermissionEvaluator extends AopInfrastructureBean { * expression system. Not null. * @return true if the permission is granted, false otherwise */ - boolean hasPermission(Authentication authentication, Object targetDomainObject, Object permission); + boolean hasPermission(Authentication authentication, @Nullable Object targetDomainObject, Object permission); /** * Alternative method for evaluating a permission where only the identifier of the diff --git a/core/src/main/java/org/springframework/security/access/expression/DenyAllPermissionEvaluator.java b/core/src/main/java/org/springframework/security/access/expression/DenyAllPermissionEvaluator.java index b98488c5ab..c9fabe57b5 100644 --- a/core/src/main/java/org/springframework/security/access/expression/DenyAllPermissionEvaluator.java +++ b/core/src/main/java/org/springframework/security/access/expression/DenyAllPermissionEvaluator.java @@ -20,6 +20,7 @@ import java.io.Serializable; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.jspecify.annotations.Nullable; import org.springframework.core.log.LogMessage; import org.springframework.security.access.PermissionEvaluator; @@ -40,7 +41,7 @@ public class DenyAllPermissionEvaluator implements PermissionEvaluator { * @return false always */ @Override - public boolean hasPermission(Authentication authentication, Object target, Object permission) { + public boolean hasPermission(Authentication authentication, @Nullable Object target, Object permission) { this.logger.warn(LogMessage.format("Denying user %s permission '%s' on object %s", authentication.getName(), permission, target)); return false;