diff options
author | Andrew Arnott <andrewarnott@gmail.com> | 2009-01-07 17:38:06 -0800 |
---|---|---|
committer | Andrew <andrewarnott@gmail.com> | 2009-01-07 17:38:06 -0800 |
commit | f4554c04ff50dca28963720de101ffa45fb8adb2 (patch) | |
tree | bf176132799b44db9603dbcb01a95ec324551053 /src | |
parent | f6e93a2f6c53b81a1cc154e95a85e3cd2ef76761 (diff) | |
download | DotNetOpenAuth-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.cs | 4 | ||||
-rw-r--r-- | src/DotNetOpenAuth/Xrds/XrdsNode.cs | 6 |
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); } |