Commit 30c734fc authored by Ondrej Zajicek (work)'s avatar Ondrej Zajicek (work)
Browse files

Static: Fix bug in static route filter expressions

During reconfiguration, old and new filter expressions in static routes
are compared using i_same() function. When filter expressions contain
function calls, it is necessary that old filter expressions are the
second argument in i_same(), as it is internally modified by i_same().
Otherwise pointers to old (and freed) data appear in the config
structure.

Thanks to Lennert Buytenhek for tracking and reporting the bug.
parent da65a3d8
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -498,7 +498,8 @@ static_same_dest(struct static_route *x, struct static_route *y)
static inline int
static_same_rte(struct static_route *x, struct static_route *y)
{
  return static_same_dest(x, y) && i_same(x->cmds, y->cmds);
  /* Note that i_same() requires arguments in (new, old) order */
  return static_same_dest(x, y) && i_same(y->cmds, x->cmds);
}