diff --git a/modules/saml/lib/Auth/Source/SP.php b/modules/saml/lib/Auth/Source/SP.php index ce68b088e75ef6064db5e8d2ee8736e270394dce..5004069b67b850eecb344db4dba6b5d86b25f479 100644 --- a/modules/saml/lib/Auth/Source/SP.php +++ b/modules/saml/lib/Auth/Source/SP.php @@ -202,10 +202,17 @@ class sspmod_saml_Auth_Source_SP extends SimpleSAML_Auth_Source { } if (isset($state['saml:NameIDPolicy'])) { - $ar->setNameIdPolicy(array( - 'Format' => (string)$state['saml:NameIDPolicy'], - 'AllowCreate' => TRUE, - )); + if (is_string($state['saml:NameIDPolicy'])) { + $policy = array( + 'Format' => (string)$state['saml:NameIDPolicy'], + 'AllowCreate' => TRUE, + ); + } elseif (is_array($state['saml:NameIDPolicy'])) { + $policy = $state['saml:NameIDPolicy']; + } else { + throw new SimpleSAML_Error_Exception('Invalid value of $state[\'saml:NameIDPolicy\'].'); + } + $ar->setNameIdPolicy($policy); } if (isset($state['saml:IDPList'])) {