From 1ddcaedb88bc9ea829df8df6b254c73615c70031 Mon Sep 17 00:00:00 2001 From: Giteabot Date: Sat, 27 Jan 2024 23:14:36 +0800 Subject: [PATCH] Strip `/` from relative links (#28932) (#28952) Backport #28932 by @KN4CK3R Fixes #28915 Restores the old behaviour: https://github.com/go-gitea/gitea/pull/26745/files#diff-d78a9d361b1fddc12218e4dd42f42d39d6be1fda184041e06bb6fb30f0d94c59L96 Co-authored-by: KN4CK3R --- modules/markup/markdown/goldmark.go | 10 +++++---- modules/markup/markdown/markdown_test.go | 26 ++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/modules/markup/markdown/goldmark.go b/modules/markup/markdown/goldmark.go index 1db3cbad7e..3dc5530e00 100644 --- a/modules/markup/markdown/goldmark.go +++ b/modules/markup/markdown/goldmark.go @@ -85,9 +85,11 @@ func (g *ASTTransformer) Transform(node *ast.Document, reader text.Reader, pc pa // 2. If they're not wrapped with a link they need a link wrapper // Check if the destination is a real link - link := v.Destination - if len(link) > 0 && !markup.IsLink(link) { - v.Destination = []byte(giteautil.URLJoin(ctx.Links.ResolveMediaLink(ctx.IsWiki), string(link))) + if len(v.Destination) > 0 && !markup.IsLink(v.Destination) { + v.Destination = []byte(giteautil.URLJoin( + ctx.Links.ResolveMediaLink(ctx.IsWiki), + strings.TrimLeft(string(v.Destination), "/"), + )) } parent := n.Parent() @@ -103,7 +105,7 @@ func (g *ASTTransformer) Transform(node *ast.Document, reader text.Reader, pc pa // Duplicate the current image node image := ast.NewImage(ast.NewLink()) - image.Destination = link + image.Destination = v.Destination image.Title = v.Title for _, attr := range v.Attributes() { image.SetAttribute(attr.Name, attr.Value) diff --git a/modules/markup/markdown/markdown_test.go b/modules/markup/markdown/markdown_test.go index 5216d1973c..ee3ec0fda5 100644 --- a/modules/markup/markdown/markdown_test.go +++ b/modules/markup/markdown/markdown_test.go @@ -580,6 +580,8 @@ https://example.com/file.bin [[local link|file.bin]] [[remote link|https://example.com]] ![local image](image.jpg) +![local image](path/file) +![local image](/path/file) ![remote image](https://example.com/image.jpg) [[local image|image.jpg]] [[remote link|https://example.com/image.jpg]] @@ -609,6 +611,8 @@ mail@domain.com local link
remote link
local image
+local image
+local image
remote image
local image
remote link
@@ -634,6 +638,8 @@ space

local link
remote link
local image
+local image
+local image
remote image
local image
remote link
@@ -661,6 +667,8 @@ space

local link
remote link
local image
+local image
+local image
remote image
local image
remote link
@@ -688,6 +696,8 @@ space

local link
remote link
local image
+local image
+local image
remote image
local image
remote link
@@ -715,6 +725,8 @@ space

local link
remote link
local image
+local image
+local image
remote image
local image
remote link
@@ -742,6 +754,8 @@ space

local link
remote link
local image
+local image
+local image
remote image
local image
remote link
@@ -770,6 +784,8 @@ space

local link
remote link
local image
+local image
+local image
remote image
local image
remote link
@@ -798,6 +814,8 @@ space

local link
remote link
local image
+local image
+local image
remote image
local image
remote link
@@ -826,6 +844,8 @@ space

local link
remote link
local image
+local image
+local image
remote image
local image
remote link
@@ -854,6 +874,8 @@ space

local link
remote link
local image
+local image
+local image
remote image
local image
remote link
@@ -883,6 +905,8 @@ space

local link
remote link
local image
+local image
+local image
remote image
local image
remote link
@@ -912,6 +936,8 @@ space

local link
remote link
local image
+local image
+local image
remote image
local image
remote link