]> source.dussan.org Git - gitea.git/commitdiff
Fix crash in short link processor (#13839)
authormrsdizzie <info@mrsdizzie.com>
Fri, 4 Dec 2020 02:01:42 +0000 (21:01 -0500)
committerGitHub <noreply@github.com>
Fri, 4 Dec 2020 02:01:42 +0000 (03:01 +0100)
Fixes #13819

modules/markup/html.go

index a6c6649cd359438c65e4a569d507276722852ad8..586343fae119782f6649bf8e6fef1961fc4934db 100644 (file)
@@ -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
                }