From f8eafb457a216fdb5833afcdd955dbc37c143764 Mon Sep 17 00:00:00 2001 From: Ethan Katnic Date: Thu, 22 Aug 2024 10:33:07 -0700 Subject: [PATCH] Add casting check for create() provider --- .../AwsCredentialsProviderPropertyValueDecoder.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/amazon-kinesis-client-multilang/src/main/java/software/amazon/kinesis/multilang/config/AwsCredentialsProviderPropertyValueDecoder.java b/amazon-kinesis-client-multilang/src/main/java/software/amazon/kinesis/multilang/config/AwsCredentialsProviderPropertyValueDecoder.java index 2246d057..1e94ab56 100644 --- a/amazon-kinesis-client-multilang/src/main/java/software/amazon/kinesis/multilang/config/AwsCredentialsProviderPropertyValueDecoder.java +++ b/amazon-kinesis-client-multilang/src/main/java/software/amazon/kinesis/multilang/config/AwsCredentialsProviderPropertyValueDecoder.java @@ -187,9 +187,16 @@ class AwsCredentialsProviderPropertyValueDecoder implements IPropertyValueDecode return constructor.construct(); } catch (InstantiationException e) { try { + // Try to create an instance using .create() Method createMethod = clazz.getDeclaredMethod("create"); if (Modifier.isStatic(createMethod.getModifiers())) { - return (T) createMethod.invoke(null); + Object provider = createMethod.invoke(null); + if (provider instanceof AwsCredentialsProvider) { + return (T) provider; + } else { + log.warn("Returned provider is not an instance of {}", AwsCredentialsProvider.class.getName()); + return null; + } } else { log.warn("Found non-static create() method in {}", providerName); }