]> source.dussan.org Git - gitea.git/commitdiff
In Render tolerate not being passed a context (#16842)
authorzeripath <art27@cantab.net>
Sat, 28 Aug 2021 20:15:56 +0000 (21:15 +0100)
committerGitHub <noreply@github.com>
Sat, 28 Aug 2021 20:15:56 +0000 (21:15 +0100)
* 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>
modules/markup/external/external.go
routers/web/repo/issue.go
routers/web/repo/milestone.go
routers/web/repo/projects.go
routers/web/repo/release.go
routers/web/user/home.go
routers/web/user/profile.go

index 52139f5a49c3cd709f8824d89525be49e191f6f6..f7be06dbe91d38e76edf009247593b572d378b3c 100644 (file)
@@ -14,6 +14,7 @@ import (
        "runtime"
        "strings"
 
+       "code.gitea.io/gitea/modules/graceful"
        "code.gitea.io/gitea/modules/log"
        "code.gitea.io/gitea/modules/markup"
        "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 {
-               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)
index 59ffe1edb1916164eb97e8146d0fc8d349e376ef..3f7af7a51faa28090d638ed9c13d4accf06e17e0 100644 (file)
@@ -1138,6 +1138,7 @@ func ViewIssue(ctx *context.Context) {
                URLPrefix: ctx.Repo.RepoLink,
                Metas:     ctx.Repo.Repository.ComposeMetas(),
                GitRepo:   ctx.Repo.GitRepo,
+               Ctx:       ctx,
        }, issue.Content)
        if err != nil {
                ctx.ServerError("RenderString", err)
@@ -1303,6 +1304,7 @@ func ViewIssue(ctx *context.Context) {
                                URLPrefix: ctx.Repo.RepoLink,
                                Metas:     ctx.Repo.Repository.ComposeMetas(),
                                GitRepo:   ctx.Repo.GitRepo,
+                               Ctx:       ctx,
                        }, comment.Content)
                        if err != nil {
                                ctx.ServerError("RenderString", err)
@@ -1379,6 +1381,7 @@ func ViewIssue(ctx *context.Context) {
                                URLPrefix: ctx.Repo.RepoLink,
                                Metas:     ctx.Repo.Repository.ComposeMetas(),
                                GitRepo:   ctx.Repo.GitRepo,
+                               Ctx:       ctx,
                        }, comment.Content)
                        if err != nil {
                                ctx.ServerError("RenderString", err)
@@ -1739,6 +1742,7 @@ func UpdateIssueContent(ctx *context.Context) {
                URLPrefix: ctx.FormString("context"),
                Metas:     ctx.Repo.Repository.ComposeMetas(),
                GitRepo:   ctx.Repo.GitRepo,
+               Ctx:       ctx,
        }, issue.Content)
        if err != nil {
                ctx.ServerError("RenderString", err)
@@ -2170,6 +2174,7 @@ func UpdateCommentContent(ctx *context.Context) {
                URLPrefix: ctx.FormString("context"),
                Metas:     ctx.Repo.Repository.ComposeMetas(),
                GitRepo:   ctx.Repo.GitRepo,
+               Ctx:       ctx,
        }, comment.Content)
        if err != nil {
                ctx.ServerError("RenderString", err)
index 3ba27dd19afb2fe64ff3ecd44ef5d1a0bc874c36..80f1eb52318a07b834bf5003e514a5eb6d8e8456 100644 (file)
@@ -83,6 +83,7 @@ func Milestones(ctx *context.Context) {
                        URLPrefix: ctx.Repo.RepoLink,
                        Metas:     ctx.Repo.Repository.ComposeMetas(),
                        GitRepo:   ctx.Repo.GitRepo,
+                       Ctx:       ctx,
                }, m.Content)
                if err != nil {
                        ctx.ServerError("RenderString", err)
@@ -276,6 +277,7 @@ func MilestoneIssuesAndPulls(ctx *context.Context) {
                URLPrefix: ctx.Repo.RepoLink,
                Metas:     ctx.Repo.Repository.ComposeMetas(),
                GitRepo:   ctx.Repo.GitRepo,
+               Ctx:       ctx,
        }, milestone.Content)
        if err != nil {
                ctx.ServerError("RenderString", err)
index 9afbf0165d5d93491d619e66fa9200b15cdc1ef1..556656e5b506fdfaf2ae0a5e4df13fafd7a81445 100644 (file)
@@ -82,6 +82,7 @@ func Projects(ctx *context.Context) {
                        URLPrefix: ctx.Repo.RepoLink,
                        Metas:     ctx.Repo.Repository.ComposeMetas(),
                        GitRepo:   ctx.Repo.GitRepo,
+                       Ctx:       ctx,
                }, projects[i].Description)
                if err != nil {
                        ctx.ServerError("RenderString", err)
@@ -324,6 +325,7 @@ func ViewProject(ctx *context.Context) {
                URLPrefix: ctx.Repo.RepoLink,
                Metas:     ctx.Repo.Repository.ComposeMetas(),
                GitRepo:   ctx.Repo.GitRepo,
+               Ctx:       ctx,
        }, project.Description)
        if err != nil {
                ctx.ServerError("RenderString", err)
index d1d904bcd9cb0151dcb202a452c4463f7e7c092f..d37955c559c92994336a32854c132e3b0cbea4d5 100644 (file)
@@ -146,6 +146,7 @@ func releasesOrTags(ctx *context.Context, isTagList bool) {
                        URLPrefix: ctx.Repo.RepoLink,
                        Metas:     ctx.Repo.Repository.ComposeMetas(),
                        GitRepo:   ctx.Repo.GitRepo,
+                       Ctx:       ctx,
                }, r.Note)
                if err != nil {
                        ctx.ServerError("RenderString", err)
@@ -215,6 +216,7 @@ func SingleRelease(ctx *context.Context) {
                URLPrefix: ctx.Repo.RepoLink,
                Metas:     ctx.Repo.Repository.ComposeMetas(),
                GitRepo:   ctx.Repo.GitRepo,
+               Ctx:       ctx,
        }, release.Note)
        if err != nil {
                ctx.ServerError("RenderString", err)
index 397850f18bc961f83ebd18601ba666830d4617aa..6565010e0fb1b3224946059e3d6f8eba705d3e9e 100644 (file)
@@ -272,6 +272,7 @@ func Milestones(ctx *context.Context) {
                milestones[i].RenderedContent, err = markdown.RenderString(&markup.RenderContext{
                        URLPrefix: milestones[i].Repo.Link(),
                        Metas:     milestones[i].Repo.ComposeMetas(),
+                       Ctx:       ctx,
                }, milestones[i].Content)
                if err != nil {
                        ctx.ServerError("RenderString", err)
index c1d787a860fd2a7f1212ef6a830acb3a6c43a0ee..9ecdc2345c5ea16b92e8b44a8cb15b41feef61da 100644 (file)
@@ -124,6 +124,7 @@ func Profile(ctx *context.Context) {
                        URLPrefix: ctx.Repo.RepoLink,
                        Metas:     map[string]string{"mode": "document"},
                        GitRepo:   ctx.Repo.GitRepo,
+                       Ctx:       ctx,
                }, ctxUser.Description)
                if err != nil {
                        ctx.ServerError("RenderString", err)