aboutsummaryrefslogtreecommitdiffstats
path: root/modules/markup
diff options
context:
space:
mode:
authorzeripath <art27@cantab.net>2019-01-30 22:17:43 +0000
committertechknowlogick <matti@mdranta.net>2019-01-30 17:17:43 -0500
commit0823791d1793dc28b0c374dd332e9d1b24acfee1 (patch)
tree8b5f5f06144af34d795326b56ff3eea8433c2d79 /modules/markup
parentca00ca8ee450243b322457a0512ff338b6672494 (diff)
downloadgitea-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/markup')
-rw-r--r--modules/markup/orgmode/orgmode.go14
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