From ba6968fc79c36aa4299cf082a25b8fd0877b2060 Mon Sep 17 00:00:00 2001 From: Florian Schmaus Date: Wed, 3 Mar 2021 21:41:07 +0100 Subject: [PATCH] [xmlparser-stax] Fix potential IAE in StaxXmlPullParser.getNamespace() StAX's NamespaceContext.getNamespaceURI(String) is allowed to throw an IllegalArgumentException in case the argument is null. We simply re-use getNamespace(String) which will substitute the default namespace if the argument is null to avoid this. Connection closed due to an exception java.lang.IllegalArgumentException: Illegal to pass null as argument at com.ctc.wstx.sr.NsInputElementStack.getNamespaceURI(NsInputElementStack.java:486) at org.jivesoftware.smack.xml.stax.StaxXmlPullParser.getNamespace(StaxXmlPullParser.java:113) at org.jivesoftware.smack.AbstractXMPPConnection.parseFeatures(AbstractXMPPConnection.java:1852) at org.jivesoftware.smack.AbstractXMPPConnection.parseFeaturesAndNotify(AbstractXMPPConnection.java:1887) at org.jivesoftware.smack.tcp.XMPPTCPConnection.access$1300(XMPPTCPConnection.java:130) at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPConnection.java:983) at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$700(XMPPTCPConnection.java:913) at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(XMPPTCPConnection.java:936) at java.lang.Thread.run(Thread.java:748) Fixes SMACK-903 --- .../org/jivesoftware/smack/xml/stax/StaxXmlPullParser.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/smack-xmlparser-stax/src/main/java/org/jivesoftware/smack/xml/stax/StaxXmlPullParser.java b/smack-xmlparser-stax/src/main/java/org/jivesoftware/smack/xml/stax/StaxXmlPullParser.java index 56542fc97..10f3453eb 100644 --- a/smack-xmlparser-stax/src/main/java/org/jivesoftware/smack/xml/stax/StaxXmlPullParser.java +++ b/smack-xmlparser-stax/src/main/java/org/jivesoftware/smack/xml/stax/StaxXmlPullParser.java @@ -108,9 +108,8 @@ public final class StaxXmlPullParser implements XmlPullParser { @Override public String getNamespace() { - NamespaceContext namespaceContext = xmlStreamReader.getNamespaceContext(); String prefix = getPrefix(); - return namespaceContext.getNamespaceURI(prefix); + return getNamespace(prefix); } @Override