From 2c83c73005df0ac17e4820e242575183a8644b0e Mon Sep 17 00:00:00 2001 From: Florian Schmaus Date: Sat, 11 Apr 2020 18:04:15 +0200 Subject: [PATCH] core: Avoid ClassCastException in getExtension(Class) Ensure that he returned extension element is actually of the correct type. It should not be common, but in theory, Smack's provider architecture would allow for different types to be returned than the ones one may expect. --- .../java/org/jivesoftware/smack/packet/StanzaView.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/smack-core/src/main/java/org/jivesoftware/smack/packet/StanzaView.java b/smack-core/src/main/java/org/jivesoftware/smack/packet/StanzaView.java index 981898965..9ee3b6933 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/packet/StanzaView.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/packet/StanzaView.java @@ -87,10 +87,14 @@ public interface StanzaView extends XmlLangElement { return false; } - @SuppressWarnings("unchecked") default E getExtension(Class extensionElementClass) { QName qname = XmppElementUtil.getQNameFor(extensionElementClass); - return (E) getExtension(qname); + ExtensionElement extensionElement = getExtension(qname); + if (!extensionElementClass.isInstance(extensionElement)) { + return null; + } + + return extensionElementClass.cast(extensionElement); } /**