diff options
author | KN4CK3R <admin@oldschoolhack.me> | 2024-08-08 11:43:04 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-08 09:43:04 +0000 |
commit | 3862b31abb0fcc094e9d042a7093b8bb3af9f885 (patch) | |
tree | cf40142db98ace7b69c4efea6c16cdf143239355 /routers | |
parent | de2787a4939ffdc11184a2115289cfb097272ba2 (diff) | |
download | gitea-3862b31abb0fcc094e9d042a7093b8bb3af9f885.tar.gz gitea-3862b31abb0fcc094e9d042a7093b8bb3af9f885.zip |
Fix RPM resource leak (#31794)
Fixes a resource leak introduced by #27069.
- add defer
- move sign code out of `repository.go`
Diffstat (limited to 'routers')
-rw-r--r-- | routers/api/packages/rpm/rpm.go | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/routers/api/packages/rpm/rpm.go b/routers/api/packages/rpm/rpm.go index 4c822e0999..a00a61c079 100644 --- a/routers/api/packages/rpm/rpm.go +++ b/routers/api/packages/rpm/rpm.go @@ -133,19 +133,20 @@ func UploadPackageFile(ctx *context.Context) { } defer buf.Close() - // if rpm sign enabled if setting.Packages.DefaultRPMSignEnabled || ctx.FormBool("sign") { - pri, _, err := rpm_service.GetOrCreateKeyPair(ctx, ctx.Package.Owner.ID) + priv, _, err := rpm_service.GetOrCreateKeyPair(ctx, ctx.Package.Owner.ID) if err != nil { apiError(ctx, http.StatusInternalServerError, err) return } - buf, err = rpm_service.SignPackage(buf, pri) + signedBuf, err := rpm_service.SignPackage(buf, priv) if err != nil { - // Not in rpm format, parsing failed. apiError(ctx, http.StatusBadRequest, err) return } + defer signedBuf.Close() + + buf = signedBuf } pck, err := rpm_module.ParsePackage(buf) |