Skip to content

Commit 16d228b

Browse files
committed
fix
1 parent e31f224 commit 16d228b

File tree

9 files changed

+18
-15
lines changed

9 files changed

+18
-15
lines changed

modules/actions/workflows.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@ package actions
55

66
import (
77
"bytes"
8-
"io"
98
"slices"
109
"strings"
1110

1211
"code.gitea.io/gitea/modules/git"
1312
"code.gitea.io/gitea/modules/glob"
1413
"code.gitea.io/gitea/modules/log"
1514
api "code.gitea.io/gitea/modules/structs"
15+
"code.gitea.io/gitea/modules/util"
1616
webhook_module "code.gitea.io/gitea/modules/webhook"
1717

1818
"github.com/nektos/act/pkg/jobparser"
@@ -77,7 +77,7 @@ func GetContentFromEntry(entry *git.TreeEntry) ([]byte, error) {
7777
if err != nil {
7878
return nil, err
7979
}
80-
content, err := io.ReadAll(f)
80+
content, err := util.ReadWithLimit(f, 1024*1024)
8181
_ = f.Close()
8282
if err != nil {
8383
return nil, err

modules/issue/template/unmarshal.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ package template
55

66
import (
77
"fmt"
8-
"io"
98
"path"
109
"strconv"
1110

@@ -76,7 +75,7 @@ func unmarshalFromEntry(entry *git.TreeEntry, filename string) (*api.IssueTempla
7675
}
7776
defer r.Close()
7877

79-
content, err := io.ReadAll(r)
78+
content, err := util.ReadWithLimit(r, 1024*1024)
8079
if err != nil {
8180
return nil, fmt.Errorf("read all: %w", err)
8281
}

modules/packages/nuget/metadata.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ func ParseNuspecMetaData(archive *zip.Reader, r io.Reader) (*Package, error) {
216216
if p.Metadata.Readme != "" {
217217
f, err := archive.Open(p.Metadata.Readme)
218218
if err == nil {
219-
buf, _ := io.ReadAll(f)
219+
buf, _ := util.ReadWithLimit(f, 1024*1024)
220220
m.Readme = string(buf)
221221
_ = f.Close()
222222
}

modules/packages/pub/metadata.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ func ParsePackage(r io.Reader) (*Package, error) {
8989
return nil, err
9090
}
9191
} else if strings.EqualFold(hd.Name, "readme.md") {
92-
data, err := io.ReadAll(tr)
92+
data, err := util.ReadWithLimit(tr, 1024*1024)
9393
if err != nil {
9494
return nil, err
9595
}

modules/util/io.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ func ReadAtMost(r io.Reader, buf []byte) (n int, err error) {
2929
// ReadWithLimit reads at most "limit" bytes from r into buf.
3030
// If EOF or ErrUnexpectedEOF occurs while reading, err will be nil.
3131
func ReadWithLimit(r io.Reader, n int) (buf []byte, err error) {
32-
return readWithLimit(r, 1024, n)
32+
return readWithLimit(r, 4*1024, n)
3333
}
3434

3535
func readWithLimit(r io.Reader, batch, limit int) ([]byte, error) {

routers/web/repo/wiki.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ func wikiContentsByEntry(ctx *context.Context, entry *git.TreeEntry) []byte {
133133
return nil
134134
}
135135
defer reader.Close()
136-
content, err := io.ReadAll(reader)
136+
content, err := util.ReadWithLimit(reader, 100*1024*1024) // can a wiki page be larger than 100MB?
137137
if err != nil {
138138
ctx.ServerError("ReadAll", err)
139139
return nil

services/issue/template.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ package issue
55

66
import (
77
"fmt"
8-
"io"
98
"net/url"
109
"path"
1110
"strings"
@@ -15,6 +14,7 @@ import (
1514
"code.gitea.io/gitea/modules/issue/template"
1615
"code.gitea.io/gitea/modules/log"
1716
api "code.gitea.io/gitea/modules/structs"
17+
"code.gitea.io/gitea/modules/util"
1818

1919
"gopkg.in/yaml.v3"
2020
)
@@ -65,7 +65,7 @@ func GetTemplateConfig(gitRepo *git.Repository, path string, commit *git.Commit)
6565

6666
defer reader.Close()
6767

68-
configContent, err := io.ReadAll(reader)
68+
configContent, err := util.ReadWithLimit(reader, 1024*1024)
6969
if err != nil {
7070
return GetDefaultTemplateConfig(), err
7171
}

services/repository/generate.go

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -140,13 +140,16 @@ func (gt *giteaTemplateFileMatcher) Match(s string) bool {
140140

141141
func readGiteaTemplateFile(tmpDir string) (*giteaTemplateFileMatcher, error) {
142142
localPath := filepath.Join(tmpDir, ".gitea", "template")
143-
if _, err := os.Stat(localPath); os.IsNotExist(err) {
143+
if ok, _ := util.IsRegularFile(localPath); !ok {
144144
return nil, nil
145-
} else if err != nil {
146-
return nil, err
147145
}
148146

149-
content, err := os.ReadFile(localPath)
147+
f, err := os.Open(localPath)
148+
if err != nil {
149+
return nil, err
150+
}
151+
defer f.Close()
152+
content, err := util.ReadWithLimit(f, 1024*1024)
150153
if err != nil {
151154
return nil, err
152155
}

services/webhook/deliver.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import (
3030
"code.gitea.io/gitea/modules/queue"
3131
"code.gitea.io/gitea/modules/setting"
3232
"code.gitea.io/gitea/modules/timeutil"
33+
"code.gitea.io/gitea/modules/util"
3334
webhook_module "code.gitea.io/gitea/modules/webhook"
3435
)
3536

@@ -264,7 +265,7 @@ func Deliver(ctx context.Context, t *webhook_model.HookTask) error {
264265
t.ResponseInfo.Headers[k] = strings.Join(vals, ",")
265266
}
266267

267-
p, err := io.ReadAll(resp.Body)
268+
p, err := util.ReadWithLimit(resp.Body, 1024*1024)
268269
if err != nil {
269270
t.ResponseInfo.Body = fmt.Sprintf("read body: %s", err)
270271
return fmt.Errorf("unable to deliver webhook task[%d] in %s as unable to read response body: %w", t.ID, w.URL, err)

0 commit comments

Comments
 (0)