bgpd/eigrpd: fix crashes found by the CLI fuzzer

Fixes the following crashes:
* bgpd aborted: vtysh  -c "show ip bgp l2vpn evpn all 1.1.1.1 json"
* bgpd aborted: vtysh  -c "show ip bgp l2vpn evpn all 1.1.1.1"
* bgpd aborted: vtysh  -c "show ip bgp l2vpn evpn all 1.1.1.1/32 json"
* bgpd aborted: vtysh  -c "show ip bgp l2vpn evpn all 1.1.1.1/32"
* bgpd aborted: vtysh  -c "show bgp l2vpn evpn all 1.1.1.1 json"
* bgpd aborted: vtysh  -c "show bgp l2vpn evpn all 1.1.1.1"
* bgpd aborted: vtysh  -c "show bgp l2vpn evpn all 1.1.1.1/32 json"
* bgpd aborted: vtysh  -c "show bgp l2vpn evpn all 1.1.1.1/32"
* bgpd aborted: vtysh  -c "show bgp ipv4 vpn rd 1:1 1.1.1.1/32 json"
* bgpd aborted: vtysh  -c "show bgp ipv4 vpn rd 1:1 1.1.1.1/32"
* bgpd aborted: vtysh  -c "show bgp ipv4 vpn rd 1:1 2001:db8::1/128 json"
* bgpd aborted: vtysh  -c "show bgp ipv4 vpn rd 1:1 2001:db8::1/128"
* bgpd aborted: vtysh  -c "show bgp ipv6 vpn rd 1:1 1.1.1.1/32 json"
* bgpd aborted: vtysh  -c "show bgp ipv6 vpn rd 1:1 1.1.1.1/32"
* bgpd aborted: vtysh  -c "show bgp ipv6 vpn rd 1:1 2001:db8::1/128 json"
* bgpd aborted: vtysh  -c "show bgp ipv6 vpn rd 1:1 2001:db8::1/128"
* bgpd aborted: vtysh  -c "show vnc responses 1.1.1.1/32"
* bgpd aborted: vtysh  -c "show vnc responses 2001:db8::1/128"
* bgpd aborted: vtysh  -c "show vnc responses 11:11:11:11:11:11"
* bgpd aborted: vtysh  -c "show vnc responses"
* eigrpd aborted: vtysh -c "configure terminal" -c "no router eigrp 65535"

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
This commit is contained in:
Renato Westphal 2017-07-25 13:55:48 -03:00
parent c6413dd394
commit 9b86009a38
3 changed files with 21 additions and 2 deletions

View File

@ -8617,8 +8617,14 @@ static int bgp_show_route(struct vty *vty, struct bgp *bgp, const char *ip_str,
int prefix_check, enum bgp_path_type pathtype, int prefix_check, enum bgp_path_type pathtype,
u_char use_json) u_char use_json)
{ {
if (!bgp) if (!bgp) {
bgp = bgp_get_default(); bgp = bgp_get_default();
if (!bgp) {
if (!use_json)
vty_out(vty, "No BGP process is configured\n");
return CMD_WARNING;
}
}
/* labeled-unicast routes live in the unicast table */ /* labeled-unicast routes live in the unicast table */
if (safi == SAFI_LABELED_UNICAST) if (safi == SAFI_LABELED_UNICAST)

View File

@ -2236,9 +2236,12 @@ void rfapiRibShowResponsesSummary(void *stream)
struct rfapi_descriptor *rfd; struct rfapi_descriptor *rfd;
struct listnode *node; struct listnode *node;
if (rfapiStream2Vty(stream, &fp, &vty, &out, &vty_newline) == 0) if (rfapiStream2Vty(stream, &fp, &vty, &out, &vty_newline) == 0)
return; return;
if (!bgp) {
fp(out, "Unable to find default BGP instance\n");
return;
}
fp(out, "%-24s ", "Responses: (Prefixes)"); fp(out, "%-24s ", "Responses: (Prefixes)");
fp(out, "%-8s %-8u ", "Active:", bgp->rfapi->rib_prefix_count_total); fp(out, "%-8s %-8u ", "Active:", bgp->rfapi->rib_prefix_count_total);
@ -2388,6 +2391,11 @@ void rfapiRibShowResponses(void *stream, struct prefix *pfx_match,
if (rfapiStream2Vty(stream, &fp, &vty, &out, &vty_newline) == 0) if (rfapiStream2Vty(stream, &fp, &vty, &out, &vty_newline) == 0)
return; return;
if (!bgp) {
fp(out, "Unable to find default BGP instance\n");
return;
}
/* /*
* loop over NVEs * loop over NVEs
*/ */

View File

@ -237,6 +237,11 @@ DEFUN (no_router_eigrp,
struct eigrp *eigrp; struct eigrp *eigrp;
eigrp = eigrp_lookup(); eigrp = eigrp_lookup();
if (eigrp == NULL) {
vty_out(vty, " EIGRP Routing Process not enabled\n");
return CMD_SUCCESS;
}
if (eigrp->AS != atoi(argv[3]->arg)) { if (eigrp->AS != atoi(argv[3]->arg)) {
vty_out(vty, "%% Attempting to deconfigure non-existent AS\n"); vty_out(vty, "%% Attempting to deconfigure non-existent AS\n");
return CMD_WARNING_CONFIG_FAILED; return CMD_WARNING_CONFIG_FAILED;