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.
This commit is contained in:
parent
da65a3d898
commit
30c734fc73
1 changed files with 2 additions and 1 deletions
|
@ -498,7 +498,8 @@ static_same_dest(struct static_route *x, struct static_route *y)
|
||||||
static inline int
|
static inline int
|
||||||
static_same_rte(struct static_route *x, struct static_route *y)
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue