properly null check ufrag and pwd before whitespace checking. fixes #3956

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/persistance/FileBackend.java        |  2 
src/main/java/eu/siacs/conversations/xmpp/jingle/SessionDescription.java | 10 
2 files changed, 7 insertions(+), 5 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/persistance/FileBackend.java 🔗

@@ -77,7 +77,7 @@ public class FileBackend {
 
     private static final String FILE_PROVIDER = ".files";
     private static final float IGNORE_PADDING = 0.15f;
-    private XmppConnectionService mXmppConnectionService;
+    private final XmppConnectionService mXmppConnectionService;
 
     public FileBackend(XmppConnectionService service) {
         this.mXmppConnectionService = service;

src/main/java/eu/siacs/conversations/xmpp/jingle/SessionDescription.java 🔗

@@ -143,14 +143,16 @@ public class SessionDescription {
             final ArrayListMultimap<String, String> mediaAttributes = ArrayListMultimap.create();
             final String ufrag = transport.getAttribute("ufrag");
             final String pwd = transport.getAttribute("pwd");
-            if (!Strings.isNullOrEmpty(ufrag)) {
-                mediaAttributes.put("ice-ufrag", ufrag);
+            if (Strings.isNullOrEmpty(ufrag)) {
+                throw new IllegalArgumentException("Transport element is missing required ufrag attribute");
             }
             checkNoWhitespace(ufrag, "ufrag value must not contain any whitespaces");
-            if (!Strings.isNullOrEmpty(pwd)) {
-                mediaAttributes.put("ice-pwd", pwd);
+            mediaAttributes.put("ice-ufrag", ufrag);
+            if (Strings.isNullOrEmpty(pwd)) {
+                throw new IllegalArgumentException("Transport element is missing required pwd attribute");
             }
             checkNoWhitespace(pwd, "pwd value must not contain any whitespaces");
+            mediaAttributes.put("ice-pwd", pwd);
             mediaAttributes.put("ice-options", HARDCODED_ICE_OPTIONS);
             final IceUdpTransportInfo.Fingerprint fingerprint = transport.getFingerprint();
             if (fingerprint != null) {