From 0823791d1793dc28b0c374dd332e9d1b24acfee1 Mon Sep 17 00:00:00 2001 From: zeripath Date: Wed, 30 Jan 2019 22:17:43 +0000 Subject: [PATCH] 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 --- modules/markup/orgmode/orgmode.go | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/modules/markup/orgmode/orgmode.go b/modules/markup/orgmode/orgmode.go index f9223a18b..6b6d622d7 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