Check for illegal arguments to the toASCII func

Sam Whited created

Change summary

src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java |  8 ++
src/main/java/eu/siacs/conversations/xmpp/jid/Jid.java        | 12 ++++
2 files changed, 17 insertions(+), 3 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java 🔗

@@ -157,7 +157,13 @@ public class XmppConnection implements Runnable {
 				while (socketError && values.size() > i) {
 					Bundle namePort = (Bundle) values.get(i);
 					try {
-						String srvRecordServer = IDN.toASCII(namePort.getString("name"));
+						String srvRecordServer;
+                        try {
+                            srvRecordServer=IDN.toASCII(namePort.getString("name"));
+                        } catch (final IllegalArgumentException e) {
+                            // TODO: Handle me?`
+                            srvRecordServer = "";
+                        }
 						int srvRecordPort = namePort.getInt("port");
 						String srvIpServer = namePort.getString("ipv4");
 						InetSocketAddress addr;

src/main/java/eu/siacs/conversations/xmpp/jid/Jid.java 🔗

@@ -108,9 +108,17 @@ public final class Jid {
 
         // Remove trailling "." before storing the domain part.
         if (dp.endsWith(".")) {
-            domainpart = IDN.toASCII(dp.substring(0, dp.length() - 1), IDN.USE_STD3_ASCII_RULES);
+            try {
+                domainpart = IDN.toASCII(dp.substring(0, dp.length() - 1), IDN.USE_STD3_ASCII_RULES);
+            } catch (final IllegalArgumentException e) {
+                throw new InvalidJidException(e);
+            }
         } else {
-            domainpart = IDN.toASCII(dp, IDN.USE_STD3_ASCII_RULES);
+            try {
+                domainpart = IDN.toASCII(dp, IDN.USE_STD3_ASCII_RULES);
+            } catch (final IllegalArgumentException e) {
+                throw new InvalidJidException(e);
+            }
         }
 
         // TODO: Find a proper domain validation library; validate individual parts, separators, etc.