diff options
author | Timo Teräs <timo.teras@iki.fi> | 2016-02-22 14:59:43 +0000 |
---|---|---|
committer | Timo Teräs <timo.teras@iki.fi> | 2016-02-22 14:59:43 +0000 |
commit | 73018330d2ba41b7d6f300127db48cef8f014c01 (patch) | |
tree | e5890d79d8137811828a08d990977edb6dad44f6 /community/go/default-sc-getpw-r-size-max.patch | |
parent | 9066cd752ccf63068d6ea900c29b14ac61868b8b (diff) | |
download | aports-73018330d2ba41b7d6f300127db48cef8f014c01.tar.bz2 aports-73018330d2ba41b7d6f300127db48cef8f014c01.tar.xz |
Revert "community/go: update to go 1.6"
This reverts commit e81049956f7cd1251ef6ec8e90c487c7c2bda99b.
Does not work on x86 yet.
Diffstat (limited to 'community/go/default-sc-getpw-r-size-max.patch')
-rw-r--r-- | community/go/default-sc-getpw-r-size-max.patch | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/community/go/default-sc-getpw-r-size-max.patch b/community/go/default-sc-getpw-r-size-max.patch new file mode 100644 index 0000000000..77be27d13d --- /dev/null +++ b/community/go/default-sc-getpw-r-size-max.patch @@ -0,0 +1,57 @@ +From cb867d2fd64adc851f82be3c6eb6e38ec008930b Mon Sep 17 00:00:00 2001 +From: Dominik Honnef <dominik@honnef.co> +Date: Sun, 21 Jun 2015 20:07:29 +0200 +Subject: [PATCH] os/user: don't depend on _SC_GETPW_R_SIZE_MAX on Linux + +Even Linux systems may not have _SC_GETPW_R_SIZE_MAX if using a +different libc than glibc (e.g. musl). Instead of having special-cases +for the BSDs, handle -1 correctly by always using a default buffer size. + +Fixes #11319. + +Change-Id: I8b1b260eb9830e6dbe7667f3f33d115ae4de4ce8 +Reviewed-on: https://go-review.googlesource.com/13772 +Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> +Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> +--- + src/os/user/lookup_unix.go | 19 ++++++++----------- + 1 file changed, 8 insertions(+), 11 deletions(-) + +diff --git a/src/os/user/lookup_unix.go b/src/os/user/lookup_unix.go +index f4f603e..e8a1eb1 100644 +--- a/src/os/user/lookup_unix.go ++++ b/src/os/user/lookup_unix.go +@@ -9,7 +9,6 @@ package user + + import ( + "fmt" +- "runtime" + "strconv" + "strings" + "syscall" +@@ -55,17 +54,15 @@ func lookupUnix(uid int, username string, lookupByName bool) (*User, error) { + var pwd C.struct_passwd + var result *C.struct_passwd + +- var bufSize C.long +- if runtime.GOOS == "dragonfly" || runtime.GOOS == "freebsd" { +- // DragonFly and FreeBSD do not have _SC_GETPW_R_SIZE_MAX +- // and just return -1. So just use the same +- // size that Linux returns. ++ bufSize := C.sysconf(C._SC_GETPW_R_SIZE_MAX) ++ if bufSize == -1 { ++ // DragonFly and FreeBSD do not have _SC_GETPW_R_SIZE_MAX. ++ // Additionally, not all Linux systems have it, either. For ++ // example, the musl libc returns -1. + bufSize = 1024 +- } else { +- bufSize = C.sysconf(C._SC_GETPW_R_SIZE_MAX) +- if bufSize <= 0 || bufSize > 1<<20 { +- return nil, fmt.Errorf("user: unreasonable _SC_GETPW_R_SIZE_MAX of %d", bufSize) +- } ++ } ++ if bufSize <= 0 || bufSize > 1<<20 { ++ return nil, fmt.Errorf("user: unreasonable _SC_GETPW_R_SIZE_MAX of %d", bufSize) + } + buf := C.malloc(C.size_t(bufSize)) + defer C.free(buf) |