diff options
-rw-r--r-- | doc/bird.sgml | 2 | ||||
-rw-r--r-- | filter/filter.c | 2 | ||||
-rw-r--r-- | nest/config.Y | 2 |
3 files changed, 4 insertions, 2 deletions
diff --git a/doc/bird.sgml b/doc/bird.sgml index 29fcd5a..258b842 100644 --- a/doc/bird.sgml +++ b/doc/bird.sgml @@ -724,7 +724,7 @@ defined by using the <cf>defined( <m>attribute</m> )</cf> operator. Address scope of the network (<cf/SCOPE_HOST/ for addresses local to this host, <cf/SCOPE_LINK/ for those specific for a physical link, <cf/SCOPE_SITE/ and <cf/SCOPE_ORGANIZATION/ for private addresses, <cf/SCOPE_UNIVERSE/ for globally visible addresses). <tag><m/int/ preference</tag> - Preference of the route. (See the chapter about routing tables.) + Preference of the route. Valid values are 0-65535. (See the chapter about routing tables.) <tag><m/ip/ from</tag> The router which the route has originated from. Read-only. diff --git a/filter/filter.c b/filter/filter.c index 3df0f0c..9617482 100644 --- a/filter/filter.c +++ b/filter/filter.c @@ -702,6 +702,8 @@ interpret(struct f_inst *what) ONEARG; if (v1.type != T_INT) runtime( "Can't set preference to non-integer" ); + if ((v1.val.i < 0) || (v1.val.i > 0xFFFF)) + runtime( "Setting preference value out of bounds" ); *f_rte = rte_cow(*f_rte); (*f_rte)->pref = v1.val.i; break; diff --git a/nest/config.Y b/nest/config.Y index ad45a0d..a2c44ab 100644 --- a/nest/config.Y +++ b/nest/config.Y @@ -132,7 +132,7 @@ proto_name: proto_item: /* EMPTY */ | PREFERENCE expr { - if ($2 < 0 || $2 > 255) cf_error("Invalid preference"); + if ($2 < 0 || $2 > 0xFFFF) cf_error("Invalid preference"); this_proto->preference = $2; } | DISABLED bool { this_proto->disabled = $2; } |