|
23 | 23 |
|
24 | 24 | import java.nio.charset.StandardCharsets;
|
25 | 25 |
|
| 26 | +import static org.hamcrest.Matchers.is; |
| 27 | + |
26 | 28 | public class CharArraysTests extends ESTestCase {
|
27 | 29 |
|
28 | 30 | public void testCharsToBytes() {
|
@@ -69,9 +71,13 @@ public void testConstantTimeEquals() {
|
69 | 71 | assertTrue(CharArrays.constantTimeEquals(value, value));
|
70 | 72 | assertTrue(CharArrays.constantTimeEquals(value.toCharArray(), value.toCharArray()));
|
71 | 73 |
|
72 |
| - final String other = randomAlphaOfLengthBetween(1, 32); |
73 |
| - assertFalse(CharArrays.constantTimeEquals(value, other)); |
74 |
| - assertFalse(CharArrays.constantTimeEquals(value.toCharArray(), other.toCharArray())); |
| 74 | + // we want a different string, so ensure the first character is different, but the same overall length |
| 75 | + final int length = value.length(); |
| 76 | + final String other = length > 0 ? new String(randomAlphaOfLengthNotBeginningWith(value.substring(0, 1), length, length)) : ""; |
| 77 | + final boolean expectedEquals = length == 0; |
| 78 | + |
| 79 | + assertThat("value: " + value + ", other: " + other, CharArrays.constantTimeEquals(value, other), is(expectedEquals)); |
| 80 | + assertThat(CharArrays.constantTimeEquals(value.toCharArray(), other.toCharArray()), is(expectedEquals)); |
75 | 81 | }
|
76 | 82 |
|
77 | 83 | private char[] randomAlphaOfLengthNotBeginningWith(String undesiredPrefix, int min, int max) {
|
|
0 commit comments