diff options
author | Joel Sing <jsing@google.com> | 2011-11-18 01:52:39 +1100 |
---|---|---|
committer | Joel Sing <jsing@google.com> | 2011-11-18 01:52:39 +1100 |
commit | 9b571a31200ffccad327cefb48944a3b88494bcd (patch) | |
tree | 281a0c4a0fd57a1ad8f57ba62cf69ee56f0789e6 | |
parent | 773a921ccbb26324db1161edceb38507ab0c96b6 (diff) | |
download | go-9b571a31200ffccad327cefb48944a3b88494bcd.tar.gz go-9b571a31200ffccad327cefb48944a3b88494bcd.zip |
syscall: hostname/domainname fix for openbsd
Work around a bug that was fixed after OpenBSD 5.0 - a request for
kern.hostname or kern.domainname with a nil value for oldp will result
in a length of zero being returned. If we hit this case use a length
of MAXHOSTNAMELEN (256).
R=golang-dev, mikioh.mikioh
CC=golang-dev
https://golang.org/cl/5408041
-rw-r--r-- | src/pkg/syscall/syscall_bsd.go | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/pkg/syscall/syscall_bsd.go b/src/pkg/syscall/syscall_bsd.go index 65ac1e08da..163232ad48 100644 --- a/src/pkg/syscall/syscall_bsd.go +++ b/src/pkg/syscall/syscall_bsd.go @@ -559,7 +559,16 @@ func Sysctl(name string) (value string, err error) { return "", err } if n == 0 { - return "", nil + // TODO(jsing): Remove after OpenBSD 5.2 release. + // Work around a bug that was fixed after OpenBSD 5.0. + // The length for kern.hostname and kern.domainname is always + // returned as 0 when a nil value is passed for oldp. + if OS == "openbsd" && (value == "kern.hostname" || value == "kern.domainname") { + // MAXHOSTNAMELEN + n = 256 + } else { + return "", nil + } } // Read into buffer of that size. |