summaryrefslogtreecommitdiffstats
path: root/lib/SAML2
diff options
context:
space:
mode:
Diffstat (limited to 'lib/SAML2')
-rw-r--r--lib/SAML2/Assertion.php5
-rw-r--r--lib/SAML2/Utils.php19
2 files changed, 20 insertions, 4 deletions
diff --git a/lib/SAML2/Assertion.php b/lib/SAML2/Assertion.php
index f5b670c..6bbe562 100644
--- a/lib/SAML2/Assertion.php
+++ b/lib/SAML2/Assertion.php
@@ -338,10 +338,7 @@ class SAML2_Assertion implements SAML2_SignedElement {
}
switch ($node->localName) {
case 'AudienceRestriction':
- $audiences = SAML2_Utils::xpQuery($node, './saml_assertion:Audience');
- foreach ($audiences as &$audience) {
- $audience = trim($audience->textContent);
- }
+ $audiences = SAML2_Utils::extractStrings($node, './saml_assertion:Audience');
if ($this->validAudiences === NULL) {
/* The first (and probably last) AudienceRestriction element. */
$this->validAudiences = $audiences;
diff --git a/lib/SAML2/Utils.php b/lib/SAML2/Utils.php
index 45bd0bb..8cf8442 100644
--- a/lib/SAML2/Utils.php
+++ b/lib/SAML2/Utils.php
@@ -348,4 +348,23 @@ class SAML2_Utils {
return $ret;
}
+
+ /**
+ * Extract strings from a set of nodes.
+ *
+ * @param DOMElement $parent The element we should rund the XPath query on.
+ * @param string $query The XPath query we should use to retrieve the nodes.
+ * @return array The string values of the various nodes.
+ */
+ public static function extractStrings(DOMElement $parent, $query) {
+ assert('is_string($query)');
+
+ $ret = array();
+ foreach (self::xpQuery($parent, $query) as $node) {
+ $ret[] = trim($node->textContent);
+ }
+
+ return $ret;
+ }
+
}