1
0
Fork 0
mirror of https://github.com/vanitasvitae/Smack.git synced 2025-09-09 17:19:39 +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

@ -71,22 +71,13 @@ public class OfferConfirmation extends SimpleIQ {
boolean done = false;
while (!done) {
parser.next();
String elementName = parser.getName();
if (parser.getEventType() == XmlPullParser.Event.START_ELEMENT && "user-jid".equals(elementName)) {
try {
confirmation.setUserJID(parser.nextText());
}
catch (NumberFormatException nfe) {
}
if (parser.getEventType() == XmlPullParser.Event.START_ELEMENT && "user-jid".equals(parser.getName())) {
confirmation.setUserJID(parser.nextText());
}
else if (parser.getEventType() == XmlPullParser.Event.START_ELEMENT && "session-id".equals(elementName)) {
try {
confirmation.setSessionID(Long.valueOf(parser.nextText()));
}
catch (NumberFormatException nfe) {
}
else if (parser.getEventType() == XmlPullParser.Event.START_ELEMENT && "session-id".equals(parser.getName())) {
confirmation.setSessionID(Long.valueOf(parser.nextText()));
}
else if (parser.getEventType() == XmlPullParser.Event.END_ELEMENT && "offer-confirmation".equals(elementName)) {
else if (parser.getEventType() == XmlPullParser.Event.END_ELEMENT && "offer-confirmation".equals(parser.getName())) {
done = true;
}
}

View file

@ -19,6 +19,8 @@ package org.jivesoftware.smackx.workgroup.packet;
import java.io.IOException;
import javax.xml.namespace.QName;
import org.jivesoftware.smack.packet.ExtensionElement;
import org.jivesoftware.smack.packet.XmlEnvironment;
import org.jivesoftware.smack.provider.ExtensionElementProvider;
@ -42,6 +44,8 @@ public class QueueUpdate implements ExtensionElement {
*/
public static final String NAMESPACE = "http://jabber.org/protocol/workgroup";
public static final QName QNAME = new QName(NAMESPACE, ELEMENT_NAME);
private final int position;
private final int remainingTime;
@ -104,22 +108,13 @@ public class QueueUpdate implements ExtensionElement {
int timeRemaining = -1;
while (!done) {
parser.next();
String elementName = parser.getName();
if (parser.getEventType() == XmlPullParser.Event.START_ELEMENT && "position".equals(elementName)) {
try {
position = Integer.parseInt(parser.nextText());
}
catch (NumberFormatException nfe) {
}
if (parser.getEventType() == XmlPullParser.Event.START_ELEMENT && "position".equals(parser.getName())) {
position = Integer.parseInt(parser.nextText());
}
else if (parser.getEventType() == XmlPullParser.Event.START_ELEMENT && "time".equals(elementName)) {
try {
timeRemaining = Integer.parseInt(parser.nextText());
}
catch (NumberFormatException nfe) {
}
else if (parser.getEventType() == XmlPullParser.Event.START_ELEMENT && "time".equals(parser.getName())) {
timeRemaining = Integer.parseInt(parser.nextText());
}
else if (parser.getEventType() == XmlPullParser.Event.END_ELEMENT && "queue-status".equals(elementName)) {
else if (parser.getEventType() == XmlPullParser.Event.END_ELEMENT && "queue-status".equals(parser.getName())) {
done = true;
}
}

View file

@ -175,11 +175,10 @@ public class RoomInvitation implements ExtensionElement {
final RoomInvitation invitation = new RoomInvitation();
invitation.type = Type.valueOf(parser.getAttributeValue("", "type"));
boolean done = false;
while (!done) {
outerloop: while (true) {
parser.next();
String elementName = parser.getName();
if (parser.getEventType() == XmlPullParser.Event.START_ELEMENT) {
String elementName = parser.getName();
if ("session".equals(elementName)) {
invitation.sessionID = parser.getAttributeValue("", "id");
}
@ -199,8 +198,8 @@ public class RoomInvitation implements ExtensionElement {
invitation.room = JidCreate.entityBareFrom(roomString);
}
}
else if (parser.getEventType() == XmlPullParser.Event.END_ELEMENT && ELEMENT_NAME.equals(elementName)) {
done = true;
else if (parser.getEventType() == XmlPullParser.Event.END_ELEMENT && parser.getDepth() == initialDepth) {
break outerloop;
}
}
return invitation;

View file

@ -170,11 +170,10 @@ public class RoomTransfer implements ExtensionElement {
final RoomTransfer invitation = new RoomTransfer();
invitation.type = RoomTransfer.Type.valueOf(parser.getAttributeValue("", "type"));
boolean done = false;
while (!done) {
outerloop: while (true) {
parser.next();
String elementName = parser.getName();
if (parser.getEventType() == XmlPullParser.Event.START_ELEMENT) {
String elementName = parser.getName();
if ("session".equals(elementName)) {
invitation.sessionID = parser.getAttributeValue("", "id");
}
@ -191,8 +190,8 @@ public class RoomTransfer implements ExtensionElement {
invitation.room = parser.nextText();
}
}
else if (parser.getEventType() == XmlPullParser.Event.END_ELEMENT && ELEMENT_NAME.equals(elementName)) {
done = true;
else if (parser.getEventType() == XmlPullParser.Event.END_ELEMENT && parser.getDepth() == initialDepth) {
break outerloop;
}
}
return invitation;