pkg/route: filter invalid route updates

This commit fixes the underlying issue that caused crashes when
receiving a nil route update, as reported in
https://github.com/squat/kilo/issues/17.
This commit is contained in:
Lucas Servén Marín 2019-09-24 16:11:22 +02:00
parent 20349de548
commit 1265ce0cd5
No known key found for this signature in database
GPG Key ID: 586FEAF680DA74AD
1 changed files with 4 additions and 0 deletions

View File

@ -91,6 +91,10 @@ func (t *Table) Run(stop <-chan struct{}) (<-chan error, error) {
case unix.RTM_DELROUTE:
t.mu.Lock()
for _, r := range t.routes {
// Filter out invalid routes.
if r == nil || r.Dst == nil {
continue
}
// If any deleted route's destination matches a destination
// in the table, reset the corresponding route just in case.
if r.Dst.IP.Equal(e.Route.Dst.IP) && r.Dst.Mask.String() == e.Route.Dst.Mask.String() {