mirror of
https://github.com/netbirdio/gvisor.git
synced 2026-05-22 17:12:49 -07:00
Prevent using zero as NICID.
PiperOrigin-RevId: 629890469
This commit is contained in:
committed by
gVisor bot
parent
8ed5e07639
commit
52f1d31378
@@ -274,6 +274,19 @@ func (*ErrDuplicateNICID) IgnoreStats() bool {
|
||||
}
|
||||
func (*ErrDuplicateNICID) String() string { return "duplicate nic id" }
|
||||
|
||||
// ErrInvalidNICID indicates the operation used an invalid NIC ID.
|
||||
//
|
||||
// +stateify savable
|
||||
type ErrInvalidNICID struct{}
|
||||
|
||||
func (*ErrInvalidNICID) isError() {}
|
||||
|
||||
// IgnoreStats implements Error.
|
||||
func (*ErrInvalidNICID) IgnoreStats() bool {
|
||||
return false
|
||||
}
|
||||
func (*ErrInvalidNICID) String() string { return "invalid nic id" }
|
||||
|
||||
// ErrInvalidEndpointState indicates the endpoint is in an invalid state.
|
||||
//
|
||||
// +stateify savable
|
||||
|
||||
@@ -846,6 +846,9 @@ func (s *Stack) CreateNICWithOptions(id tcpip.NICID, ep LinkEndpoint, opts NICOp
|
||||
s.mu.Lock()
|
||||
defer s.mu.Unlock()
|
||||
|
||||
if id == 0 {
|
||||
return &tcpip.ErrInvalidNICID{}
|
||||
}
|
||||
// Make sure id is unique.
|
||||
if _, ok := s.nics[id]; ok {
|
||||
return &tcpip.ErrDuplicateNICID{}
|
||||
|
||||
@@ -2446,6 +2446,16 @@ func TestCreateNICWithOptions(t *testing.T) {
|
||||
desc string
|
||||
calls []callArgsAndExpect
|
||||
}{
|
||||
{
|
||||
desc: "InvalidNICID",
|
||||
calls: []callArgsAndExpect{
|
||||
{
|
||||
nicID: tcpip.NICID(0),
|
||||
opts: stack.NICOptions{Name: "eth0"},
|
||||
err: &tcpip.ErrInvalidNICID{},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
desc: "DuplicateNICID",
|
||||
calls: []callArgsAndExpect{
|
||||
@@ -2544,7 +2554,7 @@ func TestNICStats(t *testing.T) {
|
||||
|
||||
var txBytesTotal, rxBytesTotal, txPacketsTotal, rxPacketsTotal int
|
||||
for i, nic := range nics {
|
||||
nicid := tcpip.NICID(i)
|
||||
nicid := tcpip.NICID(i + 1)
|
||||
ep := channel.New(1, defaultMTU, "")
|
||||
if err := s.CreateNIC(nicid, ep); err != nil {
|
||||
t.Fatal("CreateNIC failed: ", err)
|
||||
|
||||
Reference in New Issue
Block a user