mirror of
https://github.com/go-gitea/gitea.git
synced 2025-04-28 19:55:20 +00:00
This fixes issue #27847 where regular expression allowed email address to start with special symbols. Valid email addresses should start with alphanumeric character, and as such will be rendered as email. Added test cases from the bug report to validate, such input will not be rendered anymore as email address. --------- Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
34 lines
850 B
Go
34 lines
850 B
Go
// Copyright 2024 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package markup
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"golang.org/x/net/html"
|
|
)
|
|
|
|
// emailAddressProcessor replaces raw email addresses with a mailto: link.
|
|
func emailAddressProcessor(ctx *RenderContext, node *html.Node) {
|
|
next := node.NextSibling
|
|
for node != nil && node != next {
|
|
m := globalVars().emailRegex.FindStringSubmatchIndex(node.Data)
|
|
if m == nil {
|
|
return
|
|
}
|
|
|
|
var nextByte byte
|
|
if len(node.Data) > m[3] {
|
|
nextByte = node.Data[m[3]]
|
|
}
|
|
if strings.IndexByte(":/", nextByte) != -1 {
|
|
// for cases: "git@gitea.com:owner/repo.git", "https://git@gitea.com/owner/repo.git"
|
|
return
|
|
}
|
|
mail := node.Data[m[2]:m[3]]
|
|
replaceContent(node, m[2], m[3], createLink(ctx, "mailto:"+mail, mail, "" /*mailto*/))
|
|
node = node.NextSibling.NextSibling
|
|
}
|
|
}
|