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