rpc: fix limitedBuffer.Write to properly enforce size limit (#33545) (#1948)

Updated the `avail` calculation to correctly compute remaining capacity:
`buf.limit - len(buf.output)`, ensuring the buffer never exceeds its
configured limit regardless of how many times `Write()` is called.

Co-authored-by: Maxim Evtush <154841002+maximevtush@users.noreply.github.com>
This commit is contained in:
Daniel Liu 2026-01-19 14:43:15 +08:00 committed by GitHub
parent 03da570aca
commit 0c306686bb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -612,8 +612,11 @@ type limitedBuffer struct {
}
func (buf *limitedBuffer) Write(data []byte) (int, error) {
avail := max(buf.limit, len(buf.output))
if len(data) < avail {
avail := buf.limit - len(buf.output)
if avail <= 0 {
return 0, errTruncatedOutput
}
if len(data) <= avail {
buf.output = append(buf.output, data...)
return len(data), nil
}