mirror of
https://github.com/phpbb/phpbb.git
synced 2025-02-24 03:54:10 +01:00
[ticket/13203] Add method for byte by byte comparison to drivers helper
PHPBB3-13203
This commit is contained in:
parent
e43d1781bf
commit
2b47ef1266
@ -142,4 +142,24 @@ class helper
|
||||
}
|
||||
return $random;
|
||||
}
|
||||
|
||||
/**
|
||||
* Compare two strings byte by byte
|
||||
*
|
||||
* @param string $string_a The first string
|
||||
* @param string $string_b The second string
|
||||
*
|
||||
* @return bool True if strings are the same, false if not
|
||||
*/
|
||||
public function string_compare($string_a, $string_b)
|
||||
{
|
||||
$difference = strlen($string_a) != strlen($string_b);
|
||||
|
||||
for ($i = 0; $i < strlen($string_a) && $i < strlen($string_b); $i++)
|
||||
{
|
||||
$difference |= $string_a[$i] != $string_b[$i];
|
||||
}
|
||||
|
||||
return $difference === 0;
|
||||
}
|
||||
}
|
||||
|
@ -326,4 +326,22 @@ class phpbb_passwords_manager_test extends \phpbb_test_case
|
||||
$this->assertFalse($this->manager->hash(str_repeat('a', 1024 * 1024 * 16)));
|
||||
$this->assertLessThanOrEqual(5, time() - $start_time);
|
||||
}
|
||||
|
||||
public function data_test_string_compare()
|
||||
{
|
||||
return array(
|
||||
array('foo', 'bar', false),
|
||||
array(1, '1', false),
|
||||
array('one', 'one', true),
|
||||
array('foobar', 'foobaf', false),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider data_test_string_compare
|
||||
*/
|
||||
public function test_string_compare($a, $b, $expected)
|
||||
{
|
||||
$this->assertSame($expected, $this->driver_helper->string_compare($a, $b));
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user