mirror of
				https://github.com/go-gitea/gitea
				synced 2025-11-04 05:18:25 +00:00 
			
		
		
		
	* In Render tolerate not being passed a context It is possible for RenderString to be passed to an external renderer if markdown is set to be rendered by an external renderer. No context is currently sent to these meaning that this will error out. Fix #16835 Signed-off-by: Andrew Thornton <art27@cantab.net> * Add Context to Repo calls for RenderString All calls from routers can easily add the context - so add it. Signed-off-by: Andrew Thornton <art27@cantab.net> Co-authored-by: zeripath <art27@cantab.net>
This commit is contained in:
		
							
								
								
									
										8
									
								
								modules/markup/external/external.go
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								modules/markup/external/external.go
									
									
									
									
										vendored
									
									
								
							@@ -14,6 +14,7 @@ import (
 | 
				
			|||||||
	"runtime"
 | 
						"runtime"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"code.gitea.io/gitea/modules/graceful"
 | 
				
			||||||
	"code.gitea.io/gitea/modules/log"
 | 
						"code.gitea.io/gitea/modules/log"
 | 
				
			||||||
	"code.gitea.io/gitea/modules/markup"
 | 
						"code.gitea.io/gitea/modules/markup"
 | 
				
			||||||
	"code.gitea.io/gitea/modules/process"
 | 
						"code.gitea.io/gitea/modules/process"
 | 
				
			||||||
@@ -99,7 +100,12 @@ func (p *Renderer) Render(ctx *markup.RenderContext, input io.Reader, output io.
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ctx == nil || ctx.Ctx == nil {
 | 
						if ctx == nil || ctx.Ctx == nil {
 | 
				
			||||||
		return fmt.Errorf("RenderContext did not provide context")
 | 
							if ctx == nil {
 | 
				
			||||||
 | 
								log.Warn("RenderContext not provided defaulting to empty ctx")
 | 
				
			||||||
 | 
								ctx = &markup.RenderContext{}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							log.Warn("RenderContext did not provide context, defaulting to Shutdown context")
 | 
				
			||||||
 | 
							ctx.Ctx = graceful.GetManager().ShutdownContext()
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	processCtx, cancel := context.WithCancel(ctx.Ctx)
 | 
						processCtx, cancel := context.WithCancel(ctx.Ctx)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1138,6 +1138,7 @@ func ViewIssue(ctx *context.Context) {
 | 
				
			|||||||
		URLPrefix: ctx.Repo.RepoLink,
 | 
							URLPrefix: ctx.Repo.RepoLink,
 | 
				
			||||||
		Metas:     ctx.Repo.Repository.ComposeMetas(),
 | 
							Metas:     ctx.Repo.Repository.ComposeMetas(),
 | 
				
			||||||
		GitRepo:   ctx.Repo.GitRepo,
 | 
							GitRepo:   ctx.Repo.GitRepo,
 | 
				
			||||||
 | 
							Ctx:       ctx,
 | 
				
			||||||
	}, issue.Content)
 | 
						}, issue.Content)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		ctx.ServerError("RenderString", err)
 | 
							ctx.ServerError("RenderString", err)
 | 
				
			||||||
@@ -1303,6 +1304,7 @@ func ViewIssue(ctx *context.Context) {
 | 
				
			|||||||
				URLPrefix: ctx.Repo.RepoLink,
 | 
									URLPrefix: ctx.Repo.RepoLink,
 | 
				
			||||||
				Metas:     ctx.Repo.Repository.ComposeMetas(),
 | 
									Metas:     ctx.Repo.Repository.ComposeMetas(),
 | 
				
			||||||
				GitRepo:   ctx.Repo.GitRepo,
 | 
									GitRepo:   ctx.Repo.GitRepo,
 | 
				
			||||||
 | 
									Ctx:       ctx,
 | 
				
			||||||
			}, comment.Content)
 | 
								}, comment.Content)
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				ctx.ServerError("RenderString", err)
 | 
									ctx.ServerError("RenderString", err)
 | 
				
			||||||
@@ -1379,6 +1381,7 @@ func ViewIssue(ctx *context.Context) {
 | 
				
			|||||||
				URLPrefix: ctx.Repo.RepoLink,
 | 
									URLPrefix: ctx.Repo.RepoLink,
 | 
				
			||||||
				Metas:     ctx.Repo.Repository.ComposeMetas(),
 | 
									Metas:     ctx.Repo.Repository.ComposeMetas(),
 | 
				
			||||||
				GitRepo:   ctx.Repo.GitRepo,
 | 
									GitRepo:   ctx.Repo.GitRepo,
 | 
				
			||||||
 | 
									Ctx:       ctx,
 | 
				
			||||||
			}, comment.Content)
 | 
								}, comment.Content)
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				ctx.ServerError("RenderString", err)
 | 
									ctx.ServerError("RenderString", err)
 | 
				
			||||||
@@ -1740,6 +1743,7 @@ func UpdateIssueContent(ctx *context.Context) {
 | 
				
			|||||||
		URLPrefix: ctx.Query("context"),
 | 
							URLPrefix: ctx.Query("context"),
 | 
				
			||||||
		Metas:     ctx.Repo.Repository.ComposeMetas(),
 | 
							Metas:     ctx.Repo.Repository.ComposeMetas(),
 | 
				
			||||||
		GitRepo:   ctx.Repo.GitRepo,
 | 
							GitRepo:   ctx.Repo.GitRepo,
 | 
				
			||||||
 | 
							Ctx:       ctx,
 | 
				
			||||||
	}, issue.Content)
 | 
						}, issue.Content)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		ctx.ServerError("RenderString", err)
 | 
							ctx.ServerError("RenderString", err)
 | 
				
			||||||
@@ -2170,6 +2174,7 @@ func UpdateCommentContent(ctx *context.Context) {
 | 
				
			|||||||
		URLPrefix: ctx.Query("context"),
 | 
							URLPrefix: ctx.Query("context"),
 | 
				
			||||||
		Metas:     ctx.Repo.Repository.ComposeMetas(),
 | 
							Metas:     ctx.Repo.Repository.ComposeMetas(),
 | 
				
			||||||
		GitRepo:   ctx.Repo.GitRepo,
 | 
							GitRepo:   ctx.Repo.GitRepo,
 | 
				
			||||||
 | 
							Ctx:       ctx,
 | 
				
			||||||
	}, comment.Content)
 | 
						}, comment.Content)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		ctx.ServerError("RenderString", err)
 | 
							ctx.ServerError("RenderString", err)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -89,6 +89,7 @@ func Milestones(ctx *context.Context) {
 | 
				
			|||||||
			URLPrefix: ctx.Repo.RepoLink,
 | 
								URLPrefix: ctx.Repo.RepoLink,
 | 
				
			||||||
			Metas:     ctx.Repo.Repository.ComposeMetas(),
 | 
								Metas:     ctx.Repo.Repository.ComposeMetas(),
 | 
				
			||||||
			GitRepo:   ctx.Repo.GitRepo,
 | 
								GitRepo:   ctx.Repo.GitRepo,
 | 
				
			||||||
 | 
								Ctx:       ctx,
 | 
				
			||||||
		}, m.Content)
 | 
							}, m.Content)
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			ctx.ServerError("RenderString", err)
 | 
								ctx.ServerError("RenderString", err)
 | 
				
			||||||
@@ -282,6 +283,7 @@ func MilestoneIssuesAndPulls(ctx *context.Context) {
 | 
				
			|||||||
		URLPrefix: ctx.Repo.RepoLink,
 | 
							URLPrefix: ctx.Repo.RepoLink,
 | 
				
			||||||
		Metas:     ctx.Repo.Repository.ComposeMetas(),
 | 
							Metas:     ctx.Repo.Repository.ComposeMetas(),
 | 
				
			||||||
		GitRepo:   ctx.Repo.GitRepo,
 | 
							GitRepo:   ctx.Repo.GitRepo,
 | 
				
			||||||
 | 
							Ctx:       ctx,
 | 
				
			||||||
	}, milestone.Content)
 | 
						}, milestone.Content)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		ctx.ServerError("RenderString", err)
 | 
							ctx.ServerError("RenderString", err)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -82,6 +82,7 @@ func Projects(ctx *context.Context) {
 | 
				
			|||||||
			URLPrefix: ctx.Repo.RepoLink,
 | 
								URLPrefix: ctx.Repo.RepoLink,
 | 
				
			||||||
			Metas:     ctx.Repo.Repository.ComposeMetas(),
 | 
								Metas:     ctx.Repo.Repository.ComposeMetas(),
 | 
				
			||||||
			GitRepo:   ctx.Repo.GitRepo,
 | 
								GitRepo:   ctx.Repo.GitRepo,
 | 
				
			||||||
 | 
								Ctx:       ctx,
 | 
				
			||||||
		}, projects[i].Description)
 | 
							}, projects[i].Description)
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			ctx.ServerError("RenderString", err)
 | 
								ctx.ServerError("RenderString", err)
 | 
				
			||||||
@@ -324,6 +325,7 @@ func ViewProject(ctx *context.Context) {
 | 
				
			|||||||
		URLPrefix: ctx.Repo.RepoLink,
 | 
							URLPrefix: ctx.Repo.RepoLink,
 | 
				
			||||||
		Metas:     ctx.Repo.Repository.ComposeMetas(),
 | 
							Metas:     ctx.Repo.Repository.ComposeMetas(),
 | 
				
			||||||
		GitRepo:   ctx.Repo.GitRepo,
 | 
							GitRepo:   ctx.Repo.GitRepo,
 | 
				
			||||||
 | 
							Ctx:       ctx,
 | 
				
			||||||
	}, project.Description)
 | 
						}, project.Description)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		ctx.ServerError("RenderString", err)
 | 
							ctx.ServerError("RenderString", err)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -146,6 +146,7 @@ func releasesOrTags(ctx *context.Context, isTagList bool) {
 | 
				
			|||||||
			URLPrefix: ctx.Repo.RepoLink,
 | 
								URLPrefix: ctx.Repo.RepoLink,
 | 
				
			||||||
			Metas:     ctx.Repo.Repository.ComposeMetas(),
 | 
								Metas:     ctx.Repo.Repository.ComposeMetas(),
 | 
				
			||||||
			GitRepo:   ctx.Repo.GitRepo,
 | 
								GitRepo:   ctx.Repo.GitRepo,
 | 
				
			||||||
 | 
								Ctx:       ctx,
 | 
				
			||||||
		}, r.Note)
 | 
							}, r.Note)
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			ctx.ServerError("RenderString", err)
 | 
								ctx.ServerError("RenderString", err)
 | 
				
			||||||
@@ -215,6 +216,7 @@ func SingleRelease(ctx *context.Context) {
 | 
				
			|||||||
		URLPrefix: ctx.Repo.RepoLink,
 | 
							URLPrefix: ctx.Repo.RepoLink,
 | 
				
			||||||
		Metas:     ctx.Repo.Repository.ComposeMetas(),
 | 
							Metas:     ctx.Repo.Repository.ComposeMetas(),
 | 
				
			||||||
		GitRepo:   ctx.Repo.GitRepo,
 | 
							GitRepo:   ctx.Repo.GitRepo,
 | 
				
			||||||
 | 
							Ctx:       ctx,
 | 
				
			||||||
	}, release.Note)
 | 
						}, release.Note)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		ctx.ServerError("RenderString", err)
 | 
							ctx.ServerError("RenderString", err)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -272,6 +272,7 @@ func Milestones(ctx *context.Context) {
 | 
				
			|||||||
		milestones[i].RenderedContent, err = markdown.RenderString(&markup.RenderContext{
 | 
							milestones[i].RenderedContent, err = markdown.RenderString(&markup.RenderContext{
 | 
				
			||||||
			URLPrefix: milestones[i].Repo.Link(),
 | 
								URLPrefix: milestones[i].Repo.Link(),
 | 
				
			||||||
			Metas:     milestones[i].Repo.ComposeMetas(),
 | 
								Metas:     milestones[i].Repo.ComposeMetas(),
 | 
				
			||||||
 | 
								Ctx:       ctx,
 | 
				
			||||||
		}, milestones[i].Content)
 | 
							}, milestones[i].Content)
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			ctx.ServerError("RenderString", err)
 | 
								ctx.ServerError("RenderString", err)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -124,6 +124,7 @@ func Profile(ctx *context.Context) {
 | 
				
			|||||||
			URLPrefix: ctx.Repo.RepoLink,
 | 
								URLPrefix: ctx.Repo.RepoLink,
 | 
				
			||||||
			Metas:     map[string]string{"mode": "document"},
 | 
								Metas:     map[string]string{"mode": "document"},
 | 
				
			||||||
			GitRepo:   ctx.Repo.GitRepo,
 | 
								GitRepo:   ctx.Repo.GitRepo,
 | 
				
			||||||
 | 
								Ctx:       ctx,
 | 
				
			||||||
		}, ctxUser.Description)
 | 
							}, ctxUser.Description)
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			ctx.ServerError("RenderString", err)
 | 
								ctx.ServerError("RenderString", err)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user