1
0
Fork 0
mirror of https://codeberg.org/Mercury-IM/Smack synced 2025-09-09 18:29:45 +02:00

Do not call XmlPullParser.getName() when the event is unknown

XmlPullParser.getName() only returns a result if the current parser
event is START_ELEMENT or END_ELEMENT. If this is not the case, then
the method may throw (if StAX is used).
This commit is contained in:
Florian Schmaus 2021-07-06 12:33:11 +02:00
parent 899813a668
commit 31e4e1faf2
24 changed files with 80 additions and 109 deletions

View file

@ -341,7 +341,6 @@ public class RTPBridge extends IQ {
boolean done = false;
XmlPullParser.Event eventType;
String elementName;
if (!parser.getNamespace().equals(RTPBridge.NAMESPACE))
// TODO: Should be SmackParseException.
@ -357,9 +356,9 @@ public class RTPBridge extends IQ {
// Start processing sub-elements
while (!done) {
eventType = parser.next();
elementName = parser.getName();
if (eventType == XmlPullParser.Event.START_ELEMENT) {
String elementName = parser.getName();
if (elementName.equals("candidate")) {
for (int i = 0; i < parser.getAttributeCount(); i++) {
if (parser.getAttributeName(i).equals("ip"))

View file

@ -72,14 +72,13 @@ public abstract class JingleContentDescriptionProvider extends ExtensionElementP
public JingleContentDescription parse(XmlPullParser parser,
int initialDepth, XmlEnvironment xmlEnvironment) throws XmlPullParserException,
IOException {
boolean done = false;
JingleContentDescription desc = getInstance();
while (!done) {
outerloop: while (true) {
XmlPullParser.Event eventType = parser.next();
String name = parser.getName();
if (eventType == XmlPullParser.Event.START_ELEMENT) {
String name = parser.getName();
if (name.equals(JingleContentDescription.JinglePayloadType.NODENAME)) {
desc.addJinglePayloadType(parsePayload(parser));
} else {
@ -87,8 +86,8 @@ public abstract class JingleContentDescriptionProvider extends ExtensionElementP
throw new IOException("Unknow element \"" + name + "\" in content.");
}
} else if (eventType == XmlPullParser.Event.END_ELEMENT) {
if (name.equals(JingleContentDescription.NODENAME)) {
done = true;
if (parser.getDepth() == initialDepth) {
break outerloop;
}
}
}

View file

@ -71,14 +71,12 @@ public abstract class JingleDescriptionProvider extends ExtensionElementProvider
*/
@Override
public JingleDescription parse(XmlPullParser parser, int initialDepth, XmlEnvironment xmlEnvironment) throws XmlPullParserException, IOException {
boolean done = false;
JingleDescription desc = getInstance();
while (!done) {
outerloop: while (true) {
XmlPullParser.Event eventType = parser.next();
String name = parser.getName();
if (eventType == XmlPullParser.Event.START_ELEMENT) {
String name = parser.getName();
if (name.equals(PayloadType.NODENAME)) {
desc.addPayloadType(parsePayload(parser));
} else {
@ -86,8 +84,8 @@ public abstract class JingleDescriptionProvider extends ExtensionElementProvider
throw new IOException("Unknow element \"" + name + "\" in content.");
}
} else if (eventType == XmlPullParser.Event.END_ELEMENT) {
if (name.equals(JingleDescription.NODENAME)) {
done = true;
if (parser.getDepth() == initialDepth) {
break outerloop;
}
}
}

View file

@ -84,10 +84,10 @@ public class JingleProvider extends IQProvider<Jingle> {
// Start processing sub-elements
while (!done) {
eventType = parser.next();
elementName = parser.getName();
namespace = parser.getNamespace();
if (eventType == XmlPullParser.Event.START_ELEMENT) {
elementName = parser.getName();
namespace = parser.getNamespace();
// Parse some well know subelements, depending on the namespaces
// and element names...

View file

@ -54,14 +54,13 @@ public abstract class JingleTransportProvider extends ExtensionElementProvider<J
*/
@Override
public JingleTransport parse(XmlPullParser parser, int initialDepth, XmlEnvironment xmlEnvironment) throws XmlPullParserException, IOException {
boolean done = false;
JingleTransport trans = getInstance();
while (!done) {
outerloop: while (true) {
XmlPullParser.Event eventType = parser.next();
String name = parser.getName();
if (eventType == XmlPullParser.Event.START_ELEMENT) {
String name = parser.getName();
if (name.equals(JingleTransportCandidate.NODENAME)) {
JingleTransportCandidate jtc = parseCandidate(parser);
if (jtc != null) trans.addCandidate(jtc);
@ -72,8 +71,8 @@ public abstract class JingleTransportProvider extends ExtensionElementProvider<J
}
}
else if (eventType == XmlPullParser.Event.END_ELEMENT) {
if (name.equals(JingleTransport.NODENAME)) {
done = true;
if (parser.getDepth() == initialDepth) {
break outerloop;
}
}
}