Initial QSfera import
This commit is contained in:
+31
@@ -0,0 +1,31 @@
|
||||
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()
|
||||
}
|
||||
Reference in New Issue
Block a user