From 5af5f995d033e77142f76a939cb9878ad5a886e6 Mon Sep 17 00:00:00 2001
From: Tim van Dijen <tvdijen@gmail.com>
Date: Mon, 10 Dec 2018 18:37:03 +0100
Subject: [PATCH] Fix for sspmod_ class with namespaced $type

---
 lib/SimpleSAML/Module.php | 18 ++++++++----------
 1 file changed, 8 insertions(+), 10 deletions(-)

diff --git a/lib/SimpleSAML/Module.php b/lib/SimpleSAML/Module.php
index 77d180860..4cbd41657 100644
--- a/lib/SimpleSAML/Module.php
+++ b/lib/SimpleSAML/Module.php
@@ -392,20 +392,18 @@ class Module
         } else {
             // should be a module
             // make sure empty types are handled correctly
-            $type = (empty($type)) ? '_' : '_'.$type.'_';
-
-            // check for the old-style class names
-            $className = 'sspmod_'.$tmp[0].$type.$tmp[1];
+            $type = (empty($type)) ? '\\' : '\\'.$type.'\\';
 
+            $className = 'SimpleSAML\\Module\\'.$tmp[0].$type.$tmp[1];
             if (!class_exists($className)) {
-                // check for the new-style class names, using namespaces
-                $type = str_replace('_', '\\', $type);
-                $newClassName = 'SimpleSAML\\Module\\'.$tmp[0].$type.$tmp[1];
+                // check for the old-style class names
+                $type = str_replace('\\', '_', $type);
+                $oldClassName = 'sspmod_'.$tmp[0].$type.$tmp[1];
 
-                if (!class_exists($newClassName)) {
-                    throw new \Exception("Could not resolve '$id': no class named '$className' or '$newClassName'.");
+                if (!class_exists($oldClassName)) {
+                    throw new \Exception("Could not resolve '$id': no class named '$className' or '$oldClassName'.");
                 }
-                $className = $newClassName;
+                $className = $oldClassName;
             }
         }
 
-- 
GitLab