diff --git a/briar-android/src/org/briarproject/android/groups/CreateGroupActivity.java b/briar-android/src/org/briarproject/android/groups/CreateGroupActivity.java index 5474b05a1..b0aafeeec 100644 --- a/briar-android/src/org/briarproject/android/groups/CreateGroupActivity.java +++ b/briar-android/src/org/briarproject/android/groups/CreateGroupActivity.java @@ -12,6 +12,7 @@ import static java.util.logging.Level.INFO; import static java.util.logging.Level.WARNING; import static org.briarproject.android.util.CommonLayoutParams.MATCH_MATCH; import static org.briarproject.android.util.CommonLayoutParams.WRAP_WRAP; +import static org.briarproject.api.messaging.MessagingConstants.MAX_GROUP_NAME_LENGTH; import java.util.Collection; import java.util.Collections; @@ -242,7 +243,8 @@ SelectContactsDialog.Listener { } private boolean validateName() { - if(nameEntry.getText().toString().equals("")) return false; + int length = nameEntry.getText().length(); + if(length == 0 || length > MAX_GROUP_NAME_LENGTH) return false; // Hide the soft keyboard Object o = getSystemService(INPUT_METHOD_SERVICE); ((InputMethodManager) o).toggleSoftInput(HIDE_IMPLICIT_ONLY, 0); diff --git a/briar-android/src/org/briarproject/android/identity/CreateIdentityActivity.java b/briar-android/src/org/briarproject/android/identity/CreateIdentityActivity.java index e48cf9135..117781b1a 100644 --- a/briar-android/src/org/briarproject/android/identity/CreateIdentityActivity.java +++ b/briar-android/src/org/briarproject/android/identity/CreateIdentityActivity.java @@ -12,6 +12,7 @@ import static java.util.logging.Level.INFO; import static java.util.logging.Level.WARNING; import static org.briarproject.android.util.CommonLayoutParams.MATCH_MATCH; import static org.briarproject.android.util.CommonLayoutParams.WRAP_WRAP; +import static org.briarproject.api.AuthorConstants.MAX_AUTHOR_NAME_LENGTH; import java.util.concurrent.Executor; import java.util.logging.Logger; @@ -135,7 +136,8 @@ implements OnEditorActionListener, OnClickListener { } private boolean validateNickname() { - if(nicknameEntry.getText().toString().equals("")) return false; + int length = nicknameEntry.getText().length(); + if(length == 0 || length > MAX_AUTHOR_NAME_LENGTH) return false; // Hide the soft keyboard Object o = getSystemService(INPUT_METHOD_SERVICE); ((InputMethodManager) o).toggleSoftInput(HIDE_IMPLICIT_ONLY, 0); diff --git a/briar-api/src/org/briarproject/api/Author.java b/briar-api/src/org/briarproject/api/Author.java index 7c313a8b4..abb66aaa3 100644 --- a/briar-api/src/org/briarproject/api/Author.java +++ b/briar-api/src/org/briarproject/api/Author.java @@ -1,5 +1,7 @@ package org.briarproject.api; +import static org.briarproject.api.AuthorConstants.MAX_AUTHOR_NAME_LENGTH; + /** A pseudonym for a user. */ public class Author { @@ -8,6 +10,8 @@ public class Author { private final byte[] publicKey; public Author(AuthorId id, String name, byte[] publicKey) { + if(name.length() == 0 || name.length() > MAX_AUTHOR_NAME_LENGTH) + throw new IllegalArgumentException(); this.id = id; this.name = name; this.publicKey = publicKey; diff --git a/briar-api/src/org/briarproject/api/TransportId.java b/briar-api/src/org/briarproject/api/TransportId.java index d99097a26..e4a57a6d7 100644 --- a/briar-api/src/org/briarproject/api/TransportId.java +++ b/briar-api/src/org/briarproject/api/TransportId.java @@ -10,7 +10,7 @@ public class TransportId { private final String id; public TransportId(String id) { - if(id.length() > MAX_TRANSPORT_ID_LENGTH || id.equals("")) + if(id.length() == 0 || id.length() > MAX_TRANSPORT_ID_LENGTH) throw new IllegalArgumentException(); this.id = id; } diff --git a/briar-api/src/org/briarproject/api/messaging/Group.java b/briar-api/src/org/briarproject/api/messaging/Group.java index e4efec0c1..882ebbd5b 100644 --- a/briar-api/src/org/briarproject/api/messaging/Group.java +++ b/briar-api/src/org/briarproject/api/messaging/Group.java @@ -1,5 +1,8 @@ package org.briarproject.api.messaging; +import static org.briarproject.api.messaging.MessagingConstants.GROUP_SALT_LENGTH; +import static org.briarproject.api.messaging.MessagingConstants.MAX_GROUP_NAME_LENGTH; + /** A group to which users may subscribe. */ public class Group { @@ -8,6 +11,10 @@ public class Group { private final byte[] salt; public Group(GroupId id, String name, byte[] salt) { + if(name.length() == 0 || name.length() > MAX_GROUP_NAME_LENGTH) + throw new IllegalArgumentException(); + if(salt.length != GROUP_SALT_LENGTH) + throw new IllegalArgumentException(); this.id = id; this.name = name; this.salt = salt; diff --git a/briar-core/src/org/briarproject/invitation/Connector.java b/briar-core/src/org/briarproject/invitation/Connector.java index 2b766146b..a8952c298 100644 --- a/briar-core/src/org/briarproject/invitation/Connector.java +++ b/briar-core/src/org/briarproject/invitation/Connector.java @@ -249,7 +249,7 @@ abstract class Connector extends Thread { r.readListStart(); while(!r.hasListEnd()) { String idString = r.readString(MAX_TRANSPORT_ID_LENGTH); - if(idString.equals("")) throw new FormatException(); + if(idString.length() == 0) throw new FormatException(); TransportId id = new TransportId(idString); Map p = new HashMap(); r.readMapStart(); diff --git a/briar-core/src/org/briarproject/messaging/AuthorReader.java b/briar-core/src/org/briarproject/messaging/AuthorReader.java index 7244fdf25..b30e10920 100644 --- a/briar-core/src/org/briarproject/messaging/AuthorReader.java +++ b/briar-core/src/org/briarproject/messaging/AuthorReader.java @@ -8,6 +8,7 @@ import java.io.IOException; import org.briarproject.api.Author; import org.briarproject.api.AuthorId; +import org.briarproject.api.FormatException; import org.briarproject.api.crypto.CryptoComponent; import org.briarproject.api.crypto.MessageDigest; import org.briarproject.api.serial.DigestingConsumer; @@ -29,6 +30,7 @@ class AuthorReader implements StructReader { // Read and digest the data r.readStructStart(AUTHOR); String name = r.readString(MAX_AUTHOR_NAME_LENGTH); + if(name.length() == 0) throw new FormatException(); byte[] publicKey = r.readBytes(MAX_PUBLIC_KEY_LENGTH); r.readStructEnd(); // Reset the reader diff --git a/briar-core/src/org/briarproject/messaging/PacketReaderImpl.java b/briar-core/src/org/briarproject/messaging/PacketReaderImpl.java index ff8610b27..b34244fd0 100644 --- a/briar-core/src/org/briarproject/messaging/PacketReaderImpl.java +++ b/briar-core/src/org/briarproject/messaging/PacketReaderImpl.java @@ -213,7 +213,7 @@ class PacketReaderImpl implements PacketReader { public TransportAck readTransportAck() throws IOException { r.readStructStart(TRANSPORT_ACK); String idString = r.readString(MAX_TRANSPORT_ID_LENGTH); - if(idString.equals("")) throw new FormatException(); + if(idString.length() == 0) throw new FormatException(); TransportId id = new TransportId(idString); long version = r.readInteger(); if(version < 0) throw new FormatException(); @@ -233,7 +233,7 @@ class PacketReaderImpl implements PacketReader { r.readStructStart(TRANSPORT_UPDATE); // Read the transport ID String idString = r.readString(MAX_TRANSPORT_ID_LENGTH); - if(idString.equals("")) throw new FormatException(); + if(idString.length() == 0) throw new FormatException(); TransportId id = new TransportId(idString); // Read the transport properties Map p = new HashMap(); diff --git a/briar-core/src/org/briarproject/util/StringUtils.java b/briar-core/src/org/briarproject/util/StringUtils.java index c47bbe177..db3f151e1 100644 --- a/briar-core/src/org/briarproject/util/StringUtils.java +++ b/briar-core/src/org/briarproject/util/StringUtils.java @@ -8,7 +8,7 @@ public class StringUtils { }; public static boolean isNullOrEmpty(String s) { - return s == null || s.equals(""); + return s == null || s.length() == 0; } /** @@ -17,7 +17,7 @@ public class StringUtils { */ public static String head(String s, int length) { if(s.length() > length) return s.substring(0, length) + "..."; - else return s; + return s; } /** @@ -26,7 +26,7 @@ public class StringUtils { */ public static String tail(String s, int length) { if(s.length() > length) return "..." + s.substring(s.length() - length); - else return s; + return s; } /** Converts the given byte array to a hex character array. */