Files
opencloud/vendor/github.com/crewjam/saml/flate.go
2023-04-19 20:24:34 +02:00

32 lines
605 B
Go

package saml
import (
"compress/flate"
"fmt"
"io"
)
const flateUncompressLimit = 10 * 1024 * 1024 // 10MB
func newSaferFlateReader(r io.Reader) io.ReadCloser {
return &saferFlateReader{r: flate.NewReader(r)}
}
type saferFlateReader struct {
r io.ReadCloser
count int
}
func (r *saferFlateReader) Read(p []byte) (n int, err error) {
if r.count+len(p) > flateUncompressLimit {
return 0, fmt.Errorf("flate: uncompress limit exceeded (%d bytes)", flateUncompressLimit)
}
n, err = r.r.Read(p)
r.count += n
return n, err
}
func (r *saferFlateReader) Close() error {
return r.r.Close()
}