Don't panic with "index out of range" on empty string argument.
Fixes golang/go#31277
Change-Id: I005f9523caec76337cb2ec87272a6be4736bce18
Reviewed-on: https://go-review.googlesource.com/c/go/+/170937
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
}
func SetsockoptString(fd, level, opt int, s string) (err error) {
- return setsockopt(fd, level, opt, unsafe.Pointer(&[]byte(s)[0]), uintptr(len(s)))
+ var p unsafe.Pointer
+ if len(s) > 0 {
+ p = unsafe.Pointer(&[]byte(s)[0])
+ }
+ return setsockopt(fd, level, opt, p, uintptr(len(s)))
}
func SetsockoptTimeval(fd, level, opt int, tv *Timeval) (err error) {
t.Fatalf("Seek(-1, 0, 0) return error with empty message")
}
}
+
+func TestSetsockoptString(t *testing.T) {
+ // should not panic on empty string, see issue #31277
+ err := syscall.SetsockoptString(-1, 0, 0, "")
+ if err == nil {
+ t.Fatalf("SetsockoptString: did not fail")
+ }
+}