mirror of
https://github.com/go-gitea/gitea.git
synced 2026-11-01 01:48:24 +00:00
Backport https://github.com/go-gitea/gitea/pull/39942 Several handlers and parsers skipped checks that their siblings already perform. - Reject issue, comment, label, milestone and release mutations in archived repositories via the API with one guard per route group, matching the web UI - Hide timeline references and dependencies pointing at issues the doer cannot read, in the web UI and the API, including pull requests of the same repository without pull request access - Reject workflow runs with more than `MaxJobNumPerRun` jobs, including inline reusable workflow jobs, and show rejected pushes as invalid workflow runs - Bound how much of a Helm chart archive is inflated while looking for `Chart.yaml` `release/v28` lacks two helpers this needs, so they are included: `insertInvalidWorkflowRun`, split out of `handleInvalidWorkflows` by https://github.com/go-gitea/gitea/pull/39480, and `packages.NewLimitedReader` from https://github.com/go-gitea/gitea/pull/39366. Co-authored-by: bircni <bircni@icloud.com> Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
30 lines
686 B
Go
30 lines
686 B
Go
// Copyright 2026 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package packages
|
|
|
|
import (
|
|
"io"
|
|
|
|
"gitea.dev/modules/util"
|
|
)
|
|
|
|
var ErrContentTooLarge = util.NewInvalidArgumentErrorf("content exceeds the size limit")
|
|
|
|
type limitedReader struct {
|
|
io.LimitedReader
|
|
}
|
|
|
|
// NewLimitedReader returns a reader that fails with ErrContentTooLarge once it reads a byte past limit
|
|
func NewLimitedReader(r io.Reader, limit int64) io.Reader {
|
|
return &limitedReader{io.LimitedReader{R: r, N: limit + 1}}
|
|
}
|
|
|
|
func (l *limitedReader) Read(p []byte) (int, error) {
|
|
n, err := l.LimitedReader.Read(p)
|
|
if l.N == 0 {
|
|
return max(n-1, 0), ErrContentTooLarge
|
|
}
|
|
return n, err
|
|
}
|