mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	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>
This commit is contained in:
		@@ -5,6 +5,7 @@
 | 
				
			|||||||
package markup
 | 
					package markup
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"code.gitea.io/gitea/modules/log"
 | 
				
			||||||
	"code.gitea.io/gitea/modules/markup"
 | 
						"code.gitea.io/gitea/modules/markup"
 | 
				
			||||||
	"code.gitea.io/gitea/modules/markup/markdown"
 | 
						"code.gitea.io/gitea/modules/markup/markdown"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -31,7 +32,13 @@ func (Parser) Extensions() []string {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Render renders orgmode rawbytes to HTML
 | 
					// 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_USE_XHTML
 | 
				
			||||||
	htmlFlags |= blackfriday.HTML_SKIP_STYLE
 | 
						htmlFlags |= blackfriday.HTML_SKIP_STYLE
 | 
				
			||||||
	htmlFlags |= blackfriday.HTML_OMIT_CONTENTS
 | 
						htmlFlags |= blackfriday.HTML_OMIT_CONTENTS
 | 
				
			||||||
@@ -40,9 +47,8 @@ func Render(rawBytes []byte, urlPrefix string, metas map[string]string, isWiki b
 | 
				
			|||||||
		URLPrefix: urlPrefix,
 | 
							URLPrefix: urlPrefix,
 | 
				
			||||||
		IsWiki:    isWiki,
 | 
							IsWiki:    isWiki,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						result = goorgeous.Org(rawBytes, renderer)
 | 
				
			||||||
	result := goorgeous.Org(rawBytes, renderer)
 | 
						return
 | 
				
			||||||
	return result
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// RenderString reners orgmode string to HTML string
 | 
					// RenderString reners orgmode string to HTML string
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user