From ec325a35141034addd5d563f433d4167b8834d8b Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Mon, 1 Dec 2025 17:24:54 -0800 Subject: [PATCH] Improve trailer parsing robustness in parseChunkChecksum - Remove redundant trimTrailingWhitespace call since readChunkLine already trims - Use bytes.TrimSpace for both key and value to handle whitespace around colon separator - Follows HTTP header specifications for optional whitespace around separators - Addresses Gemini Code Assist review feedback --- weed/s3api/chunked_reader_v4.go | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/weed/s3api/chunked_reader_v4.go b/weed/s3api/chunked_reader_v4.go index 364bd57f7..f841c3e1e 100644 --- a/weed/s3api/chunked_reader_v4.go +++ b/weed/s3api/chunked_reader_v4.go @@ -520,15 +520,14 @@ func parseChunkChecksum(b *bufio.Reader) (ChecksumAlgorithm, []byte, error) { return ChecksumAlgorithmNone, nil, err } - line := trimTrailingWhitespace(bytesRead) - if len(line) == 0 { + if len(bytesRead) == 0 { break } - parts := bytes.SplitN(line, []byte(":"), 2) + parts := bytes.SplitN(bytesRead, []byte(":"), 2) if len(parts) == 2 { - key := string(parts[0]) - value := trimTrailingWhitespace(parts[1]) + key := string(bytes.TrimSpace(parts[0])) + value := bytes.TrimSpace(parts[1]) if alg, err := extractChecksumAlgorithm(key); err == nil { if checksumAlgorithm != ChecksumAlgorithmNone { glog.V(3).Infof("multiple checksum headers found in trailer, using last: %s", key)