mirror of https://github.com/gogs/gogs.git
Add checks to prevent errors in rendering html
parent
0a9bff5897
commit
154681c2a6
|
@ -7,7 +7,6 @@ package markup
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/unknwon/com"
|
"github.com/unknwon/com"
|
||||||
|
@ -289,27 +288,27 @@ OUTER_LOOP:
|
||||||
}
|
}
|
||||||
|
|
||||||
case html.EndTagToken:
|
case html.EndTagToken:
|
||||||
if len(startTags) == 0 {
|
if com.IsSliceContainsStr(startTags, token.Data){
|
||||||
buf.WriteString(token.String())
|
for startTags[len(startTags)-1] != token.Data && len(startTags) > 1 {
|
||||||
break
|
buf.WriteString(ClosingTag(startTags[len(startTags)-1]))
|
||||||
|
startTags = startTags[:len(startTags)-1]
|
||||||
|
}
|
||||||
|
buf.WriteString(ClosingTag(startTags[len(startTags)-1]))
|
||||||
|
startTags = startTags[:len(startTags)-1]
|
||||||
}
|
}
|
||||||
|
|
||||||
buf.Write(leftAngleBracket)
|
|
||||||
buf.WriteString(startTags[len(startTags)-1])
|
|
||||||
buf.Write(rightAngleBracket)
|
|
||||||
startTags = startTags[:len(startTags)-1]
|
|
||||||
default:
|
default:
|
||||||
buf.WriteString(token.String())
|
buf.WriteString(token.String())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if io.EOF == tokenizer.Err() {
|
for i := len(startTags)-1; i >= 0; i-- {
|
||||||
return buf.Bytes()
|
buf.WriteString(ClosingTag(startTags[i]))
|
||||||
}
|
}
|
||||||
|
|
||||||
// If we are not at the end of the input, then some other parsing error has occurred,
|
return buf.Bytes()
|
||||||
// so return the input verbatim.
|
}
|
||||||
return rawHTML
|
func ClosingTag(s string) string{
|
||||||
|
return string(leftAngleBracket) + s + string(rightAngleBracket)
|
||||||
}
|
}
|
||||||
|
|
||||||
type Type string
|
type Type string
|
||||||
|
|
Loading…
Reference in New Issue