From 448d29f1352cc5b05df4735cf8c33bbec5d3e1a8 Mon Sep 17 00:00:00 2001
From: Mark McDowall <mark@mcdowall.ca>
Date: Fri, 7 Jun 2024 15:43:06 -0700
Subject: [PATCH] Fixed: Improve error messaging if config file isn't formatted
 correctly

(cherry picked from commit 52b72925f9d42c896144dde3099dc19c397327b0)
---
 .../Configuration/ConfigFileProvider.cs          | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/src/NzbDrone.Core/Configuration/ConfigFileProvider.cs b/src/NzbDrone.Core/Configuration/ConfigFileProvider.cs
index d30ef0b88..62a189379 100644
--- a/src/NzbDrone.Core/Configuration/ConfigFileProvider.cs
+++ b/src/NzbDrone.Core/Configuration/ConfigFileProvider.cs
@@ -403,13 +403,21 @@ namespace NzbDrone.Core.Configuration
                             throw new InvalidConfigFileException($"{_configFile} is corrupt. Please delete the config file and Lidarr will recreate it.");
                         }
 
-                        return XDocument.Parse(_diskProvider.ReadAllText(_configFile));
+                        var xDoc = XDocument.Parse(_diskProvider.ReadAllText(_configFile));
+                        var config = xDoc.Descendants(CONFIG_ELEMENT_NAME).ToList();
+
+                        if (config.Count != 1)
+                        {
+                            throw new InvalidConfigFileException($"{_configFile} is invalid. Please delete the config file and Sonarr will recreate it.");
+                        }
+
+                        return xDoc;
                     }
 
-                    var xDoc = new XDocument(new XDeclaration("1.0", "utf-8", "yes"));
-                    xDoc.Add(new XElement(CONFIG_ELEMENT_NAME));
+                    var newXDoc = new XDocument(new XDeclaration("1.0", "utf-8", "yes"));
+                    newXDoc.Add(new XElement(CONFIG_ELEMENT_NAME));
 
-                    return xDoc;
+                    return newXDoc;
                 }
             }
             catch (XmlException ex)