]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Fixes preference bounds.
authorOndrej Zajicek <santiago@crfreenet.org>
Thu, 17 Sep 2009 11:35:37 +0000 (13:35 +0200)
committerOndrej Zajicek <santiago@crfreenet.org>
Thu, 17 Sep 2009 11:35:37 +0000 (13:35 +0200)
doc/bird.sgml
filter/filter.c
nest/config.Y

index 29fcd5a9fc26dacefbfdb307f3729b6fee39ccf6..258b84206577398b352a6c67468cbf74713ece35 100644 (file)
@@ -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.
index 3df0f0c655ee5a3ae6ad1fffce5d5311a512e9f7..9617482ab51c037fb37121b82823fd94332deb04 100644 (file)
@@ -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;
index ad45a0d591b0dc6a09d180682b1c074c6cd44e19..a2c44ab7aa874b964fcf7be4cfe81e077aac7092 100644 (file)
@@ -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; }