diff --git a/src/os/user/cgo_lookup_unix.go b/src/os/user/cgo_lookup_unix.go index 402429ba4a..458d8cd453 100644 --- a/src/os/user/cgo_lookup_unix.go +++ b/src/os/user/cgo_lookup_unix.go @@ -31,12 +31,12 @@ func lookupUser(username string) (*User, error) { (*_C_char)(unsafe.Pointer(&buf[0])), _C_size_t(len(buf))) return errno }) + if err == syscall.ENOENT || (err == nil && !found) { + return nil, UnknownUserError(username) + } if err != nil { return nil, fmt.Errorf("user: lookup username %s: %v", username, err) } - if !found { - return nil, UnknownUserError(username) - } return buildUser(&pwd), err } @@ -58,12 +58,12 @@ func lookupUnixUid(uid int) (*User, error) { (*_C_char)(unsafe.Pointer(&buf[0])), _C_size_t(len(buf))) return errno }) + if err == syscall.ENOENT || (err == nil && !found) { + return nil, UnknownUserIdError(uid) + } if err != nil { return nil, fmt.Errorf("user: lookup userid %d: %v", uid, err) } - if !found { - return nil, UnknownUserIdError(uid) - } return buildUser(&pwd), nil } @@ -96,12 +96,12 @@ func lookupGroup(groupname string) (*Group, error) { (*_C_char)(unsafe.Pointer(&buf[0])), _C_size_t(len(buf))) return errno }) + if err == syscall.ENOENT || (err == nil && !found) { + return nil, UnknownGroupError(groupname) + } if err != nil { return nil, fmt.Errorf("user: lookup groupname %s: %v", groupname, err) } - if !found { - return nil, UnknownGroupError(groupname) - } return buildGroup(&grp), nil } @@ -123,12 +123,12 @@ func lookupUnixGid(gid int) (*Group, error) { (*_C_char)(unsafe.Pointer(&buf[0])), _C_size_t(len(buf))) return syscall.Errno(errno) }) + if err == syscall.ENOENT || (err == nil && !found) { + return nil, UnknownGroupIdError(strconv.Itoa(gid)) + } if err != nil { return nil, fmt.Errorf("user: lookup groupid %d: %v", gid, err) } - if !found { - return nil, UnknownGroupIdError(strconv.Itoa(gid)) - } return buildGroup(&grp), nil }