summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoeland Jago Douma <rullzer@users.noreply.github.com>2019-02-12 20:11:23 +0100
committerGitHub <noreply@github.com>2019-02-12 20:11:23 +0100
commit1c0c300e95c3b5317a31783ba8cb33d3132d5715 (patch)
treea4e8f46faa4bb692c37138cbb8e0759aa49ffde2
parent40b40c94a2e57d336a40441d9ed9d0d8d7e034d4 (diff)
parent096498c0335b5e7461d9d2e4bb1874a42ebef83f (diff)
downloadnextcloud-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.php6
-rw-r--r--tests/lib/Security/Bruteforce/ThrottlerTest.php29
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,