From b8d1f13e1ff6dd8dc4961edce658cdd6a40ec12a Mon Sep 17 00:00:00 2001
From: Olav Morken <olav.morken@uninett.no>
Date: Mon, 7 Mar 2011 13:23:53 +0000
Subject: [PATCH] saml: Allow selecting value for AllowCreate.

git-svn-id: https://simplesamlphp.googlecode.com/svn/trunk@2743 44740490-163a-0410-bde0-09ae8108e29a
---
 modules/saml/lib/Auth/Source/SP.php | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/modules/saml/lib/Auth/Source/SP.php b/modules/saml/lib/Auth/Source/SP.php
index ce68b088e..5004069b6 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'])) {
-- 
GitLab