Markdown.ToHtml throws IndexOutOfRangeException in StringSlice.NextChar() #711

Closed
opened 2026-01-29 14:43:40 +00:00 by claunia · 0 comments
Owner

Originally created by @mschessler on GitHub (Jan 1, 2025).

Tested Version: newest commit d1233ffe66 on main

Reproducer:

var pipeline = new MarkdownPipelineBuilder().UseAdvancedExtensions().Build();
var result = Markdown.ToHtml("+-\t\r\n|\r\n+-", pipeline);

Stacktrace:

at System.ThrowHelper.ThrowIndexOutOfRangeException()
at System.String.get_Chars(Int32 index)
at Markdig.Helpers.StringSlice.NextChar() in \src\Markdig\Helpers\StringSlice.cs:line 167
at Markdig.Extensions.Tables.GridTableParser.IsRowSeparator(StringSlice slice) in \src\Markdig\Extensions\Tables\GridTableParser.cs:line 170
at Markdig.Extensions.Tables.GridTableParser.SetRowSpanState(List`1 columns, StringSlice line, Boolean& isHeaderRow, Boolean& hasRowSpan) in \src\Markdig\Extensions\Tables\GridTableParser.cs:line 147
at Markdig.Extensions.Tables.GridTableParser.HandleNewRow(BlockProcessor processor, GridTableState tableState, Table gridTable) in \src\Markdig\Extensions\Tables\GridTableParser.cs:line 116
at Markdig.Extensions.Tables.GridTableParser.TryContinue(BlockProcessor processor, Block block) in \src\Markdig\Extensions\Tables\GridTableParser.cs:line 97
at Markdig.Parsers.BlockProcessor.TryContinueBlocks() in \src\Markdig\Parsers\BlockProcessor.cs:line 663
at Markdig.Parsers.BlockProcessor.ProcessLine(StringSlice newLine) in \src\Markdig\Parsers\BlockProcessor.cs:line 498
at Markdig.Parsers.MarkdownParser.ProcessBlocks(BlockProcessor blockProcessor, String text) in \src\Markdig\Parsers\MarkdownParser.cs:line 113
at Markdig.Parsers.MarkdownParser.Parse(String text, MarkdownPipeline pipeline, MarkdownParserContext context) in \src\Markdig\Parsers\MarkdownParser.cs:line 56
at Markdig.Markdown.ToHtml(String markdown, MarkdownPipeline pipeline, MarkdownParserContext context) in\markdig\src\Markdig\Markdown.cs:line 101
at FuzzTest.Program.Main(String[] args) in \FuzzingTargets\MarkdigFuzzer\Program.cs:line 13

Originally created by @mschessler on GitHub (Jan 1, 2025). Tested Version: newest commit https://github.com/xoofx/markdig/commit/d1233ffe66dae3944375b78d2b05d966cd597070 on main ### **Reproducer:** ``` var pipeline = new MarkdownPipelineBuilder().UseAdvancedExtensions().Build(); var result = Markdown.ToHtml("+-\t\r\n|\r\n+-", pipeline); ``` ### **Stacktrace:** > at System.ThrowHelper.ThrowIndexOutOfRangeException() > at System.String.get_Chars(Int32 index) > at Markdig.Helpers.StringSlice.NextChar() in \src\Markdig\Helpers\StringSlice.cs:line 167 > at Markdig.Extensions.Tables.GridTableParser.IsRowSeparator(StringSlice slice) in \src\Markdig\Extensions\Tables\GridTableParser.cs:line 170 > at Markdig.Extensions.Tables.GridTableParser.SetRowSpanState(List`1 columns, StringSlice line, Boolean& isHeaderRow, Boolean& hasRowSpan) in \src\Markdig\Extensions\Tables\GridTableParser.cs:line 147 > at Markdig.Extensions.Tables.GridTableParser.HandleNewRow(BlockProcessor processor, GridTableState tableState, Table gridTable) in \src\Markdig\Extensions\Tables\GridTableParser.cs:line 116 > at Markdig.Extensions.Tables.GridTableParser.TryContinue(BlockProcessor processor, Block block) in \src\Markdig\Extensions\Tables\GridTableParser.cs:line 97 > at Markdig.Parsers.BlockProcessor.TryContinueBlocks() in \src\Markdig\Parsers\BlockProcessor.cs:line 663 > at Markdig.Parsers.BlockProcessor.ProcessLine(StringSlice newLine) in \src\Markdig\Parsers\BlockProcessor.cs:line 498 > at Markdig.Parsers.MarkdownParser.ProcessBlocks(BlockProcessor blockProcessor, String text) in \src\Markdig\Parsers\MarkdownParser.cs:line 113 > at Markdig.Parsers.MarkdownParser.Parse(String text, MarkdownPipeline pipeline, MarkdownParserContext context) in \src\Markdig\Parsers\MarkdownParser.cs:line 56 > at Markdig.Markdown.ToHtml(String markdown, MarkdownPipeline pipeline, MarkdownParserContext context) in\markdig\src\Markdig\Markdown.cs:line 101 > at FuzzTest.Program.Main(String[] args) in \FuzzingTargets\MarkdigFuzzer\Program.cs:line 13
claunia added the bugPR Welcome! labels 2026-01-29 14:43:40 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/markdig#711