From: Jason A. Donenfeld Date: Sat, 21 Oct 2023 17:32:07 +0000 (+0200) Subject: conn: set unused OOB to zero length X-Git-Tag: 0.0.20250515~21 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b3df23dcd40ba4568572f338f9fd16b87053fc29;p=thirdparty%2Fwireguard-go.git conn: set unused OOB to zero length Otherwise in the event that we're using GSO without sticky sockets, we pass garbage OOB buffers to sendmmsg, making a EINVAL, when GSO doesn't set its header. Signed-off-by: Jason A. Donenfeld --- diff --git a/conn/bind_std.go b/conn/bind_std.go index e1bcbd1..46df7fd 100644 --- a/conn/bind_std.go +++ b/conn/bind_std.go @@ -65,7 +65,7 @@ func NewStdNetBind() Bind { msgs := make([]ipv6.Message, IdealBatchSize) for i := range msgs { msgs[i].Buffers = make(net.Buffers, 1) - msgs[i].OOB = make([]byte, stickyControlSize+gsoControlSize) + msgs[i].OOB = make([]byte, 0, stickyControlSize+gsoControlSize) } return &msgs }, @@ -200,6 +200,7 @@ again: func (s *StdNetBind) putMessages(msgs *[]ipv6.Message) { for i := range *msgs { + (*msgs)[i].OOB = (*msgs)[i].OOB[:0] (*msgs)[i] = ipv6.Message{Buffers: (*msgs)[i].Buffers, OOB: (*msgs)[i].OOB} } s.msgsPool.Put(msgs)