lint: correcting errorlint and some err113 cases

Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
This commit is contained in:
Tonis Tiigi committed 2025-05-02 12:19:22 -07:00
1 parent 42b37d2a2c
commit c6a1dcd6b5
31 files changed
+57 -54

No files matched your search

+1
View File
@@ -8,6 +8,7 @@ linters:
- depguard
- durationcheck
- errname
- errorlint
- forbidigo
- gocritic
- gosec
+1 -1
View File
@@ -2788,7 +2788,7 @@ func mapToSystemTarBlob(t *testing.T, m map[string]string) ([]byte, ocispecs.Des
tr := tar.NewReader(bytes.NewReader(tarout))
for {
h, err := tr.Next()
if err == io.EOF {
if errors.Is(err, io.EOF) {
break
}
if err != nil {
+1 -1
View File
@@ -137,7 +137,7 @@ func readBlob(ctx context.Context, provider content.Provider, desc ocispecs.Desc
if err != nil {
// NOTE: even if err == EOF, we might have got expected dt here.
// For instance, http.Response.Body is known to return non-zero bytes with EOF.
if err == io.EOF {
if errors.Is(err, io.EOF) {
if dtDigest := desc.Digest.Algorithm().FromBytes(dt); dtDigest != desc.Digest {
err = errors.Wrapf(err, "got EOF, expected %s (%d bytes), got %s (%d bytes)",
desc.Digest, desc.Size, dtDigest, len(dt))
+2 -1
View File
@@ -62,7 +62,8 @@ func ReadFile(ctx context.Context, mount snapshot.Mountable, req ReadRequest) ([
// The filename here is internal to the mount, so we can restore
// the request base path for error reporting.
// See os.DirFS.Open for details.
if pe, ok := err.(*os.PathError); ok {
pe := &os.PathError{}
if errors.As(err, &pe) {
pe.Path = req.Filename
}
return errors.WithStack(err)
+2 -2
View File
@@ -557,7 +557,7 @@ func testExportedImageLabels(t *testing.T, sb integration.Sandbox) {
for {
resp, err := cl.Recv()
if err == io.EOF {
if errors.Is(err, io.EOF) {
break
}
require.NoError(t, err)
@@ -8302,7 +8302,7 @@ func checkAllReleasable(t *testing.T, c *Client, sb integration.Sandbox, checkCo
for {
resp, err := cl.Recv()
if err == io.EOF {
if errors.Is(err, io.EOF) {
break
}
require.NoError(t, err)
+1 -1
View File
@@ -33,7 +33,7 @@ func (c *Client) Prune(ctx context.Context, ch chan UsageInfo, opts ...PruneOpti
for {
d, err := cl.Recv()
if err != nil {
if err == io.EOF {
if errors.Is(err, io.EOF) {
return nil
}
return err
+1 -1
View File
@@ -322,7 +322,7 @@ func (c *Client) solve(ctx context.Context, def *llb.Definition, runGateway runG
for {
resp, err := stream.Recv()
if err != nil {
if err == io.EOF {
if errors.Is(err, io.EOF) {
return nil
}
return errors.Wrap(err, "failed to receive status")
+1 -1
View File
@@ -57,7 +57,7 @@ func logs(clicontext *cli.Context) error {
}
he, err := cl.Recv()
if err != nil {
if err == io.EOF {
if errors.Is(err, io.EOF) {
return errors.Errorf("ref %s not found", ref)
}
return err
+3 -12
View File
@@ -651,17 +651,12 @@ func groupToGID(group string) (int, error) {
return os.Getgid(), nil
}
var (
err error
id int
)
// Try and parse as a number, if the error is ErrSyntax
// (i.e. its not a number) then we carry on and try it as a
// name.
if id, err = strconv.Atoi(group); err == nil {
if id, err := strconv.Atoi(group); err == nil {
return id, nil
} else if err.(*strconv.NumError).Err != strconv.ErrSyntax {
} else if !errors.Is(err, strconv.ErrSyntax) {
return 0, err
}
@@ -671,11 +666,7 @@ func groupToGID(group string) (int, error) {
}
group = ginfo.Gid
if id, err = strconv.Atoi(group); err != nil {
return 0, err
}
return id, nil
return strconv.Atoi(group)
}
func getListener(addr string, uid, gid int, secDescriptor string, tlsConfig *tls.Config, warnTLS bool) (net.Listener, error) {
+1 -1
View File
@@ -129,7 +129,7 @@ func (w *runcExecutor) callWithIO(ctx context.Context, process executor.ProcessI
if errors.As(err, &ptmClosedError) {
if ptmClosedError.Op == "read" &&
ptmClosedError.Path == "/dev/ptmx" &&
ptmClosedError.Err == syscall.EIO {
errors.Is(ptmClosedError.Err, syscall.EIO) {
return nil
}
}
+3 -3
View File
@@ -9419,7 +9419,7 @@ COPY notexist /foo
got := false
for {
resp, err := cl.Recv()
if err == io.EOF {
if errors.Is(err, io.EOF) {
require.Equal(t, true, got, "expected error was %+v", expectedError)
break
}
@@ -9543,7 +9543,7 @@ COPY Dockerfile /foo
got := false
for {
resp, err := cl.Recv()
if err == io.EOF {
if errors.Is(err, io.EOF) {
require.Equal(t, true, got)
break
}
@@ -9916,7 +9916,7 @@ func checkAllReleasable(t *testing.T, c *client.Client, sb integration.Sandbox,
for {
resp, err := cl.Recv()
if err == io.EOF {
if errors.Is(err, io.EOF) {
break
}
require.NoError(t, err)
+3 -1
View File
@@ -2,6 +2,8 @@ package parser
import (
"testing"
"github.com/pkg/errors"
)
var invalidJSONArraysOfStrings = []string{
@@ -48,7 +50,7 @@ func TestJSONArraysOfStrings(t *testing.T) {
}
}
for _, json := range invalidJSONArraysOfStrings {
if _, _, err := parseJSON(json); err != errDockerfileNotStringArray {
if _, _, err := parseJSON(json); !errors.Is(err, errDockerfileNotStringArray) {
t.Fatalf("%q should be an invalid JSON array of strings, but wasn't!", json)
}
}
+2 -2
View File
@@ -318,7 +318,7 @@ func parseMaybeJSON(rest string, d *directives) (*Node, map[string]bool, error)
if err == nil {
return node, attrs, nil
}
if err == errDockerfileNotStringArray {
if errors.Is(err, errDockerfileNotStringArray) {
return nil, nil, err
}
@@ -336,7 +336,7 @@ func parseMaybeJSONToList(rest string, d *directives) (*Node, map[string]bool, e
if err == nil {
return node, attrs, nil
}
if err == errDockerfileNotStringArray {
if errors.Is(err, errDockerfileNotStringArray) {
return nil, nil, err
}
+2 -2
View File
@@ -556,8 +556,8 @@ func scanLines(data []byte, atEOF bool) (advance int, token []byte, err error) {
}
func handleScannerError(err error) error {
switch err {
case bufio.ErrTooLong:
switch {
case errors.Is(err, bufio.ErrTooLong):
return errors.Errorf("dockerfile line greater than max allowed size of %d", bufio.MaxScanTokenSize-1)
default:
return err
+1 -1
View File
@@ -77,7 +77,7 @@ func (wc *streamWriterCloser) Close() error {
}
// block until receiver is done
var bm BytesMessage
if err := wc.RecvMsg(&bm); err != io.EOF {
if err := wc.RecvMsg(&bm); !errors.Is(err, io.EOF) {
return errors.WithStack(err)
}
return nil
+2 -1
View File
@@ -2,6 +2,7 @@ package grpchijack
import (
"context"
"errors"
"io"
"net"
"strings"
@@ -112,7 +113,7 @@ func (c *conn) Close() (err error) {
m.Data = c.buf
err = c.stream.RecvMsg(m)
if err != nil {
if err != io.EOF {
if !errors.Is(err, io.EOF) {
c.readMu.Unlock()
return
}
+2 -2
View File
@@ -21,7 +21,7 @@ func Copy(ctx context.Context, conn io.ReadWriteCloser, stream Stream, closeStre
p := &BytesMessage{}
for {
if err := stream.RecvMsg(p); err != nil {
if err == io.EOF {
if errors.Is(err, io.EOF) {
// indicates client performed CloseSend, but they may still be
// reading data
if closeWriter, ok := conn.(interface {
@@ -55,7 +55,7 @@ func Copy(ctx context.Context, conn io.ReadWriteCloser, stream Stream, closeStre
buf := make([]byte, 32*1024)
n, err := conn.Read(buf)
switch {
case err == io.EOF:
case errors.Is(err, io.EOF):
if closeStream != nil {
closeStream()
}
+1 -1
View File
@@ -42,7 +42,7 @@ func (u *Upload) WriteTo(w io.Writer) (int64, error) {
for {
var bm BytesMessage
if err := u.cc.RecvMsg(&bm); err != nil {
if err == io.EOF {
if errors.Is(err, io.EOF) {
return n, nil
}
return n, errors.WithStack(err)
+2 -1
View File
@@ -2,6 +2,7 @@ package solver
import (
"context"
"errors"
"io"
"slices"
"time"
@@ -26,7 +27,7 @@ func (j *Job) Status(ctx context.Context, ch chan *client.SolveStatus) error {
for {
p, err := pr.Read(ctx)
if err != nil {
if err == io.EOF {
if errors.Is(err, io.EOF) {
return nil
}
return err
+2 -1
View File
@@ -57,7 +57,8 @@ func check(arch, bin string) (string, error) {
if err == nil {
return "", errors.Errorf("invalid zero exit code")
}
if exitError, ok := err.(*exec.ExitError); ok {
exitError := &exec.ExitError{}
if errors.As(err, &exitError) {
switch exitError.ExitCode() {
case 65:
return "v1", nil
+1 -1
View File
@@ -191,7 +191,7 @@ func (c estargzType) Is(ctx context.Context, cs content.Store, dgst digest.Diges
if h.Name != estargz.TOCTarName {
return false
}
if _, err = tr.Next(); err != io.EOF { // must be EOF
if _, err = tr.Next(); !errors.Is(err, io.EOF) { // must be EOF
return false
}
+1 -1
View File
@@ -42,7 +42,7 @@ type rc struct {
func (r *rc) Read(b []byte) (int, error) {
n, err := r.ReadAt(b, r.offset)
r.offset += int64(n)
if n > 0 && err == io.EOF {
if n > 0 && errors.Is(err, io.EOF) {
err = nil
}
return n, err
+1 -1
View File
@@ -55,7 +55,7 @@ func (r *readerAt) ReadAt(b []byte, off int64) (int, error) {
var totalN int
for len(b) > 0 {
n, err := r.Read(b)
if err == io.EOF && n == len(b) {
if errors.Is(err, io.EOF) && n == len(b) {
err = nil
}
r.offset += int64(n)
+2 -1
View File
@@ -2,6 +2,7 @@ package tarconverter
import (
"archive/tar"
"errors"
"io"
)
@@ -19,7 +20,7 @@ func NewReader(srcContent io.Reader, headerConverter HeaderConverter) io.ReadClo
for {
hdr, err := srcTar.Next()
if err == io.EOF {
if errors.Is(err, io.EOF) {
// Signals end of archive.
rebasedTar.Close()
// drain the reader into io.Discard, until hitting EOF
+1 -1
View File
@@ -299,7 +299,7 @@ func (ps *progressState) run(pr progress.Reader) {
for {
p, err := pr.Read(context.TODO())
if err != nil {
if err == io.EOF {
if errors.Is(err, io.EOF) {
ps.mu.Lock()
ps.done = true
ps.mu.Unlock()
+1 -1
View File
@@ -94,7 +94,7 @@ func setNetNS(s *specs.Spec, nsPath string) error {
func unmountNetNS(nsPath string) error {
if err := unix.Unmount(nsPath, unix.MNT_DETACH); err != nil {
if err != syscall.EINVAL && err != syscall.ENOENT {
if !errors.Is(err, syscall.EINVAL) && !errors.Is(err, syscall.ENOENT) {
return errors.Wrap(err, "error unmounting network namespace")
}
}
+6 -6
View File
@@ -273,7 +273,7 @@ func checkOpaque(upperdir string, path string, base string, f os.FileInfo) (isOp
if f.IsDir() {
for _, oKey := range []string{"trusted.overlay.opaque", "user.overlay.opaque"} {
opaque, err := sysx.LGetxattr(filepath.Join(upperdir, path), oKey)
if err != nil && err != unix.ENODATA {
if err != nil && !errors.Is(err, unix.ENODATA) {
return false, errors.Wrapf(err, "failed to retrieve %s attr", oKey)
} else if len(opaque) == 1 && opaque[0] == 'y' {
// This is an opaque whiteout directory.
@@ -296,7 +296,7 @@ func checkRedirect(upperdir string, path string, f os.FileInfo) (bool, error) {
if f.IsDir() {
rKey := "trusted.overlay.redirect"
redirect, err := sysx.LGetxattr(filepath.Join(upperdir, path), rKey)
if err != nil && err != unix.ENODATA {
if err != nil && !errors.Is(err, unix.ENODATA) {
return false, errors.Wrapf(err, "failed to retrieve %s attr", rKey)
}
return len(redirect) > 0, nil
@@ -379,11 +379,11 @@ func compareSysStat(s1, s2 any) (bool, error) {
// Copyright The containerd Authors.
func compareCapabilities(p1, p2 string) (bool, error) {
c1, err := sysx.LGetxattr(p1, "security.capability")
if err != nil && err != sysx.ENODATA {
if err != nil && !errors.Is(err, sysx.ENODATA) {
return false, errors.Wrapf(err, "failed to get xattr for %s", p1)
}
c2, err := sysx.LGetxattr(p2, "security.capability")
if err != nil && err != sysx.ENODATA {
if err != nil && !errors.Is(err, sysx.ENODATA) {
return false, errors.Wrapf(err, "failed to get xattr for %s", p2)
}
return bytes.Equal(c1, c2), nil
@@ -443,7 +443,7 @@ func compareFileContent(p1, p2 string) (bool, error) {
defer bufPool.Put(b2)
for {
n1, err1 := io.ReadFull(f1, *b1)
if err1 == io.ErrUnexpectedEOF {
if errors.Is(err1, io.ErrUnexpectedEOF) {
// it's expected to get EOF when file size isn't a multiple of chunk size, consolidate these error types
err1 = io.EOF
}
@@ -451,7 +451,7 @@ func compareFileContent(p1, p2 string) (bool, error) {
return false, err1
}
n2, err2 := io.ReadFull(f2, *b2)
if err2 == io.ErrUnexpectedEOF {
if errors.Is(err2, io.ErrUnexpectedEOF) {
err2 = io.EOF
}
if err2 != nil && err2 != io.EOF {
+2 -1
View File
@@ -2,6 +2,7 @@ package progress
import (
"context"
"errors"
"io"
"sync"
)
@@ -110,7 +111,7 @@ func (mr *MultiReader) handle() error {
for {
p, err := mr.main.Read(context.TODO())
if err != nil {
if err == io.EOF {
if errors.Is(err, io.EOF) {
mr.mu.Lock()
cancelErr := context.Canceled
for w, c := range mr.writers {
+1 -1
View File
@@ -126,7 +126,7 @@ func saveProgress(ctx context.Context, pr Reader, t *trace) error {
for {
p, err := pr.Read(ctx)
if err != nil {
if err == io.EOF {
if errors.Is(err, io.EOF) {
return nil
}
return err
+6 -3
View File
@@ -52,15 +52,18 @@ func (cli *Client) doRequest(req *http.Request) (*http.Response, error) {
return nil, err
}
if uErr, ok := err.(*url.Error); ok {
if nErr, ok := uErr.Err.(*net.OpError); ok {
uErr := &url.Error{}
if errors.As(err, &uErr) {
nErr := &net.OpError{}
if errors.As(uErr.Err, &nErr) {
if os.IsPermission(nErr.Err) {
return nil, errors.Wrapf(err, "permission denied while trying to connect to the Docker daemon socket at %v", cli.host)
}
}
}
if nErr, ok := err.(net.Error); ok {
var nErr net.Error
if errors.As(err, &nErr) {
// FIXME(thaJeztah): any net.Error should be considered a connection error (but we should include the original error)?
if nErr.Timeout() {
return nil, ErrorConnectionFailed(cli.host)
+1 -1
View File
@@ -29,7 +29,7 @@ func ReadTarToMap(dt []byte, compressed bool) (map[string]*TarItem, error) {
for {
h, err := tr.Next()
if err != nil {
if err == io.EOF {
if errors.Is(err, io.EOF) {
return m, nil
}
return nil, errors.Wrap(err, "error reading tar")