浏览代码

Merge pull request #6860 from cvium/fix_xml_endless_loops

Cody Robibero 3 年之前
父节点
当前提交
fa366f0099

+ 23 - 5
MediaBrowser.Providers/Plugins/MusicBrainz/MusicBrainzAlbumProvider.cs

@@ -319,6 +319,12 @@ namespace MediaBrowser.Providers.Music
                     {
                         case "name-credit":
                         {
+                            if (reader.IsEmptyElement)
+                            {
+                                reader.Read();
+                                break;
+                            }
+
                             using var subReader = reader.ReadSubtree();
                             return ParseArtistNameCredit(subReader);
                         }
@@ -355,6 +361,12 @@ namespace MediaBrowser.Providers.Music
                     {
                         case "artist":
                             {
+                                if (reader.IsEmptyElement)
+                                {
+                                    reader.Read();
+                                    break;
+                                }
+
                                 var id = reader.GetAttribute("id");
                                 using var subReader = reader.ReadSubtree();
                                 return ParseArtistArtistCredit(subReader, id);
@@ -457,8 +469,8 @@ namespace MediaBrowser.Providers.Music
             };
 
             using var reader = XmlReader.Create(oReader, settings);
-            reader.MoveToContent();
-            reader.Read();
+            await reader.MoveToContentAsync().ConfigureAwait(false);
+            await reader.ReadAsync().ConfigureAwait(false);
 
             // Loop through each element
             while (!reader.EOF && reader.ReadState == ReadState.Interactive)
@@ -471,7 +483,7 @@ namespace MediaBrowser.Providers.Music
                         {
                             if (reader.IsEmptyElement)
                             {
-                                reader.Read();
+                                await reader.ReadAsync().ConfigureAwait(false);
                                 continue;
                             }
 
@@ -481,14 +493,14 @@ namespace MediaBrowser.Providers.Music
 
                         default:
                         {
-                            reader.Skip();
+                            await reader.SkipAsync().ConfigureAwait(false);
                             break;
                         }
                     }
                 }
                 else
                 {
-                    reader.Read();
+                    await reader.ReadAsync().ConfigureAwait(false);
                 }
             }
 
@@ -755,6 +767,12 @@ namespace MediaBrowser.Providers.Music
 
                             case "artist-credit":
                                 {
+                                    if (reader.IsEmptyElement)
+                                    {
+                                        reader.Read();
+                                        break;
+                                    }
+
                                     using var subReader = reader.ReadSubtree();
                                     var artist = ParseArtistCredit(subReader);
 

+ 7 - 1
MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs

@@ -784,7 +784,13 @@ namespace MediaBrowser.XbmcMetadata.Parsers
 
                 case "fanart":
                     {
-                        var subtree = reader.ReadSubtree();
+                        if (reader.IsEmptyElement)
+                        {
+                            reader.Read();
+                            break;
+                        }
+
+                        using var subtree = reader.ReadSubtree();
                         if (!subtree.ReadToDescendant("thumb"))
                         {
                             break;