summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzeripath <art27@cantab.net>2022-06-02 17:56:32 +0100
committerGitHub <noreply@github.com>2022-06-02 12:56:32 -0400
commite32ab429ffd863f26d2ea884307bcf2c7064d209 (patch)
treef1b52fc46b6e6bab0cbf59b7056d3783d20851c0
parent6171ea7d318c0ca8714bc6efd6a97ea4b495eb6d (diff)
downloadgitea-e32ab429ffd863f26d2ea884307bcf2c7064d209.tar.gz
gitea-e32ab429ffd863f26d2ea884307bcf2c7064d209.zip
Prevent NPE on update mirror settings (#19864)
A `repo_model.Mirror` repository field (`.Repo`) will not automatically be set, but is used without checking in mirror_pull.go:UpdateAddress. This will cause an NPE. This PR changes UpdateAddress to use the helper function GetRepository() helping prevent future NPEs but also changes modules/context/repo.go to ensure that the Mirror.Repo is set. Signed-off-by: Andrew Thornton <art27@cantab.net> Co-authored-by: techknowlogick <techknowlogick@gitea.io>
-rw-r--r--modules/context/repo.go2
-rw-r--r--services/mirror/mirror_pull.go2
2 files changed, 2 insertions, 2 deletions
diff --git a/modules/context/repo.go b/modules/context/repo.go
index 539b111f15..df3fe4e74d 100644
--- a/modules/context/repo.go
+++ b/modules/context/repo.go
@@ -391,7 +391,7 @@ func repoAssignment(ctx *Context, repo *repo_model.Repository) {
ctx.ServerError("GetMirrorByRepoID", err)
return
}
- ctx.Repo.Mirror.Repo = ctx.Repo.Repository
+ ctx.Repo.Mirror.Repo = repo
ctx.Data["MirrorEnablePrune"] = ctx.Repo.Mirror.EnablePrune
ctx.Data["MirrorInterval"] = ctx.Repo.Mirror.Interval
ctx.Data["Mirror"] = ctx.Repo.Mirror
diff --git a/services/mirror/mirror_pull.go b/services/mirror/mirror_pull.go
index c51483821b..a93aee76cf 100644
--- a/services/mirror/mirror_pull.go
+++ b/services/mirror/mirror_pull.go
@@ -32,7 +32,7 @@ const gitShortEmptySha = "0000000"
// UpdateAddress writes new address to Git repository and database
func UpdateAddress(ctx context.Context, m *repo_model.Mirror, addr string) error {
remoteName := m.GetRemoteName()
- repoPath := m.Repo.RepoPath()
+ repoPath := m.GetRepository().RepoPath()
// Remove old remote
_, _, err := git.NewCommand(ctx, "remote", "rm", remoteName).RunStdString(&git.RunOpts{Dir: repoPath})
if err != nil && !strings.HasPrefix(err.Error(), "exit status 128 - fatal: No such remote ") {