mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-01-01 10:40:30 -05:00
32 lines
605 B
Go
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()
|
|
}
|