• Ian Gudger's avatar
    syscall: remove X__cmsg_data from Cmsghdr · 154860ff
    Ian Gudger authored
    This field is a zero length array and has little use. Since Go 1.5, trailing
    zero-length arrays take up space. Both syscall.UnixRights() and
    syscall.ParseSocketControlMessage() depend on being able to do an unsafe cast
    of socket control message data to Cmsghdr this is only safe if the socket
    control message data is greater than or equal to the size of Cmsghdr. Since
    control message data that is equal in size to Cmsghdr without X__cmsg_data is
    a valid socket control message, we must remove X__cmsg_data or not perform the
    unsafe cast.
    
    Removing X__cmsg_data will prevent Go code that uses X__cmsg_data from
    compiling, but removing the unsafe cast will cause Go code that uses
    X__cmsg_data to fail or exhibit undefined behavior at runtime. It was
    therefore decided that removing X__cmsg_data was the better option.
    
    Fixes #17649
    
    Change-Id: I39f323f978eca09d62da5785c5c5c9c7cbdf8c31
    Reviewed-on: https://go-review.googlesource.com/32319Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
    Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
    Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    154860ff
ztypes_linux_386.go 11.5 KB