Commit 30c734fc authored by Ondřej Zajíček's avatar Ondřej Zajíček

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
......@@ -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);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment