From 8a0f69b9553a511878aaa6134738bc606b9b94d9 Mon Sep 17 00:00:00 2001 From: Luke Taylor Date: Mon, 30 Nov 2009 22:00:49 +0000 Subject: [PATCH] SEC-1295: Placing Security on Roo Aspected method fails. Added suggested fix - check for null target and use Signature.declaredType instead. --- .../method/AbstractMethodSecurityMetadataSource.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/org/springframework/security/access/method/AbstractMethodSecurityMetadataSource.java b/core/src/main/java/org/springframework/security/access/method/AbstractMethodSecurityMetadataSource.java index aa8844b1b6..dbd13139f1 100644 --- a/core/src/main/java/org/springframework/security/access/method/AbstractMethodSecurityMetadataSource.java +++ b/core/src/main/java/org/springframework/security/access/method/AbstractMethodSecurityMetadataSource.java @@ -55,7 +55,14 @@ public abstract class AbstractMethodSecurityMetadataSource implements MethodSecu if (object instanceof JoinPoint) { JoinPoint jp = (JoinPoint) object; - Class targetClass = jp.getTarget().getClass(); + Class targetClass; + + if (jp.getTarget() != null) { + targetClass = jp.getTarget().getClass(); + } else { + // SEC-1295: target may be null if an ITD is in use + targetClass = jp.getSignature().getDeclaringType(); + } String targetMethodName = jp.getStaticPart().getSignature().getName(); Class[] types = ((CodeSignature) jp.getStaticPart().getSignature()).getParameterTypes(); Class declaringType = ((CodeSignature) jp.getStaticPart().getSignature()).getDeclaringType();