diff options
-rw-r--r-- | modules/markup/html.go | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/modules/markup/html.go b/modules/markup/html.go index 67aec7371c..2c2feb0b34 100644 --- a/modules/markup/html.go +++ b/modules/markup/html.go @@ -324,8 +324,30 @@ func (ctx *postProcessCtx) postProcess(rawHTML []byte) ([]byte, error) { // give a generous extra 50 bytes res := make([]byte, 0, len(rawHTML)+50) + + // prepend "<html><body>" res = append(res, "<html><body>"...) - res = append(res, rawHTML...) + + // Strip out nuls - they're always invalid + start := bytes.IndexByte(rawHTML, '\000') + if start >= 0 { + res = append(res, rawHTML[:start]...) + start++ + for start < len(rawHTML) { + end := bytes.IndexByte(rawHTML[start:], '\000') + if end < 0 { + res = append(res, rawHTML[start:]...) + break + } else if end > 0 { + res = append(res, rawHTML[start:start+end]...) + } + start += end + 1 + } + } else { + res = append(res, rawHTML...) + } + + // close the tags res = append(res, "</body></html>"...) // parse the HTML |