1234567891011121314151617181920212223242526272829303132333435363738 |
- package security
- import (
- "io"
- )
- type hardLimitReader struct {
- r io.Reader
- left int
- }
- func (lr *hardLimitReader) Read(p []byte) (n int, err error) {
- if lr.left <= 0 {
- return 0, newFileSizeError()
- }
- if len(p) > lr.left {
- p = p[0:lr.left]
- }
- n, err = lr.r.Read(p)
- lr.left -= n
- return
- }
- func CheckFileSize(size int, opts Options) error {
- if opts.MaxSrcFileSize > 0 && size > opts.MaxSrcFileSize {
- return newFileSizeError()
- }
- return nil
- }
- func LimitFileSize(r io.Reader, opts Options) io.Reader {
- if opts.MaxSrcFileSize > 0 {
- return &hardLimitReader{r: r, left: opts.MaxSrcFileSize}
- }
- return r
- }
|