From 4d951c9827285547e4f93c5a3ce70990237fc60e Mon Sep 17 00:00:00 2001 From: David Sparer Date: Fri, 20 Jan 2017 12:27:05 -0700 Subject: [PATCH] wrapped cred deserialization in try catch --- .../Serializers/XmlCredentialDeserializer.cs | 33 ++++++++++++------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/mRemoteV1/Config/Serializers/XmlCredentialDeserializer.cs b/mRemoteV1/Config/Serializers/XmlCredentialDeserializer.cs index 92b4eda4..acb49a95 100644 --- a/mRemoteV1/Config/Serializers/XmlCredentialDeserializer.cs +++ b/mRemoteV1/Config/Serializers/XmlCredentialDeserializer.cs @@ -15,18 +15,27 @@ namespace mRemoteNG.Config.Serializers public IEnumerable Deserialize(string xml, SecureString decryptionKey) { - var xdoc = XDocument.Parse(xml); - ValidateSchemaVersion(xdoc); - var cryptographyProvider = BuildCryptoProvider(xdoc.Root); - var credentials = from element in xdoc.Descendants("Credential") - select new CredentialRecord(Guid.Parse(element.Attribute("Id")?.Value)) - { - Title = element.Attribute("Title")?.Value ?? "", - Username = element.Attribute("Username")?.Value ?? "", - Password = cryptographyProvider.Decrypt(element.Attribute("Password")?.Value, decryptionKey).ConvertToSecureString(), - Domain = element.Attribute("Domain")?.Value ?? "" - }; - return credentials; + try + { + var xdoc = XDocument.Parse(xml); + ValidateSchemaVersion(xdoc); + var cryptographyProvider = BuildCryptoProvider(xdoc.Root); + var credentials = from element in xdoc.Descendants("Credential") + select new CredentialRecord(Guid.Parse(element.Attribute("Id")?.Value)) + { + Title = element.Attribute("Title")?.Value ?? "", + Username = element.Attribute("Username")?.Value ?? "", + Password = + cryptographyProvider.Decrypt(element.Attribute("Password")?.Value, decryptionKey) + .ConvertToSecureString(), + Domain = element.Attribute("Domain")?.Value ?? "" + }; + return credentials; + } + catch + { + return new ICredentialRecord[0]; + } } private void ValidateSchemaVersion(XDocument xdoc)