Fix dart-lang/markdown#586: encode image tag's src attribute (dart-lang/markdown#589)
diff --git a/pkgs/markdown/lib/src/inline_syntaxes/image_syntax.dart b/pkgs/markdown/lib/src/inline_syntaxes/image_syntax.dart index 5d36e58..a8b2c35 100644 --- a/pkgs/markdown/lib/src/inline_syntaxes/image_syntax.dart +++ b/pkgs/markdown/lib/src/inline_syntaxes/image_syntax.dart
@@ -24,7 +24,9 @@ }) { final element = Element.empty('img'); final children = getChildren(); - element.attributes['src'] = destination; + element.attributes['src'] = normalizeLinkDestination( + escapePunctuation(destination), + ); element.attributes['alt'] = children.map((node) { // See https://spec.commonmark.org/0.30/#image-description. // An image description may contain links. Fetch text from the alt
diff --git a/pkgs/markdown/test/original/inline_images.unit b/pkgs/markdown/test/original/inline_images.unit index 5e38830..9e58264 100644 --- a/pkgs/markdown/test/original/inline_images.unit +++ b/pkgs/markdown/test/original/inline_images.unit
@@ -18,3 +18,8 @@ <<< <p><img src="http://foo.com/foo.png" alt="alt" /></p> +>>> XSS +) + +<<< +<p><img src="%22onerror=%22alert('XSS')" alt="Uh oh..." /></p> \ No newline at end of file