summaryrefslogtreecommitdiffstats
path: root/src/DotNetOpenAuth.OpenId
diff options
context:
space:
mode:
authorAndrew Arnott <andrewarnott@gmail.com>2012-09-29 16:27:29 -0700
committerAndrew Arnott <andrewarnott@gmail.com>2012-09-29 16:27:29 -0700
commit5ceb75f6632a70c564b4556500b9c3e5a98bfa73 (patch)
treef00bc6d1d47a6ea8aa655a79a8ca2eb0760d50a8 /src/DotNetOpenAuth.OpenId
parentcdd3e95f4eac8076ffd78641bf4cf61d4422572a (diff)
downloadDotNetOpenAuth-5ceb75f6632a70c564b4556500b9c3e5a98bfa73.zip
DotNetOpenAuth-5ceb75f6632a70c564b4556500b9c3e5a98bfa73.tar.gz
DotNetOpenAuth-5ceb75f6632a70c564b4556500b9c3e5a98bfa73.tar.bz2
Mitigates the XML DTD DoS attack from expanding entities.
Fixes #209
Diffstat (limited to 'src/DotNetOpenAuth.OpenId')
-rw-r--r--src/DotNetOpenAuth.OpenId/OpenId/XriDiscoveryProxyService.cs3
-rw-r--r--src/DotNetOpenAuth.OpenId/Yadis/Yadis.cs3
2 files changed, 4 insertions, 2 deletions
diff --git a/src/DotNetOpenAuth.OpenId/OpenId/XriDiscoveryProxyService.cs b/src/DotNetOpenAuth.OpenId/OpenId/XriDiscoveryProxyService.cs
index 8265c75..3189a5d 100644
--- a/src/DotNetOpenAuth.OpenId/OpenId/XriDiscoveryProxyService.cs
+++ b/src/DotNetOpenAuth.OpenId/OpenId/XriDiscoveryProxyService.cs
@@ -77,7 +77,8 @@ namespace DotNetOpenAuth.OpenId {
Contract.Ensures(Contract.Result<XrdsDocument>() != null);
XrdsDocument doc;
using (var xrdsResponse = Yadis.Request(requestHandler, GetXrdsUrl(identifier), identifier.IsDiscoverySecureEndToEnd)) {
- doc = new XrdsDocument(XmlReader.Create(xrdsResponse.ResponseStream));
+ var readerSettings = MessagingUtilities.CreateUntrustedXmlReaderSettings();
+ doc = new XrdsDocument(XmlReader.Create(xrdsResponse.ResponseStream, readerSettings));
}
ErrorUtilities.VerifyProtocol(doc.IsXrdResolutionSuccessful, OpenIdStrings.XriResolutionFailed);
return doc;
diff --git a/src/DotNetOpenAuth.OpenId/Yadis/Yadis.cs b/src/DotNetOpenAuth.OpenId/Yadis/Yadis.cs
index f71ad46..a23e019 100644
--- a/src/DotNetOpenAuth.OpenId/Yadis/Yadis.cs
+++ b/src/DotNetOpenAuth.OpenId/Yadis/Yadis.cs
@@ -190,7 +190,8 @@ namespace DotNetOpenAuth.Yadis {
if (response.ContentType.MediaType == ContentTypes.Xml) {
// This COULD be an XRDS document with an imprecise content-type.
response.ResponseStream.Seek(0, SeekOrigin.Begin);
- XmlReader reader = XmlReader.Create(response.ResponseStream);
+ var readerSettings = MessagingUtilities.CreateUntrustedXmlReaderSettings();
+ XmlReader reader = XmlReader.Create(response.ResponseStream, readerSettings);
while (reader.Read() && reader.NodeType != XmlNodeType.Element) {
// intentionally blank
}