Merge pull request #6860 from cvium/fix_xml_endless_loops

pull/6864/head
Cody Robibero 3 years ago committed by GitHub
commit fa366f0099
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

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

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

Loading…
Cancel
Save