diff options
author | mrsdizzie <info@mrsdizzie.com> | 2020-12-03 21:01:42 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-04 03:01:42 +0100 |
commit | 3512c7e40f0b06f9f495a919e0d4925e5688e2da (patch) | |
tree | 4714b03490e9d7177c288d87105bbffffbef2933 /modules | |
parent | c9effd5364caaed040f78b4298a34fbf98420fba (diff) | |
download | gitea-3512c7e40f0b06f9f495a919e0d4925e5688e2da.tar.gz gitea-3512c7e40f0b06f9f495a919e0d4925e5688e2da.zip |
Fix crash in short link processor (#13839)
Fixes #13819
Diffstat (limited to 'modules')
-rw-r--r-- | modules/markup/html.go | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/modules/markup/html.go b/modules/markup/html.go index a6c6649cd3..586343fae1 100644 --- a/modules/markup/html.go +++ b/modules/markup/html.go @@ -651,16 +651,18 @@ func shortLinkProcessorFull(ctx *postProcessCtx, node *html.Node, noLink bool) { // When parsing HTML, x/net/html will change all quotes which are // not used for syntax into UTF-8 quotes. So checking val[0] won't // be enough, since that only checks a single byte. - if (strings.HasPrefix(val, "“") && strings.HasSuffix(val, "”")) || - (strings.HasPrefix(val, "‘") && strings.HasSuffix(val, "’")) { - const lenQuote = len("‘") - val = val[lenQuote : len(val)-lenQuote] - } else if (strings.HasPrefix(val, "\"") && strings.HasSuffix(val, "\"")) || - (strings.HasPrefix(val, "'") && strings.HasSuffix(val, "'")) { - val = val[1 : len(val)-1] - } else if strings.HasPrefix(val, "'") && strings.HasSuffix(val, "’") { - const lenQuote = len("‘") - val = val[1 : len(val)-lenQuote] + if len(val) > 1 { + if (strings.HasPrefix(val, "“") && strings.HasSuffix(val, "”")) || + (strings.HasPrefix(val, "‘") && strings.HasSuffix(val, "’")) { + const lenQuote = len("‘") + val = val[lenQuote : len(val)-lenQuote] + } else if (strings.HasPrefix(val, "\"") && strings.HasSuffix(val, "\"")) || + (strings.HasPrefix(val, "'") && strings.HasSuffix(val, "'")) { + val = val[1 : len(val)-1] + } else if strings.HasPrefix(val, "'") && strings.HasSuffix(val, "’") { + const lenQuote = len("‘") + val = val[1 : len(val)-lenQuote] + } } props[key] = val } |