From ce61ea015c7b3797d73827feecc6403408d32ffc Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Tue, 1 Apr 2025 17:30:08 +0200 Subject: [PATCH] cli/context/store: un-export LimitedReader It was created for internal use, and is not part of the context-store public API. It was introduced as part of the "zip import" functionality added in 291e86289be4ab78840154933b6e744dd6a5fc8e. Initially it was [non-exported][1], but during review, some suggestions were made to improve the implementation, and the [suggested implementation][2] was based on Go stdlib, but review overlooked that the implementation was now exported. Let's un-export it, as this was (as outlined) never meant to be a public type. [1]: https://github.com/docker/cli/pull/1895#discussion_r287514522 [2]: https://github.com/docker/cli/pull/1895#discussion_r288688768 Signed-off-by: Sebastiaan van Stijn --- cli/context/store/io_utils.go | 8 ++++---- cli/context/store/io_utils_test.go | 4 ++-- cli/context/store/store.go | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/cli/context/store/io_utils.go b/cli/context/store/io_utils.go index 6f854c8e571e..097443d03174 100644 --- a/cli/context/store/io_utils.go +++ b/cli/context/store/io_utils.go @@ -5,14 +5,14 @@ import ( "io" ) -// LimitedReader is a fork of io.LimitedReader to override Read. -type LimitedReader struct { +// limitedReader is a fork of [io.LimitedReader] to override Read. +type limitedReader struct { R io.Reader N int64 // max bytes remaining } -// Read is a fork of io.LimitedReader.Read that returns an error when limit exceeded. -func (l *LimitedReader) Read(p []byte) (n int, err error) { +// Read is a fork of [io.LimitedReader.Read] that returns an error when limit exceeded. +func (l *limitedReader) Read(p []byte) (n int, err error) { if l.N < 0 { return 0, errors.New("read exceeds the defined limit") } diff --git a/cli/context/store/io_utils_test.go b/cli/context/store/io_utils_test.go index e917f1191491..72cb406f853a 100644 --- a/cli/context/store/io_utils_test.go +++ b/cli/context/store/io_utils_test.go @@ -15,10 +15,10 @@ func TestLimitReaderReadAll(t *testing.T) { assert.NilError(t, err) r = strings.NewReader("Test") - _, err = io.ReadAll(&LimitedReader{R: r, N: 4}) + _, err = io.ReadAll(&limitedReader{R: r, N: 4}) assert.NilError(t, err) r = strings.NewReader("Test") - _, err = io.ReadAll(&LimitedReader{R: r, N: 2}) + _, err = io.ReadAll(&limitedReader{R: r, N: 2}) assert.Error(t, err, "read exceeds the defined limit") } diff --git a/cli/context/store/store.go b/cli/context/store/store.go index 3643e5765935..ee50cca1c78c 100644 --- a/cli/context/store/store.go +++ b/cli/context/store/store.go @@ -356,7 +356,7 @@ func isValidFilePath(p string) error { } func importTar(name string, s Writer, reader io.Reader) error { - tr := tar.NewReader(&LimitedReader{R: reader, N: maxAllowedFileSizeToImport}) + tr := tar.NewReader(&limitedReader{R: reader, N: maxAllowedFileSizeToImport}) tlsData := ContextTLSData{ Endpoints: map[string]EndpointTLSData{}, } @@ -406,7 +406,7 @@ func importTar(name string, s Writer, reader io.Reader) error { } func importZip(name string, s Writer, reader io.Reader) error { - body, err := io.ReadAll(&LimitedReader{R: reader, N: maxAllowedFileSizeToImport}) + body, err := io.ReadAll(&limitedReader{R: reader, N: maxAllowedFileSizeToImport}) if err != nil { return err } @@ -434,7 +434,7 @@ func importZip(name string, s Writer, reader io.Reader) error { return err } - data, err := io.ReadAll(&LimitedReader{R: f, N: maxAllowedFileSizeToImport}) + data, err := io.ReadAll(&limitedReader{R: f, N: maxAllowedFileSizeToImport}) defer f.Close() if err != nil { return err