mirror of
https://codeberg.org/Mercury-IM/Smack
synced 2025-09-09 10:19:41 +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:
parent
899813a668
commit
31e4e1faf2
24 changed files with 80 additions and 109 deletions
|
@ -78,9 +78,9 @@ public class AdHocCommandDataProvider extends IQProvider<AdHocCommandData> {
|
|||
}
|
||||
while (!done) {
|
||||
eventType = parser.next();
|
||||
elementName = parser.getName();
|
||||
namespace = parser.getNamespace();
|
||||
if (eventType == XmlPullParser.Event.START_ELEMENT) {
|
||||
elementName = parser.getName();
|
||||
if (parser.getName().equals("actions")) {
|
||||
String execute = parser.getAttributeValue("", "execute");
|
||||
if (execute != null) {
|
||||
|
|
|
@ -31,7 +31,6 @@ import org.jivesoftware.smack.packet.XmlEnvironment;
|
|||
import org.jivesoftware.smack.xml.XmlPullParser;
|
||||
import org.jivesoftware.smack.xml.XmlPullParserException;
|
||||
|
||||
import org.jivesoftware.smackx.jingle.element.JingleContentTransport;
|
||||
import org.jivesoftware.smackx.jingle.element.JingleContentTransportCandidate;
|
||||
import org.jivesoftware.smackx.jingle.provider.JingleContentTransportProvider;
|
||||
import org.jivesoftware.smackx.jingle.transports.jingle_s5b.elements.JingleS5BTransport;
|
||||
|
@ -62,9 +61,9 @@ public class JingleS5BTransportProvider extends JingleContentTransportProvider<J
|
|||
JingleS5BTransportCandidate.Builder cb;
|
||||
outerloop: while (true) {
|
||||
XmlPullParser.TagEvent tag = parser.nextTag();
|
||||
String name = parser.getName();
|
||||
switch (tag) {
|
||||
case START_ELEMENT: {
|
||||
String name = parser.getName();
|
||||
switch (name) {
|
||||
|
||||
case JingleContentTransportCandidate.ELEMENT:
|
||||
|
@ -110,8 +109,7 @@ public class JingleS5BTransportProvider extends JingleContentTransportProvider<J
|
|||
break;
|
||||
|
||||
case END_ELEMENT: {
|
||||
switch (name) {
|
||||
case JingleContentTransport.ELEMENT:
|
||||
if (parser.getDepth() == initialDepth) {
|
||||
break outerloop;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -45,11 +45,11 @@ public class MoodProvider extends ExtensionElementProvider<MoodElement> {
|
|||
|
||||
outerloop: while (true) {
|
||||
XmlPullParser.Event tag = parser.next();
|
||||
String name = parser.getName();
|
||||
String namespace = parser.getNamespace();
|
||||
|
||||
switch (tag) {
|
||||
case START_ELEMENT:
|
||||
String name = parser.getName();
|
||||
String namespace = parser.getNamespace();
|
||||
if (MoodElement.ELEM_TEXT.equals(name)) {
|
||||
text = parser.nextText();
|
||||
continue outerloop;
|
||||
|
@ -74,7 +74,7 @@ public class MoodProvider extends ExtensionElementProvider<MoodElement> {
|
|||
}
|
||||
|
||||
case END_ELEMENT:
|
||||
if (MoodElement.ELEMENT.equals(name)) {
|
||||
if (MoodElement.ELEMENT.equals(parser.getName())) {
|
||||
MoodElement.MoodSubjectElement subjectElement = (mood == null && concretisation == null) ?
|
||||
null : new MoodElement.MoodSubjectElement(mood, concretisation);
|
||||
return new MoodElement(subjectElement, text);
|
||||
|
|
|
@ -46,8 +46,6 @@ public class StreamInitiationProvider extends IQProvider<StreamInitiation> {
|
|||
|
||||
@Override
|
||||
public StreamInitiation parse(XmlPullParser parser, int initialDepth, XmlEnvironment xmlEnvironment) throws XmlPullParserException, IOException, SmackParsingException {
|
||||
boolean done = false;
|
||||
|
||||
// si
|
||||
String id = parser.getAttributeValue("", "id");
|
||||
String mimeType = parser.getAttributeValue("", "mime-type");
|
||||
|
@ -66,13 +64,11 @@ public class StreamInitiationProvider extends IQProvider<StreamInitiation> {
|
|||
DataForm form = null;
|
||||
DataFormProvider dataFormProvider = new DataFormProvider();
|
||||
|
||||
String elementName;
|
||||
String namespace;
|
||||
while (!done) {
|
||||
outerloop: while (true) {
|
||||
XmlPullParser.Event eventType = parser.next();
|
||||
elementName = parser.getName();
|
||||
namespace = parser.getNamespace();
|
||||
if (eventType == XmlPullParser.Event.START_ELEMENT) {
|
||||
String elementName = parser.getName();
|
||||
String namespace = parser.getNamespace();
|
||||
if (elementName.equals("file")) {
|
||||
name = parser.getAttributeValue("", "name");
|
||||
size = parser.getAttributeValue("", "size");
|
||||
|
@ -87,9 +83,10 @@ public class StreamInitiationProvider extends IQProvider<StreamInitiation> {
|
|||
form = dataFormProvider.parse(parser);
|
||||
}
|
||||
} else if (eventType == XmlPullParser.Event.END_ELEMENT) {
|
||||
if (elementName.equals("si")) {
|
||||
done = true;
|
||||
} else if (elementName.equals("file")) {
|
||||
if (parser.getDepth() == initialDepth) {
|
||||
break outerloop;
|
||||
}
|
||||
if (parser.getName().equals("file")) {
|
||||
long fileSize = 0;
|
||||
if (size != null && size.trim().length() != 0) {
|
||||
try {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/**
|
||||
*
|
||||
* Copyright 2003-2007 Jive Software, 2014-2019 Florian Schmaus
|
||||
* Copyright 2003-2007 Jive Software, 2014-2021 Florian Schmaus
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -40,8 +40,8 @@ public class XHTMLExtensionProvider extends ExtensionElementProvider<XHTMLExtens
|
|||
|
||||
while (true) {
|
||||
XmlPullParser.Event eventType = parser.getEventType();
|
||||
String name = parser.getName();
|
||||
if (eventType == XmlPullParser.Event.START_ELEMENT) {
|
||||
String name = parser.getName();
|
||||
if (name.equals(Message.BODY)) {
|
||||
xhtmlExtension.addBody(PacketParserUtils.parseElement(parser));
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue