mirror of
https://github.com/minio/minio.git
synced 2025-02-23 11:32:32 -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"
|
"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.
|
// Reader - JSON record reader for S3Select.
|
||||||
type Reader struct {
|
type Reader struct {
|
||||||
args *ReaderArgs
|
args *ReaderArgs
|
||||||
@ -80,7 +84,7 @@ func (r *Reader) Close() error {
|
|||||||
// NewReader - creates new JSON reader using readCloser.
|
// NewReader - creates new JSON reader using readCloser.
|
||||||
func NewReader(readCloser io.ReadCloser, args *ReaderArgs) *Reader {
|
func NewReader(readCloser io.ReadCloser, args *ReaderArgs) *Reader {
|
||||||
readCloser = &syncReadCloser{rc: readCloser}
|
readCloser = &syncReadCloser{rc: readCloser}
|
||||||
d := jstream.NewDecoder(readCloser, 0).ObjectAsKVS()
|
d := jstream.NewDecoder(io.LimitReader(readCloser, maxDocumentSize), 0).ObjectAsKVS()
|
||||||
return &Reader{
|
return &Reader{
|
||||||
args: args,
|
args: args,
|
||||||
decoder: d,
|
decoder: d,
|
||||||
|
@ -442,6 +442,7 @@ func (s3Select *S3Select) Open(rsc io.ReadSeekCloser) error {
|
|||||||
s3Select.recordReader = json.NewPReader(s3Select.progressReader, &s3Select.Input.JSONArgs)
|
s3Select.recordReader = json.NewPReader(s3Select.progressReader, &s3Select.Input.JSONArgs)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
// Document mode.
|
||||||
s3Select.recordReader = json.NewReader(s3Select.progressReader, &s3Select.Input.JSONArgs)
|
s3Select.recordReader = json.NewReader(s3Select.progressReader, &s3Select.Input.JSONArgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user