From c1c8d742e8c014b2bb7da9f2c170772251b00e77 Mon Sep 17 00:00:00 2001 From: Bryce Kwon Date: Sat, 7 Nov 2026 09:58:18 -1000 Subject: Prove a control byte cannot hide a link's scheme The old check split the scheme with a newline, which ends the line before a link can form, so it passed with the strip removed. --- tests/extensions/test-about-render.lua | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/tests/extensions/test-about-render.lua b/tests/extensions/test-about-render.lua index 45cc5b3..6088e01 100644 --- a/tests/extensions/test-about-render.lua +++ b/tests/extensions/test-about-render.lua @@ -207,8 +207,15 @@ out = render("README.md", "[bad](javascript:alert(1))") h.excludes("a javascript link renders no anchor", out, "bad

") + +out = render("README.md", "[bad](java\1script:alert%281%29)") +h.excludes("a control byte inside a scheme is still caught", out, "
bad

") out = render("README.md", "[bad](//evil.example/x)") h.excludes("a scheme relative link renders no anchor", out, "