]> git.puffer.fish Git - mirror/frr.git/commitdiff
bgpd: Validate as-path in `show bgp regexp` 4188/head
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 19:10:01 +0000 (22:10 +0300)
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
bgpd/bgp_filter.c
bgpd/bgp_filter.h
bgpd/bgp_route.c

index 4df8892e5a93f59c83e4e47e3f0ba409a02c274a..2e1588aa8c1ec7fcda928d3e3945d96600e4f9c0 100644 (file)
@@ -391,7 +391,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 d473c976245a9431aa533c336e9f44b6cc860b1d..5fe8d42ff7e03196fb11d95556457fbd4c02a83c 100644 (file)
@@ -9703,6 +9703,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);