summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndrew Arnott <andrewarnott@gmail.com>2009-01-07 17:38:06 -0800
committerAndrew <andrewarnott@gmail.com>2009-01-07 17:38:06 -0800
commitf4554c04ff50dca28963720de101ffa45fb8adb2 (patch)
treebf176132799b44db9603dbcb01a95ec324551053 /src
parentf6e93a2f6c53b81a1cc154e95a85e3cd2ef76761 (diff)
downloadDotNetOpenAuth-f4554c04ff50dca28963720de101ffa45fb8adb2.zip
DotNetOpenAuth-f4554c04ff50dca28963720de101ffa45fb8adb2.tar.gz
DotNetOpenAuth-f4554c04ff50dca28963720de101ffa45fb8adb2.tar.bz2
Fixed the NullReferenceException resulting from invalid or incomplete XRDS documents.
Fixes part of the issue discovered from Google Code Issue 182. See DNOI 3ab85f11d69a3059cebac203f77a05fe083d7b65.
Diffstat (limited to 'src')
-rw-r--r--src/DotNetOpenAuth/Xrds/XrdsDocument.cs4
-rw-r--r--src/DotNetOpenAuth/Xrds/XrdsNode.cs6
2 files changed, 9 insertions, 1 deletions
diff --git a/src/DotNetOpenAuth/Xrds/XrdsDocument.cs b/src/DotNetOpenAuth/Xrds/XrdsDocument.cs
index ba8f29b..dd0e19f 100644
--- a/src/DotNetOpenAuth/Xrds/XrdsDocument.cs
+++ b/src/DotNetOpenAuth/Xrds/XrdsDocument.cs
@@ -56,7 +56,9 @@ namespace DotNetOpenAuth.Xrds {
}
} else {
XPathNavigator node = Node.SelectSingleNode("/xrd:XRD", XmlNamespaceResolver);
- yield return new XrdElement(node, this);
+ if (node != null) {
+ yield return new XrdElement(node, this);
+ }
}
}
}
diff --git a/src/DotNetOpenAuth/Xrds/XrdsNode.cs b/src/DotNetOpenAuth/Xrds/XrdsNode.cs
index 5eda0e6..e27a1b2 100644
--- a/src/DotNetOpenAuth/Xrds/XrdsNode.cs
+++ b/src/DotNetOpenAuth/Xrds/XrdsNode.cs
@@ -7,6 +7,7 @@
namespace DotNetOpenAuth.Xrds {
using System.Xml;
using System.Xml.XPath;
+ using DotNetOpenAuth.Messaging;
/// <summary>
/// A node in an XRDS document.
@@ -28,6 +29,9 @@ namespace DotNetOpenAuth.Xrds {
/// <param name="node">The node represented by this instance.</param>
/// <param name="parentNode">The parent node.</param>
protected XrdsNode(XPathNavigator node, XrdsNode parentNode) {
+ ErrorUtilities.VerifyArgumentNotNull(node, "node");
+ ErrorUtilities.VerifyArgumentNotNull(parentNode, "parentNode");
+
this.Node = node;
this.ParentNode = parentNode;
this.XmlNamespaceResolver = this.ParentNode.XmlNamespaceResolver;
@@ -38,6 +42,8 @@ namespace DotNetOpenAuth.Xrds {
/// </summary>
/// <param name="document">The document's root node, which this instance represents.</param>
protected XrdsNode(XPathNavigator document) {
+ ErrorUtilities.VerifyArgumentNotNull(document, "document");
+
this.Node = document;
this.XmlNamespaceResolver = new XmlNamespaceManager(document.NameTable);
}