]> git.proxmox.com Git - mirror_frr.git/commitdiff
bgpd: Validate as-path in `show bgp regexp`
authorDonatas Abraitis <donatas.abraitis@gmail.com>
Thu, 18 Apr 2019 07:17:57 +0000 (10:17 +0300)
committerDonatas Abraitis <donatas.abraitis@gmail.com>
Tue, 23 Apr 2019 08:25:35 +0000 (11:25 +0300)
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
bgpd/bgp_filter.c
bgpd/bgp_filter.h
bgpd/bgp_route.c

index a788ea68f3fb1db630b310b5713f281eacd21a21..b262f6b56d707aab304f1f7e52464befba4e4748 100644 (file)
@@ -389,7 +389,7 @@ static int as_list_dup_check(struct as_list *aslist, struct as_filter *new)
        return 0;
 }
 
-static int config_bgp_aspath_validate(const char *regstr)
+int config_bgp_aspath_validate(const char *regstr)
 {
        char valid_chars[] = "1234567890_^|[,{}() ]$*+.?-\\";
 
index e54372f8e064e90d38129c723fe397a7f9481106..3c49e357ffddf297479d47e009fb69dec162a15b 100644 (file)
@@ -31,5 +31,6 @@ extern enum as_filter_type as_list_apply(struct as_list *, void *);
 extern struct as_list *as_list_lookup(const char *);
 extern void as_list_add_hook(void (*func)(char *));
 extern void as_list_delete_hook(void (*func)(const char *));
+extern int config_bgp_aspath_validate(const char *regstr);
 
 #endif /* _QUAGGA_BGP_FILTER_H */
index 7036ededac405dae3f24c2e38920bb6dd76e2edb..31df5165ae0c4034e6ae529c256ffd3b0cc00cce 100644 (file)
@@ -9985,6 +9985,12 @@ static int bgp_show_regexp(struct vty *vty, struct bgp *bgp, const char *regstr,
        regex_t *regex;
        int rc;
 
+       if (!config_bgp_aspath_validate(regstr)) {
+               vty_out(vty, "Invalid character in as-path access-list %s\n",
+                       regstr);
+               return CMD_WARNING_CONFIG_FAILED;
+       }
+
        regex = bgp_regcomp(regstr);
        if (!regex) {
                vty_out(vty, "Can't compile regexp %s\n", regstr);