diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/v2/GroupInviteLinkUrl.java b/app/src/main/java/org/thoughtcrime/securesms/groups/v2/GroupInviteLinkUrl.java index 2cca92917c..651f5bea3d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/v2/GroupInviteLinkUrl.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/v2/GroupInviteLinkUrl.java @@ -58,7 +58,13 @@ public final class GroupInviteLinkUrl { throw new InvalidGroupLinkException("No reference was in the uri"); } - byte[] bytes = Base64.decode(encoding); + byte[] bytes; + try { + bytes = Base64.decode(encoding); + } catch (IllegalArgumentException e) { + throw new InvalidGroupLinkException(e); + } + GroupInviteLink groupInviteLink = GroupInviteLink.ADAPTER.decode(bytes); //noinspection SwitchStatementWithTooFewBranches diff --git a/app/src/test/java/org/thoughtcrime/securesms/groups/v2/GroupInviteLinkUrl_InvalidGroupLinkException_Test.kt b/app/src/test/java/org/thoughtcrime/securesms/groups/v2/GroupInviteLinkUrl_InvalidGroupLinkException_Test.kt index 3add3713be..3f7058f8dd 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/groups/v2/GroupInviteLinkUrl_InvalidGroupLinkException_Test.kt +++ b/app/src/test/java/org/thoughtcrime/securesms/groups/v2/GroupInviteLinkUrl_InvalidGroupLinkException_Test.kt @@ -76,6 +76,15 @@ class GroupInviteLinkUrl_InvalidGroupLinkException_Test { .isInstanceOf() } + @Test + fun one_character_base64_ref() { + val uri = "https://signal.group/#A" + assertFailure { GroupInviteLinkUrl.fromUri(uri) } + .isInstanceOf() + .rootCause() + .isInstanceOf() + } + @Test fun bad_protobuf() { val uri = "https://signal.group/#CAESNAogpQEzURH6BON1bCS264cmTi37Yi6HTOReXZUEHdsBIgSEPCLfiL7k4wCXmwVi31USVY"