aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--internal/iolimit/expect_length_reader.go17
1 files changed, 15 insertions, 2 deletions
diff --git a/internal/iolimit/expect_length_reader.go b/internal/iolimit/expect_length_reader.go
index 317f1b16..1efe2b75 100644
--- a/internal/iolimit/expect_length_reader.go
+++ b/internal/iolimit/expect_length_reader.go
@@ -2,7 +2,10 @@ package iolimit
import (
"errors"
+ "fmt"
"io"
+
+ "lindenii.org/go/lgo/intconv"
)
// ErrExpectedLengthExceeded reports that a stream
@@ -54,12 +57,22 @@ func (reader *expectLengthReader) Read(dst []byte) (int, error) {
}
if uint64(len(dst)) > reader.remaining {
- dst = dst[:int(reader.remaining)]
+ limit, err := intconv.Uint64ToInt(reader.remaining)
+ if err != nil {
+ return 0, fmt.Errorf("iolimit: %w", err)
+ }
+
+ dst = dst[:limit]
}
n, err := reader.src.Read(dst)
if n > 0 {
- reader.remaining -= uint64(n)
+ read, convErr := intconv.IntToUint64(n)
+ if convErr != nil {
+ return n, fmt.Errorf("iolimit: %w", convErr)
+ }
+
+ reader.remaining -= read
}
if errors.Is(err, io.EOF) {