diff --git a/modules/consent/lib/Auth/Process/Consent.php b/modules/consent/lib/Auth/Process/Consent.php
index a83c7464e224e5a3af9498ad1725cecc8211bcb9..2dbce161f6094e2272ad226b9b022c82f7c40a5e 100644
--- a/modules/consent/lib/Auth/Process/Consent.php
+++ b/modules/consent/lib/Auth/Process/Consent.php
@@ -154,30 +154,45 @@ class sspmod_consent_Auth_Process_Consent extends SimpleSAML_Auth_ProcessingFilt
             if (count($option) === count($option, COUNT_RECURSIVE)) {
                 // Array is not multidimensional.  Simple in_array search suffices
                 return in_array($entityId, $option, true);
-            } else {
-                // Array contains at least one element that is an array, verify both possibilities
-                if (in_array($entityId, $option, true)) {
-                    return true;
-                } else {
-                    // Search in multidimensional arrays
-                    foreach ($option as $optionToTest) {
-                        if (is_array($optionToTest)) {
-                            if (array_key_exists('type', $optionToTest)) { 
-                                if ($optionToTest['type'] === 'regex') {
-                                    if (array_key_exists('pattern', $optionToTest)) {
-                                        // Evaluate regular expression and return true if entityId matches
-                                        if (preg_match($optionToTest['pattern'], $entityId) === 1) {
-                                            return true;
-                                        }
-                                    }
-                                }
-                            }
-                        }
+            }
+
+            // Array contains at least one element that is an array, verify both possibilities
+            if (in_array($entityId, $option, true)) {
+                return true;
+            }
+            
+            // Search in multidimensional arrays
+            foreach ($option as $optionToTest) {
+                if (!is_array($optionToTest)) {
+                    continue; // bad option
+                }
+
+                if (!array_key_exists('type', $optionToTest)) {
+                    continue; // option has no type
+                }
+
+                // Option has a type - switch processing depending on type value :
+                if ($optionToTest['type'] === 'regex') {
+                    // regex-based consent disabling
+
+                    if (!array_key_exists('pattern'), $optionToTest) {
+                        continue; // no pattern defined
+                    }
+
+                    if (preg_match($optionToTest['pattern'], $entityId) === 1) {
+                        return true;
                     }
-                    // Base case : no match
-                    return false;
+                    
+                } else {
+                    // option type is not supported
+                    continue;
                 }
-            }
+
+            } // end foreach
+            
+            // Base case : no match
+            return false;
+
         } else {
             return (boolean)$option;
         }