diff --git a/modules/saml/lib/Auth/Process/FilterScopes.php b/modules/saml/lib/Auth/Process/FilterScopes.php index f6c0a8f92ba44b20f4428fd53258f6409509fb65..aea28ae3e516d5bf977ca73b06cb9a15a870c486 100644 --- a/modules/saml/lib/Auth/Process/FilterScopes.php +++ b/modules/saml/lib/Auth/Process/FilterScopes.php @@ -66,12 +66,12 @@ class FilterScopes extends ProcessingFilter $values = $request['Attributes'][$attribute]; $newValues = []; foreach ($values as $value) { - $value_a = explode('@', $value, 2); - if (count($value_a) < 2) { + list(, $scope) = explode('@', $value, 2); + if ($scope === null) { $newValues[] = $value; continue; // there's no scope } - $scope = $value_a[1]; + if (in_array($scope, $validScopes, true)) { $newValues[] = $value; } elseif (strpos($host, $scope) === strlen($host) - strlen($scope)) {