Bound document content extraction time and decouple it from uploads (MM-69098) (#36856) (#37043)

Automatic Merge
Этот коммит содержится в:
Julien Tant
2026-06-14 23:35:26 -07:00
коммит произвёл GitHub
родитель 775c36f827
Коммит acc19baca0
19 изменённых файлов: 513 добавлений и 13 удалений

Просмотреть файл

@@ -10,6 +10,8 @@ import (
"strings"
"code.sajari.com/docconv/v2"
"github.com/mattermost/mattermost/server/v8/channels/utils"
)
type documentExtractor struct{}
@@ -36,7 +38,7 @@ func (de *documentExtractor) Match(filename string) bool {
return ok
}
func (de *documentExtractor) Extract(filename string, r io.ReadSeeker, _ int64) (out string, outErr error) {
func (de *documentExtractor) Extract(filename string, r io.ReadSeeker, maxFileSize int64) (out string, outErr error) {
defer func() {
if r := recover(); r != nil {
out = ""
@@ -50,7 +52,14 @@ func (de *documentExtractor) Extract(filename string, r io.ReadSeeker, _ int64)
return "", errors.New("unknown converter")
}
text, _, err := converter(r)
// Bound how much data the converter is allowed to read so a small upload
// cannot expand into an unbounded amount of in-memory work.
var reader io.Reader = r
if maxFileSize > 0 {
reader = utils.NewLimitedReaderWithError(r, maxFileSize)
}
text, _, err := converter(reader)
if err != nil {
return "", err
}