From 0c306686bb33d4dd5f678b7f65e6a1798db4dd93 Mon Sep 17 00:00:00 2001 From: Daniel Liu <139250065@qq.com> Date: Mon, 19 Jan 2026 14:43:15 +0800 Subject: [PATCH] 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> --- rpc/handler.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/rpc/handler.go b/rpc/handler.go index e0963cf959..20dcc54713 100644 --- a/rpc/handler.go +++ b/rpc/handler.go @@ -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 }