From 608dab28bffb1a61372a38c8b02d7b428ceda7c9 Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Tue, 19 Feb 2013 09:18:15 -0800 Subject: [PATCH] Protect against ArrayIndexOutOfBoundsException Update logic in AbstractAutowireCapableBeanFactory.predictBeanType to protect against a ArrayIndexOutOfBoundsException. Issue: SPR-10304 --- .../factory/support/AbstractAutowireCapableBeanFactory.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java index f6291331bf..8193abc4ed 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java @@ -583,8 +583,9 @@ public abstract class AbstractAutowireCapableBeanFactory extends AbstractBeanFac if (bp instanceof SmartInstantiationAwareBeanPostProcessor) { SmartInstantiationAwareBeanPostProcessor ibp = (SmartInstantiationAwareBeanPostProcessor) bp; Class predictedType = ibp.predictBeanType(beanClass, beanName); - if (predictedType != null && (typesToMatch.length != 1 || - !FactoryBean.class.equals(typesToMatch[0]) || FactoryBean.class.isAssignableFrom(predictedType))) { + if (predictedType != null && (typesToMatch.length > 1 || + (typesToMatch.length > 0 && !FactoryBean.class.equals(typesToMatch[0])) || + FactoryBean.class.isAssignableFrom(predictedType))) { return predictedType; } }