mirror of
https://github.com/rwinkhart/sys.git
synced 2026-08-28 04:46:44 -04:00
unix: comply with -d=checkptr in Test_anyToSockaddr
Rather than directly casting between types of different sizes, use an explicit copy in a helper function. Fixes golang/go#35106 Change-Id: I2293eb38fa53205ce069e2e5405262294c9ad412 Reviewed-on: https://go-review.googlesource.com/c/sys/+/202820 Run-TryBot: Matt Layher <mdlayher@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Tobias Klauser <tobias.klauser@gmail.com> Reviewed-by: Bryan C. Mills <bcmills@google.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
@@ -30,7 +30,7 @@ func Test_anyToSockaddr(t *testing.T) {
|
||||
},
|
||||
{
|
||||
name: "AF_TIPC NameSeq",
|
||||
rsa: (*RawSockaddrAny)(unsafe.Pointer(&RawSockaddrTIPC{
|
||||
rsa: sockaddrTIPCToAny(RawSockaddrTIPC{
|
||||
Family: AF_TIPC,
|
||||
Addrtype: TIPC_SERVICE_RANGE,
|
||||
Scope: 1,
|
||||
@@ -39,7 +39,7 @@ func Test_anyToSockaddr(t *testing.T) {
|
||||
Lower: 2,
|
||||
Upper: 3,
|
||||
}).tipcAddr(),
|
||||
})),
|
||||
}),
|
||||
sa: &SockaddrTIPC{
|
||||
Scope: 1,
|
||||
Addr: &TIPCServiceRange{
|
||||
@@ -51,7 +51,7 @@ func Test_anyToSockaddr(t *testing.T) {
|
||||
},
|
||||
{
|
||||
name: "AF_TIPC Name",
|
||||
rsa: (*RawSockaddrAny)(unsafe.Pointer(&RawSockaddrTIPC{
|
||||
rsa: sockaddrTIPCToAny(RawSockaddrTIPC{
|
||||
Family: AF_TIPC,
|
||||
Addrtype: TIPC_SERVICE_ADDR,
|
||||
Scope: 2,
|
||||
@@ -60,7 +60,7 @@ func Test_anyToSockaddr(t *testing.T) {
|
||||
Instance: 2,
|
||||
Domain: 3,
|
||||
}).tipcAddr(),
|
||||
})),
|
||||
}),
|
||||
sa: &SockaddrTIPC{
|
||||
Scope: 2,
|
||||
Addr: &TIPCServiceName{
|
||||
@@ -72,7 +72,7 @@ func Test_anyToSockaddr(t *testing.T) {
|
||||
},
|
||||
{
|
||||
name: "AF_TIPC ID",
|
||||
rsa: (*RawSockaddrAny)(unsafe.Pointer(&RawSockaddrTIPC{
|
||||
rsa: sockaddrTIPCToAny(RawSockaddrTIPC{
|
||||
Family: AF_TIPC,
|
||||
Addrtype: TIPC_SOCKET_ADDR,
|
||||
Scope: 3,
|
||||
@@ -80,7 +80,7 @@ func Test_anyToSockaddr(t *testing.T) {
|
||||
Ref: 1,
|
||||
Node: 2,
|
||||
}).tipcAddr(),
|
||||
})),
|
||||
}),
|
||||
sa: &SockaddrTIPC{
|
||||
Scope: 3,
|
||||
Addr: &TIPCSocketAddr{
|
||||
@@ -214,3 +214,17 @@ func TestSockaddrTIPC_sockaddr(t *testing.T) {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func sockaddrTIPCToAny(in RawSockaddrTIPC) *RawSockaddrAny {
|
||||
var out RawSockaddrAny
|
||||
|
||||
// Explicitly copy the contents of in into out to produce the correct
|
||||
// sockaddr structure, without relying on unsafe casting to a type of a
|
||||
// larger size.
|
||||
copy(
|
||||
(*(*[SizeofSockaddrAny]byte)(unsafe.Pointer(&out)))[:],
|
||||
(*(*[SizeofSockaddrTIPC]byte)(unsafe.Pointer(&in)))[:],
|
||||
)
|
||||
|
||||
return &out
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user