mirror of
https://github.com/minio/minio.git
synced 2025-02-23 03:22:30 -05:00
Limit S3 Select JSON documents to 10MB (#20439)
Closes #20430 Limit allocations from badly formed documents.
This commit is contained in:
parent
229f04ab79
commit
8a30967542
@ -26,6 +26,10 @@ import (
|
||||
"github.com/bcicen/jstream"
|
||||
)
|
||||
|
||||
// Limit single document size to 10MiB, 10x the AWS limit:
|
||||
// https://docs.aws.amazon.com/AmazonS3/latest/userguide/selecting-content-from-objects.html
|
||||
const maxDocumentSize = 10 << 20
|
||||
|
||||
// Reader - JSON record reader for S3Select.
|
||||
type Reader struct {
|
||||
args *ReaderArgs
|
||||
@ -80,7 +84,7 @@ func (r *Reader) Close() error {
|
||||
// NewReader - creates new JSON reader using readCloser.
|
||||
func NewReader(readCloser io.ReadCloser, args *ReaderArgs) *Reader {
|
||||
readCloser = &syncReadCloser{rc: readCloser}
|
||||
d := jstream.NewDecoder(readCloser, 0).ObjectAsKVS()
|
||||
d := jstream.NewDecoder(io.LimitReader(readCloser, maxDocumentSize), 0).ObjectAsKVS()
|
||||
return &Reader{
|
||||
args: args,
|
||||
decoder: d,
|
||||
|
@ -442,6 +442,7 @@ func (s3Select *S3Select) Open(rsc io.ReadSeekCloser) error {
|
||||
s3Select.recordReader = json.NewPReader(s3Select.progressReader, &s3Select.Input.JSONArgs)
|
||||
}
|
||||
} else {
|
||||
// Document mode.
|
||||
s3Select.recordReader = json.NewReader(s3Select.progressReader, &s3Select.Input.JSONArgs)
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user