]> source.dussan.org Git - gitea.git/commitdiff
Close all hashed buffers (#27787)
authorKN4CK3R <admin@oldschoolhack.me>
Wed, 25 Oct 2023 19:24:24 +0000 (21:24 +0200)
committerGitHub <noreply@github.com>
Wed, 25 Oct 2023 19:24:24 +0000 (21:24 +0200)
Add missing `.Close()` calls. The current code does not delete the
temporary files if the data grows over 32mb.

modules/packages/hashed_buffer.go
services/packages/alpine/repository.go
services/packages/debian/repository.go
services/packages/rpm/repository.go

index 017ddf1c8f5a5d245da18e9fd889398731175e99..4ab45edcecaf8825ad535a0e3f18828ae76b93e4 100644 (file)
@@ -32,7 +32,7 @@ func NewHashedBuffer() (*HashedBuffer, error) {
        return NewHashedBufferWithSize(DefaultMemorySize)
 }
 
-// NewHashedBuffer creates a hashed buffer with a specific memory size
+// NewHashedBufferWithSize creates a hashed buffer with a specific memory size
 func NewHashedBufferWithSize(maxMemorySize int) (*HashedBuffer, error) {
        b, err := filebuffer.New(maxMemorySize)
        if err != nil {
index eeda0cca7bcb9491629b78b0152a655fa2d46ae6..46093d5bdd2e25c1213774cf94fa5cbb896a7642 100644 (file)
@@ -238,6 +238,8 @@ func buildPackagesIndex(ctx context.Context, ownerID int64, repoVersion *package
        }
 
        unsignedIndexContent, _ := packages_module.NewHashedBuffer()
+       defer unsignedIndexContent.Close()
+
        h := sha1.New()
 
        if err := writeGzipStream(io.MultiWriter(unsignedIndexContent, h), "APKINDEX", buf.Bytes(), true); err != nil {
@@ -275,6 +277,7 @@ func buildPackagesIndex(ctx context.Context, ownerID int64, repoVersion *package
        }
 
        signedIndexContent, _ := packages_module.NewHashedBuffer()
+       defer signedIndexContent.Close()
 
        if err := writeGzipStream(
                signedIndexContent,
index 25fa807351451c22d5549bdf776bbaf3e10cb8e2..1cc687ec8789433ede94e5c228e8f6e3e63a1a7e 100644 (file)
@@ -196,11 +196,16 @@ func buildPackagesIndices(ctx context.Context, ownerID int64, repoVersion *packa
        }
 
        packagesContent, _ := packages_module.NewHashedBuffer()
+       defer packagesContent.Close()
 
        packagesGzipContent, _ := packages_module.NewHashedBuffer()
+       defer packagesGzipContent.Close()
+
        gzw := gzip.NewWriter(packagesGzipContent)
 
        packagesXzContent, _ := packages_module.NewHashedBuffer()
+       defer packagesXzContent.Close()
+
        xzw, _ := xz.NewWriter(packagesXzContent)
 
        w := io.MultiWriter(packagesContent, gzw, xzw)
@@ -323,6 +328,8 @@ func buildReleaseFiles(ctx context.Context, ownerID int64, repoVersion *packages
        }
 
        inReleaseContent, _ := packages_module.NewHashedBuffer()
+       defer inReleaseContent.Close()
+
        sw, err := clearsign.Encode(inReleaseContent, e.PrivateKey, nil)
        if err != nil {
                return err
@@ -367,11 +374,14 @@ func buildReleaseFiles(ctx context.Context, ownerID int64, repoVersion *packages
        sw.Close()
 
        releaseGpgContent, _ := packages_module.NewHashedBuffer()
+       defer releaseGpgContent.Close()
+
        if err := openpgp.ArmoredDetachSign(releaseGpgContent, e, bytes.NewReader(buf.Bytes()), nil); err != nil {
                return err
        }
 
        releaseContent, _ := packages_module.CreateHashedBufferFromReader(&buf)
+       defer releaseContent.Close()
 
        for _, file := range []struct {
                Name string
index 93d9e41ca81ccd4f48ed420353367b820a095475..1d0dc83cae8563ab9b770900186af5f829ae7d0d 100644 (file)
@@ -258,11 +258,14 @@ func buildRepomd(ctx context.Context, pv *packages_model.PackageVersion, ownerID
        }
 
        repomdAscContent, _ := packages_module.NewHashedBuffer()
+       defer repomdAscContent.Close()
+
        if err := openpgp.ArmoredDetachSign(repomdAscContent, e, bytes.NewReader(buf.Bytes()), nil); err != nil {
                return err
        }
 
        repomdContent, _ := packages_module.CreateHashedBufferFromReader(&buf)
+       defer repomdContent.Close()
 
        for _, file := range []struct {
                Name string
@@ -548,6 +551,8 @@ func (wc *writtenCounter) Written() int64 {
 
 func addDataAsFileToRepo(ctx context.Context, pv *packages_model.PackageVersion, filetype string, obj any) (*repoData, error) {
        content, _ := packages_module.NewHashedBuffer()
+       defer content.Close()
+
        gzw := gzip.NewWriter(content)
        wc := &writtenCounter{}
        h := sha256.New()