Punycode can throw index out of bounds

Stephen Paul Weber created

Change summary

src/main/java/eu/siacs/conversations/entities/Bookmark.java     | 2 +-
src/main/java/eu/siacs/conversations/entities/MucOptions.java   | 2 +-
src/main/java/eu/siacs/conversations/parser/AbstractParser.java | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/entities/Bookmark.java 🔗

@@ -201,7 +201,7 @@ public class Bookmark extends Element implements ListItem {
 		} catch (final IllegalArgumentException e) {
 			try {
 				return tryFix ? getFullJid(gnu.inet.encoding.Punycode.encode(nick), false) : null;
-			} catch (final gnu.inet.encoding.PunycodeException e2) {
+			} catch (final gnu.inet.encoding.PunycodeException | ArrayIndexOutOfBoundsException e2) {
 				return null;
 			}
 		}

src/main/java/eu/siacs/conversations/entities/MucOptions.java 🔗

@@ -620,7 +620,7 @@ public class MucOptions {
         } catch (final IllegalArgumentException e) {
             try {
                 return tryFix ? createJoinJid(gnu.inet.encoding.Punycode.encode(nick), false) : null;
-            } catch (final gnu.inet.encoding.PunycodeException e2) {
+            } catch (final gnu.inet.encoding.PunycodeException | ArrayIndexOutOfBoundsException e2) {
                 return null;
             }
         }

src/main/java/eu/siacs/conversations/parser/AbstractParser.java 🔗

@@ -154,7 +154,7 @@ public abstract class AbstractParser {
 			if (nickname != null && nick != null && !nick.equals(nickname) && gnu.inet.encoding.Punycode.decode(nick).equals(nickname)) {
 				nick = nickname;
 			}
-		} catch (final gnu.inet.encoding.PunycodeException e) { }
+		} catch (final gnu.inet.encoding.PunycodeException | ArrayIndexOutOfBoundsException e) { }
 		MucOptions.User user = new MucOptions.User(conference.getMucOptions(), fullJid, nick);
 		if (InvalidJid.isValid(realJid)) {
 			user.setRealJid(realJid);