]> Cypherpunks repositories - gostls13.git/commitdiff
os: treat Getwd result of EINVAL/ERANGE the same as ENAMETOOLONG
authorIan Lance Taylor <iant@golang.org>
Tue, 3 Sep 2024 18:28:42 +0000 (11:28 -0700)
committerGopher Robot <gobot@golang.org>
Tue, 3 Sep 2024 20:21:45 +0000 (20:21 +0000)
At least Darwin and OpenBSD seem to return EINVAL if the resulting
name would be too long. Solaris seems to return ERANGE.

Fixes #69233
Fixes #69234

Change-Id: I9b51d41461e9576c633bf2fc0e96ca3e4d986255
Reviewed-on: https://go-review.googlesource.com/c/go/+/609579
Reviewed-by: Ian Lance Taylor <iant@google.com>
Auto-Submit: Ian Lance Taylor <iant@google.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Ian Lance Taylor <iant@golang.org>

src/os/error_errno.go
src/os/error_plan9.go
src/os/getwd.go

index 01204131be163b93e3c60fbd230aab3425a31ae3..c4d540cdff09445ad36830ca017993f61f52ba56 100644 (file)
@@ -11,3 +11,4 @@ import "syscall"
 type syscallErrorType = syscall.Errno
 
 const errENOSYS = syscall.ENOSYS
+const errERANGE = syscall.ERANGE
index 39e96607e197cc20ca5f03e8633cb60c20cb2a73..61b56211b4917b38c5c3b97cf605576ecd179551 100644 (file)
@@ -9,3 +9,4 @@ import "syscall"
 type syscallErrorType = syscall.ErrorString
 
 var errENOSYS = syscall.NewError("function not implemented")
+var errERANGE = syscall.NewError("out of range")
index 833381c2d256302879dd463c1f73fcef806e19ce..8dca70fc2e582ed60c604fed9bd9d75882b296f4 100644 (file)
@@ -59,7 +59,10 @@ func Getwd() (dir string, err error) {
                                break
                        }
                }
-               if err != syscall.ENAMETOOLONG {
+               // Linux returns ENAMETOOLONG if the result is too long.
+               // BSD systems appear to return EINVAL.
+               // Solaris appears to use ERANGE.
+               if err != syscall.ENAMETOOLONG && err != syscall.EINVAL && err != errERANGE {
                        return dir, NewSyscallError("getwd", err)
                }
        }