summaryrefslogtreecommitdiff
path: root/libgo/go/net/cgo_unix.go
diff options
context:
space:
mode:
Diffstat (limited to 'libgo/go/net/cgo_unix.go')
-rw-r--r--libgo/go/net/cgo_unix.go10
1 files changed, 9 insertions, 1 deletions
diff --git a/libgo/go/net/cgo_unix.go b/libgo/go/net/cgo_unix.go
index 525c63c18d2..a90aaa904ed 100644
--- a/libgo/go/net/cgo_unix.go
+++ b/libgo/go/net/cgo_unix.go
@@ -114,7 +114,15 @@ func cgoLookupPort(ctx context.Context, network, service string) (port int, err
}
func cgoLookupServicePort(hints *syscall.Addrinfo, network, service string) (port int, err error) {
- s := syscall.StringBytePtr(service)
+ s, err := syscall.BytePtrFromString(service)
+ if err != nil {
+ return 0, err
+ }
+ // Lowercase the service name in the memory passed to C.
+ for i := 0; i < len(service); i++ {
+ bp := (*byte)(unsafe.Pointer(uintptr(unsafe.Pointer(s)) + uintptr(i)))
+ *bp = lowerASCII(*bp)
+ }
var res *syscall.Addrinfo
syscall.Entersyscall()
gerrno := libc_getaddrinfo(nil, s, hints, &res)