Skip to content

Commit ff5106d

Browse files
authored
Fix possible nil pointer access (#28428)
There could be a nil pointer exception if the file is not found because that specific error is suppressed but not handled.
1 parent 0a794b2 commit ff5106d

File tree

4 files changed

+14
-28
lines changed

4 files changed

+14
-28
lines changed

services/packages/alpine/repository.go

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -82,10 +82,7 @@ func BuildAllRepositoryFiles(ctx context.Context, ownerID int64) error {
8282
}
8383

8484
for _, pf := range pfs {
85-
if err := packages_model.DeleteAllProperties(ctx, packages_model.PropertyTypeFile, pf.ID); err != nil {
86-
return err
87-
}
88-
if err := packages_model.DeleteFileByID(ctx, pf.ID); err != nil {
85+
if err := packages_service.DeletePackageFile(ctx, pf); err != nil {
8986
return err
9087
}
9188
}
@@ -157,12 +154,11 @@ func buildPackagesIndex(ctx context.Context, ownerID int64, repoVersion *package
157154
pf, err := packages_model.GetFileForVersionByName(ctx, repoVersion.ID, IndexFilename, fmt.Sprintf("%s|%s|%s", branch, repository, architecture))
158155
if err != nil && !errors.Is(err, util.ErrNotExist) {
159156
return err
157+
} else if pf == nil {
158+
return nil
160159
}
161160

162-
if err := packages_model.DeleteAllProperties(ctx, packages_model.PropertyTypeFile, pf.ID); err != nil {
163-
return err
164-
}
165-
return packages_model.DeleteFileByID(ctx, pf.ID)
161+
return packages_service.DeletePackageFile(ctx, pf)
166162
}
167163

168164
// Cache data needed for all repository files

services/packages/container/cleanup.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
container_model "code.gitea.io/gitea/models/packages/container"
1212
container_module "code.gitea.io/gitea/modules/packages/container"
1313
"code.gitea.io/gitea/modules/util"
14+
packages_service "code.gitea.io/gitea/services/packages"
1415

1516
digest "github.com/opencontainers/go-digest"
1617
)
@@ -47,10 +48,7 @@ func cleanupExpiredUploadedBlobs(ctx context.Context, olderThan time.Duration) e
4748
}
4849

4950
for _, pf := range pfs {
50-
if err := packages_model.DeleteAllProperties(ctx, packages_model.PropertyTypeFile, pf.ID); err != nil {
51-
return err
52-
}
53-
if err := packages_model.DeleteFileByID(ctx, pf.ID); err != nil {
51+
if err := packages_service.DeletePackageFile(ctx, pf); err != nil {
5452
return err
5553
}
5654
}

services/packages/debian/repository.go

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -110,10 +110,7 @@ func BuildAllRepositoryFiles(ctx context.Context, ownerID int64) error {
110110
}
111111

112112
for _, pf := range pfs {
113-
if err := packages_model.DeleteAllProperties(ctx, packages_model.PropertyTypeFile, pf.ID); err != nil {
114-
return err
115-
}
116-
if err := packages_model.DeleteFileByID(ctx, pf.ID); err != nil {
113+
if err := packages_service.DeletePackageFile(ctx, pf); err != nil {
117114
return err
118115
}
119116
}
@@ -181,12 +178,11 @@ func buildPackagesIndices(ctx context.Context, ownerID int64, repoVersion *packa
181178
pf, err := packages_model.GetFileForVersionByName(ctx, repoVersion.ID, filename, key)
182179
if err != nil && !errors.Is(err, util.ErrNotExist) {
183180
return err
181+
} else if pf == nil {
182+
continue
184183
}
185184

186-
if err := packages_model.DeleteAllProperties(ctx, packages_model.PropertyTypeFile, pf.ID); err != nil {
187-
return err
188-
}
189-
if err := packages_model.DeleteFileByID(ctx, pf.ID); err != nil {
185+
if err := packages_service.DeletePackageFile(ctx, pf); err != nil {
190186
return err
191187
}
192188
}
@@ -286,12 +282,11 @@ func buildReleaseFiles(ctx context.Context, ownerID int64, repoVersion *packages
286282
pf, err := packages_model.GetFileForVersionByName(ctx, repoVersion.ID, filename, distribution)
287283
if err != nil && !errors.Is(err, util.ErrNotExist) {
288284
return err
285+
} else if pf == nil {
286+
continue
289287
}
290288

291-
if err := packages_model.DeleteAllProperties(ctx, packages_model.PropertyTypeFile, pf.ID); err != nil {
292-
return err
293-
}
294-
if err := packages_model.DeleteFileByID(ctx, pf.ID); err != nil {
289+
if err := packages_service.DeletePackageFile(ctx, pf); err != nil {
295290
return err
296291
}
297292
}

services/packages/rpm/repository.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -148,10 +148,7 @@ func BuildRepositoryFiles(ctx context.Context, ownerID int64) error {
148148
return err
149149
}
150150
for _, pf := range pfs {
151-
if err := packages_model.DeleteAllProperties(ctx, packages_model.PropertyTypeFile, pf.ID); err != nil {
152-
return err
153-
}
154-
if err := packages_model.DeleteFileByID(ctx, pf.ID); err != nil {
151+
if err := packages_service.DeletePackageFile(ctx, pf); err != nil {
155152
return err
156153
}
157154
}

0 commit comments

Comments
 (0)