瀏覽代碼

fix possible panic

Unknwon 9 年之前
父節點
當前提交
f12832c61e
共有 1 個文件被更改,包括 12 次插入2 次删除
  1. 12 2
      modules/base/markdown.go

+ 12 - 2
modules/base/markdown.go

@@ -271,14 +271,24 @@ OUTER_LOOP:
 			tagName := token.Data
 			// If this is an excluded tag, we skip processing all output until a close tag is encountered.
 			if strings.EqualFold("a", tagName) || strings.EqualFold("code", tagName) || strings.EqualFold("pre", tagName) {
+				stackNum := 1
 				for html.ErrorToken != tokenizer.Next() {
 					token = tokenizer.Token()
 
 					// Copy the token to the output verbatim
 					buf.WriteString(token.String())
-					// If this is the close tag, we are done
+
+					if token.Type == html.StartTagToken {
+						stackNum++
+					}
+
+					// If this is the close tag to the outer-most, we are done
 					if token.Type == html.EndTagToken && strings.EqualFold(tagName, token.Data) {
-						break
+						stackNum--
+
+						if stackNum == 0 {
+							break
+						}
 					}
 				}
 				continue OUTER_LOOP