diff options
author | Roeland Jago Douma <rullzer@users.noreply.github.com> | 2019-02-12 20:11:23 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-02-12 20:11:23 +0100 |
commit | 1c0c300e95c3b5317a31783ba8cb33d3132d5715 (patch) | |
tree | a4e8f46faa4bb692c37138cbb8e0759aa49ffde2 | |
parent | 40b40c94a2e57d336a40441d9ed9d0d8d7e034d4 (diff) | |
parent | 096498c0335b5e7461d9d2e4bb1874a42ebef83f (diff) | |
download | nextcloud-server-1c0c300e95c3b5317a31783ba8cb33d3132d5715.tar.gz nextcloud-server-1c0c300e95c3b5317a31783ba8cb33d3132d5715.zip |
Merge pull request #14151 from nextcloud/backport/14149/stable15
[stable15] Fix the thorrtler whitelist bitmask
-rw-r--r-- | lib/private/Security/Bruteforce/Throttler.php | 6 | ||||
-rw-r--r-- | tests/lib/Security/Bruteforce/ThrottlerTest.php | 29 |
2 files changed, 33 insertions, 2 deletions
diff --git a/lib/private/Security/Bruteforce/Throttler.php b/lib/private/Security/Bruteforce/Throttler.php index 3282121d967..ec56b4f7ee2 100644 --- a/lib/private/Security/Bruteforce/Throttler.php +++ b/lib/private/Security/Bruteforce/Throttler.php @@ -177,8 +177,10 @@ class Throttler { $part = ord($addr[(int)($i/8)]); $orig = ord($ip[(int)($i/8)]); - $part = $part & (15 << (1 - ($i % 2))); - $orig = $orig & (15 << (1 - ($i % 2))); + $bitmask = 1 << (7 - ($i % 8)); + + $part = $part & $bitmask; + $orig = $orig & $bitmask; if ($part !== $orig) { $valid = false; diff --git a/tests/lib/Security/Bruteforce/ThrottlerTest.php b/tests/lib/Security/Bruteforce/ThrottlerTest.php index dac12a00dcd..da386db9d2d 100644 --- a/tests/lib/Security/Bruteforce/ThrottlerTest.php +++ b/tests/lib/Security/Bruteforce/ThrottlerTest.php @@ -101,6 +101,27 @@ class ThrottlerTest extends TestCase { true, ], [ + '10.10.10.10', + [ + 'whitelist_0' => '10.10.10.11/31', + ], + true, + ], + [ + '10.10.10.10', + [ + 'whitelist_0' => '10.10.10.9/31', + ], + false, + ], + [ + '10.10.10.10', + [ + 'whitelist_0' => '10.10.10.15/29', + ], + true, + ], + [ 'dead:beef:cafe::1', [ 'whitelist_0' => '192.168.0.0/16', @@ -128,6 +149,14 @@ class ThrottlerTest extends TestCase { true, ], [ + 'dead:beef:cafe::1111', + [ + 'whitelist_0' => 'dead:beef:cafe::1100/123', + + ], + true, + ], + [ 'invalid', [], false, |