Просмотр исходного кода

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.
Lucas Servén Marín 6 лет назад
Родитель
Сommit
1265ce0cd5
1 измененных файлов с 4 добавлено и 0 удалено
  1. 4 0
      pkg/route/route.go

+ 4 - 0
pkg/route/route.go

@@ -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() {