HtmlParser.Parse throws InvalidOperationException
Metalnem opened this issue · comments
Nemanja Mijailovic commented
HtmlParser.Parse throws InvalidOperationException on some HTML inputs. Here's the full program to reproduce one such case:
using AngleSharp.Parser.Html;
namespace AngleSharp.Run
{
public class Program
{
public static void Main(string[] args)
{
string html = @"<svg><!DOCTYPE html><<template>html><desc><template>><p>p</p></body></html>";
new HtmlParser().Parse(html);
}
}
}
And here is the stack trace:
An unhandled exception of type 'System.InvalidOperationException' occurred in System.Collections.dll: 'Stack empty.'
at System.Collections.Generic.Stack`1.ThrowForEmptyStack()
at System.Collections.Generic.Stack`1.Peek()
at AngleSharp.Parser.Html.HtmlParserExtensions.SelectMode(Element element, Boolean isLast, Stack`1 templateModes)
at AngleSharp.Parser.Html.HtmlDomBuilder.Reset()
at AngleSharp.Parser.Html.HtmlDomBuilder.InTemplate(HtmlToken token)
at AngleSharp.Parser.Html.HtmlDomBuilder.InBody(HtmlToken token)
at AngleSharp.Parser.Html.HtmlDomBuilder.Parse(HtmlParserOptions options)
at AngleSharp.Run.Program.Main(String[] args) in
Found via SharpFuzz.
Florian Rappl commented
Hi @Metalnem please report all found cases. It is sufficient to report the HTML source, e.g.,
<svg><!DOCTYPE html><<template>html><desc><template>><p>p</p></body></html>
Thanks for the report!
Nemanja Mijailovic commented
They are all very similar, and will result in the same exception. I've found five different ones so far:
<svg><!DOCTYPE html><<template>html><desc><template>><p>p</p></body></html>
<svg><!DOCTYPE html><html><template><desc><template>><p>p</p></body></html>
<svg><!DOCTYPE html><<<template>tml><desc><template>><p>p</p></body></html>
<svg><!DOCTYPE html><<frameset>h<template>tml><desc><template>><p>p</p></body></html>
<svg><!DOCTYPE html><template>>html><desc><template>><p>p</p></body></html><pre>