Don't rate limit null pin submissions

This commit is contained in:
Moxie Marlinspike 2018-03-13 17:33:19 -07:00
parent d7140eac35
commit 86389a5fb3
2 changed files with 11 additions and 6 deletions

View File

@ -175,13 +175,18 @@ public class AccountController {
System.currentTimeMillis() - existingAccount.get().getLastSeen() < TimeUnit.DAYS.toMillis(7)) System.currentTimeMillis() - existingAccount.get().getLastSeen() < TimeUnit.DAYS.toMillis(7))
{ {
rateLimiters.getVerifyLimiter().clear(number); rateLimiters.getVerifyLimiter().clear(number);
rateLimiters.getPinLimiter().validate(number);
if (accountAttributes.getPin() == null ||
!MessageDigest.isEqual(existingAccount.get().getPin().get().getBytes(), accountAttributes.getPin().getBytes()))
{
long timeRemaining = TimeUnit.DAYS.toMillis(7) - (System.currentTimeMillis() - existingAccount.get().getLastSeen()); long timeRemaining = TimeUnit.DAYS.toMillis(7) - (System.currentTimeMillis() - existingAccount.get().getLastSeen());
if (accountAttributes.getPin() == null) {
throw new WebApplicationException(Response.status(423)
.entity(new RegistrationLockFailure(timeRemaining))
.build());
}
rateLimiters.getPinLimiter().validate(number);
if (!MessageDigest.isEqual(existingAccount.get().getPin().get().getBytes(), accountAttributes.getPin().getBytes())) {
throw new WebApplicationException(Response.status(423) throw new WebApplicationException(Response.status(423)
.entity(new RegistrationLockFailure(timeRemaining)) .entity(new RegistrationLockFailure(timeRemaining))
.build()); .build());

View File

@ -213,7 +213,7 @@ public class AccountControllerTest {
RegistrationLockFailure failure = response.readEntity(RegistrationLockFailure.class); RegistrationLockFailure failure = response.readEntity(RegistrationLockFailure.class);
verify(pinLimiter).validate(eq(SENDER_PIN)); verifyNoMoreInteractions(pinLimiter);
} }
@Test @Test