Browse Source

Polish PasswordEncoderUtils do not leak length

Fix possible / 0 if expected is empty String.

Issue gh-255
pull/4107/head
Rob Winch 9 years ago
parent
commit
e62596f36d
  1. 2
      core/src/main/java/org/springframework/security/authentication/encoding/PasswordEncoderUtils.java
  2. 6
      core/src/test/java/org/springframework/security/authentication/encoding/PasswordEncoderUtilsTests.java

2
core/src/main/java/org/springframework/security/authentication/encoding/PasswordEncoderUtils.java

@ -38,7 +38,7 @@ class PasswordEncoderUtils { @@ -38,7 +38,7 @@ class PasswordEncoderUtils {
int result = expectedLength == actualLength ? 0 : 1;
for (int i = 0; i < actualLength; i++) {
byte expectedByte = expectedBytes == null ? 0 : expectedBytes[i % expectedLength];
byte expectedByte = expectedLength <= 0 ? 0 : expectedBytes[i % expectedLength];
byte actualByte = actualBytes[i % actualLength];
result |= expectedByte ^ actualByte;
}

6
core/src/test/java/org/springframework/security/authentication/encoding/PasswordEncoderUtilsTests.java

@ -47,6 +47,12 @@ public class PasswordEncoderUtilsTests { @@ -47,6 +47,12 @@ public class PasswordEncoderUtilsTests {
assertThat(PasswordEncoderUtils.equals("", null)).isFalse();
}
@Test
public void equalsWhenNotEmptyAndEmptyThenFalse() {
assertThat(PasswordEncoderUtils.equals("abc", "")).isFalse();
assertThat(PasswordEncoderUtils.equals("", "abc")).isFalse();
}
@Test
public void equalsWhenEmtpyAndEmptyThenTrue() {
assertThat(PasswordEncoderUtils.equals("", "")).isTrue();

Loading…
Cancel
Save