diff options
author | zeripath <art27@cantab.net> | 2019-01-30 22:17:43 +0000 |
---|---|---|
committer | techknowlogick <matti@mdranta.net> | 2019-01-30 17:17:43 -0500 |
commit | 0823791d1793dc28b0c374dd332e9d1b24acfee1 (patch) | |
tree | 8b5f5f06144af34d795326b56ff3eea8433c2d79 /modules | |
parent | ca00ca8ee450243b322457a0512ff338b6672494 (diff) | |
download | gitea-0823791d1793dc28b0c374dd332e9d1b24acfee1.tar.gz gitea-0823791d1793dc28b0c374dd332e9d1b24acfee1.zip |
Recover panic in orgmode.Render if bad orgfile (#4982) (#5903)
This PR protects against the panic referred to in chaseadmsio/goorgeous#82
by recovering from the panic and just returning the raw bytes if
there is an error.
Signed-off-by: Andrew Thornton <art27@cantab.net>
Diffstat (limited to 'modules')
-rw-r--r-- | modules/markup/orgmode/orgmode.go | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/modules/markup/orgmode/orgmode.go b/modules/markup/orgmode/orgmode.go index f9223a18b5..6b6d622d7b 100644 --- a/modules/markup/orgmode/orgmode.go +++ b/modules/markup/orgmode/orgmode.go @@ -5,6 +5,7 @@ package markup import ( + "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/markup/markdown" @@ -31,7 +32,13 @@ func (Parser) Extensions() []string { } // Render renders orgmode rawbytes to HTML -func Render(rawBytes []byte, urlPrefix string, metas map[string]string, isWiki bool) []byte { +func Render(rawBytes []byte, urlPrefix string, metas map[string]string, isWiki bool) (result []byte) { + defer func() { + if err := recover(); err != nil { + log.Error(4, "Panic in orgmode.Render: %v Just returning the rawBytes", err) + result = rawBytes + } + }() htmlFlags := blackfriday.HTML_USE_XHTML htmlFlags |= blackfriday.HTML_SKIP_STYLE htmlFlags |= blackfriday.HTML_OMIT_CONTENTS @@ -40,9 +47,8 @@ func Render(rawBytes []byte, urlPrefix string, metas map[string]string, isWiki b URLPrefix: urlPrefix, IsWiki: isWiki, } - - result := goorgeous.Org(rawBytes, renderer) - return result + result = goorgeous.Org(rawBytes, renderer) + return } // RenderString reners orgmode string to HTML string |