On Tue, Jul 10, 2018 at 11:15:51AM +0200, Sebastian Benoit wrote:
> we only support up to RT_TABLEID_MAX rtables.
> 
> ok?

OK
 
> (benno_bgpd_rtable_max.diff)
> 
> Index: parse.y
> ===================================================================
> RCS file: /cvs/src/usr.sbin/bgpd/parse.y,v
> retrieving revision 1.325
> diff -u -p -r1.325 parse.y
> --- parse.y   9 Jul 2018 12:05:11 -0000       1.325
> +++ parse.y   10 Jul 2018 09:06:58 -0000
> @@ -487,6 +487,11 @@ conf_main        : AS as4number          {
>                       free($3);
>               }
>               | RDE RIB STRING RTABLE NUMBER {
> +                     if ($5 > RT_TABLEID_MAX) {
> +                             yyerror("rtable %llu too big: max %u", $5,
> +                                 RT_TABLEID_MAX);
> +                             YYERROR;
> +                     }
>                       if (add_rib($3, $5, 0)) {
>                               free($3);
>                               YYERROR;
> @@ -495,6 +500,11 @@ conf_main        : AS as4number          {
>               }
>               | RDE RIB STRING RTABLE NUMBER FIBUPDATE yesno {
>                       int     flags = 0;
> +                     if ($5 > RT_TABLEID_MAX) {
> +                             yyerror("rtable %llu too big: max %u", $5,
> +                                 RT_TABLEID_MAX);
> +                             YYERROR;
> +                     }
>                       if ($7 == 0)
>                               flags = F_RIB_NOFIBSYNC;
>                       if (add_rib($3, $5, flags)) {
> @@ -631,6 +641,11 @@ conf_main        : AS as4number          {
>               }
>               | RTABLE NUMBER {
>                       struct rde_rib *rr;
> +                     if ($2 > RT_TABLEID_MAX) {
> +                             yyerror("rtable %llu too big: max %u", $2,
> +                                 RT_TABLEID_MAX);
> +                             YYERROR;
> +                     }
>                       if (ktable_exists($2, NULL) != 1) {
>                               yyerror("rtable id %lld does not exist", $2);
>                               YYERROR;
> @@ -888,6 +903,11 @@ optnumber        : /* empty */           { $$ = 0; }
>               ;
>  
>  rdomain              : RDOMAIN NUMBER optnl '{' optnl        {
> +                     if ($2 > RT_TABLEID_MAX) {
> +                             yyerror("rtable %llu too big: max %u", $2,
> +                                 RT_TABLEID_MAX);
> +                             YYERROR;
> +                     }
>                       if (ktable_exists($2, NULL) != 1) {
>                               yyerror("rdomain %lld does not exist", $2);
>                               YYERROR;
> 

-- 
:wq Claudio

Reply via email to