From e948f2422b502eedc4d2f745c74936c7c7ed2e9d Mon Sep 17 00:00:00 2001 From: KN4CK3R Date: Mon, 11 Dec 2023 20:22:33 +0000 Subject: [PATCH 1/2] Fix possible nil pointer access. --- services/packages/alpine/repository.go | 7 +++---- services/packages/debian/repository.go | 14 ++++++-------- services/packages/rpm/repository.go | 5 +---- 3 files changed, 10 insertions(+), 16 deletions(-) diff --git a/services/packages/alpine/repository.go b/services/packages/alpine/repository.go index 46093d5bdd2e2..7183b335420d5 100644 --- a/services/packages/alpine/repository.go +++ b/services/packages/alpine/repository.go @@ -157,12 +157,11 @@ func buildPackagesIndex(ctx context.Context, ownerID int64, repoVersion *package pf, err := packages_model.GetFileForVersionByName(ctx, repoVersion.ID, IndexFilename, fmt.Sprintf("%s|%s|%s", branch, repository, architecture)) if err != nil && !errors.Is(err, util.ErrNotExist) { return err + } else if pf == nil { + return nil } - if err := packages_model.DeleteAllProperties(ctx, packages_model.PropertyTypeFile, pf.ID); err != nil { - return err - } - return packages_model.DeleteFileByID(ctx, pf.ID) + return packages_service.DeletePackageFile(ctx, pf) } // Cache data needed for all repository files diff --git a/services/packages/debian/repository.go b/services/packages/debian/repository.go index fca3cf420320a..f636c1406cd1e 100644 --- a/services/packages/debian/repository.go +++ b/services/packages/debian/repository.go @@ -181,12 +181,11 @@ func buildPackagesIndices(ctx context.Context, ownerID int64, repoVersion *packa pf, err := packages_model.GetFileForVersionByName(ctx, repoVersion.ID, filename, key) if err != nil && !errors.Is(err, util.ErrNotExist) { return err + } else if pf == nil { + continue } - if err := packages_model.DeleteAllProperties(ctx, packages_model.PropertyTypeFile, pf.ID); err != nil { - return err - } - if err := packages_model.DeleteFileByID(ctx, pf.ID); err != nil { + if err := packages_service.DeletePackageFile(ctx, pf); err != nil { return err } } @@ -286,12 +285,11 @@ func buildReleaseFiles(ctx context.Context, ownerID int64, repoVersion *packages pf, err := packages_model.GetFileForVersionByName(ctx, repoVersion.ID, filename, distribution) if err != nil && !errors.Is(err, util.ErrNotExist) { return err + } else if pf == nil { + continue } - if err := packages_model.DeleteAllProperties(ctx, packages_model.PropertyTypeFile, pf.ID); err != nil { - return err - } - if err := packages_model.DeleteFileByID(ctx, pf.ID); err != nil { + if err := packages_service.DeletePackageFile(ctx, pf); err != nil { return err } } diff --git a/services/packages/rpm/repository.go b/services/packages/rpm/repository.go index c9db0247f6d9f..7e718d321fd7f 100644 --- a/services/packages/rpm/repository.go +++ b/services/packages/rpm/repository.go @@ -148,10 +148,7 @@ func BuildRepositoryFiles(ctx context.Context, ownerID int64) error { return err } for _, pf := range pfs { - if err := packages_model.DeleteAllProperties(ctx, packages_model.PropertyTypeFile, pf.ID); err != nil { - return err - } - if err := packages_model.DeleteFileByID(ctx, pf.ID); err != nil { + if err := packages_service.DeletePackageFile(ctx, pf); err != nil { return err } } From 38da49f2728933b8ecd936701f43e8617fb3bcbb Mon Sep 17 00:00:00 2001 From: KN4CK3R Date: Mon, 11 Dec 2023 20:27:52 +0000 Subject: [PATCH 2/2] Use helper method. --- services/packages/alpine/repository.go | 5 +---- services/packages/container/cleanup.go | 6 ++---- services/packages/debian/repository.go | 5 +---- 3 files changed, 4 insertions(+), 12 deletions(-) diff --git a/services/packages/alpine/repository.go b/services/packages/alpine/repository.go index 7183b335420d5..30b7a06eb36d9 100644 --- a/services/packages/alpine/repository.go +++ b/services/packages/alpine/repository.go @@ -82,10 +82,7 @@ func BuildAllRepositoryFiles(ctx context.Context, ownerID int64) error { } for _, pf := range pfs { - if err := packages_model.DeleteAllProperties(ctx, packages_model.PropertyTypeFile, pf.ID); err != nil { - return err - } - if err := packages_model.DeleteFileByID(ctx, pf.ID); err != nil { + if err := packages_service.DeletePackageFile(ctx, pf); err != nil { return err } } diff --git a/services/packages/container/cleanup.go b/services/packages/container/cleanup.go index 1a9ef26391488..dd3f158dbf9ff 100644 --- a/services/packages/container/cleanup.go +++ b/services/packages/container/cleanup.go @@ -11,6 +11,7 @@ import ( container_model "code.gitea.io/gitea/models/packages/container" container_module "code.gitea.io/gitea/modules/packages/container" "code.gitea.io/gitea/modules/util" + packages_service "code.gitea.io/gitea/services/packages" digest "github.com/opencontainers/go-digest" ) @@ -47,10 +48,7 @@ func cleanupExpiredUploadedBlobs(ctx context.Context, olderThan time.Duration) e } for _, pf := range pfs { - if err := packages_model.DeleteAllProperties(ctx, packages_model.PropertyTypeFile, pf.ID); err != nil { - return err - } - if err := packages_model.DeleteFileByID(ctx, pf.ID); err != nil { + if err := packages_service.DeletePackageFile(ctx, pf); err != nil { return err } } diff --git a/services/packages/debian/repository.go b/services/packages/debian/repository.go index f636c1406cd1e..86c54e40c840e 100644 --- a/services/packages/debian/repository.go +++ b/services/packages/debian/repository.go @@ -110,10 +110,7 @@ func BuildAllRepositoryFiles(ctx context.Context, ownerID int64) error { } for _, pf := range pfs { - if err := packages_model.DeleteAllProperties(ctx, packages_model.PropertyTypeFile, pf.ID); err != nil { - return err - } - if err := packages_model.DeleteFileByID(ctx, pf.ID); err != nil { + if err := packages_service.DeletePackageFile(ctx, pf); err != nil { return err } }