Skip to content

Commit 97a0bf1

Browse files
GiteaBotKN4CK3R
andauthored
Fix possible nil pointer access (#28428) (#28440)
Backport #28428 by @KN4CK3R There could be a nil pointer exception if the file is not found because that specific error is suppressed but not handled. Co-authored-by: KN4CK3R <[email protected]>
1 parent 5e2bae7 commit 97a0bf1

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
}
@@ -182,12 +179,11 @@ func buildPackagesIndices(ctx context.Context, ownerID int64, repoVersion *packa
182179
pf, err := packages_model.GetFileForVersionByName(ctx, repoVersion.ID, filename, key)
183180
if err != nil && !errors.Is(err, util.ErrNotExist) {
184181
return err
182+
} else if pf == nil {
183+
continue
185184
}
186185

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

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

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)