diff --git a/lib/classes/ip_utils.php b/lib/classes/ip_utils.php
index 387df8f9211..33f56b4387b 100644
--- a/lib/classes/ip_utils.php
+++ b/lib/classes/ip_utils.php
@@ -187,8 +187,8 @@ final class ip_utils {
}
/**
- * Checks the domain name against a list of allowed domains. The list of allowed domains is may use
- * wildcards that match {@link is_domain_matching_pattern()}.
+ * Checks the domain name against a list of allowed domains. The list of allowed domains may use wildcards
+ * that match {@see is_domain_matching_pattern()}. Domains are compared in a case-insensitive manner
*
* @param string $domain Domain address
* @param array $alloweddomains An array of allowed domains.
@@ -208,7 +208,7 @@ final class ip_utils {
// Use of wildcard for possible subdomains.
$escapeperiods = str_replace('.', '\.', $alloweddomain);
$replacewildcard = str_replace('*', '.*', $escapeperiods);
- $ultimatepattern = '/' . $replacewildcard . '$/';
+ $ultimatepattern = '/' . $replacewildcard . '$/i';
if (preg_match($ultimatepattern, $domain)) {
return true;
}
@@ -217,7 +217,7 @@ final class ip_utils {
continue;
}
// Strict domain setting.
- if ($domain === $alloweddomain) {
+ if (strcasecmp($domain, $alloweddomain) === 0) {
return true;
}
}
diff --git a/lib/tests/ip_utils_test.php b/lib/tests/ip_utils_test.php
index b142c0e2a30..f189857607d 100644
--- a/lib/tests/ip_utils_test.php
+++ b/lib/tests/ip_utils_test.php
@@ -14,13 +14,13 @@
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see .
-
namespace core;
/**
* This tests the static helper functions contained in the class '\core\ip_utils'.
*
* @package core
+ * @covers \core\ip_utils
* @copyright 2016 Jake Dallimore
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
@@ -355,6 +355,7 @@ class ip_utils_test extends \basic_testcase {
public function data_domain_addresses() {
return [
[true, 'example.com'],
+ [true, 'ExAmPle.com'],
[false, 'sub.example.com'],
[false, 'example.com.au'],
[false, ' example.com'], // A space at the front of the domain is invalid.
@@ -362,6 +363,8 @@ class ip_utils_test extends \basic_testcase {
[false, 'test.example.com'],
[false, 'moodle.com'],
[true, 'test.moodle.com'],
+ [true, 'TeSt.moodle.com'],
+ [true, 'test.MoOdLe.com'],
[false, 'test.moodle.com.au'],
[true, 'nice.address.per.this.penny-arcade.com'],
[false, 'normal.per.this.penny-arcade.com.au'],
diff --git a/lib/tests/moodlelib_test.php b/lib/tests/moodlelib_test.php
index 0d63ad85442..f10155671b3 100644
--- a/lib/tests/moodlelib_test.php
+++ b/lib/tests/moodlelib_test.php
@@ -4354,7 +4354,13 @@ EOF;
'config' => "\r\n example.com \r\n test.com \r\n",
'result' => true
],
-
+ [
+ 'email' => 'fromuser@EXAMPLE.com',
+ 'display' => \core_user::MAILDISPLAY_EVERYONE,
+ 'samecourse' => false,
+ 'config' => "example.com\r\ntest.com",
+ 'result' => true,
+ ],
// Test from email is not in allowed domain.
// Test that from display is set to show no one.
[ 'email' => 'fromuser@moodle.com',