From 6670e81640cf33567debe7fbdfb6acd342468b76 Mon Sep 17 00:00:00 2001 From: Kharec Date: Thu, 11 Dec 2025 16:37:46 +0100 Subject: [PATCH] feat: harden emphasis regexes to avoid matching inside words --- lib/MarkdownParser.pm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/MarkdownParser.pm b/lib/MarkdownParser.pm index 6c6640d..00045bc 100644 --- a/lib/MarkdownParser.pm +++ b/lib/MarkdownParser.pm @@ -288,8 +288,8 @@ sub parse_inline { push @bold_parts, { type => 'bold', content => $1 }; return "\x01B$idx\x02"; }->()/ge; - $text =~ s/___((?:[^_]|_(?!_))+?)___/$1<\/strong>/g; - $text =~ s/__((?:[^_]|_(?!_))+?)__/$1<\/strong>/g; + $text =~ s/(?$1<\/strong>/g; + $text =~ s/(?$1<\/strong>/g; my @italic_parts; my $italic_idx = 0; @@ -298,7 +298,7 @@ sub parse_inline { push @italic_parts, { type => 'italic', content => $1 }; return "\x01I$idx\x02"; }->()/ge; - $text =~ s/_([^_]+)_/sub { + $text =~ s/(? 'italic', content => $1 }; return "\x01I$idx\x02"; @@ -312,7 +312,7 @@ sub parse_inline { push @italic_parts, { type => 'italic', content => $1 }; return "\x01I$idx\x02"; }->()/ge; - $content =~ s/_([^_]+)_/sub { + $content =~ s/(? 'italic', content => $1 }; return "\x01I$idx\x02";