]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bgpd: fix crash in *bgpv2PeerErrorsTable
authorFrancois Dumontet <francois.dumontet@6wind.com>
Fri, 1 Sep 2023 15:25:25 +0000 (17:25 +0200)
committerMergify <37929162+mergify[bot]@users.noreply.github.com>
Wed, 27 Sep 2023 19:27:10 +0000 (19:27 +0000)
following crash occurs:
    at ./nptl/pthread_kill.c:44
    at ./nptl/pthread_kill.c:78
    at ./nptl/pthread_kill.c:89
    context=0x7ffd06d3d300)
    at /build/make-pkg/output/_packages/cp-routing/src/lib/sigevent.c:246
    length=0x7ffd06d3da88, exact=1, var_len=0x7ffd06d3da90, write_method=<optimized out>)
    at /build/make-pkg/output/_packages/cp-routing/src/bgpd/bgp_snmp_bgp4v2.c:364
    vp=vp@entry=0x7f7c88b584c0 <bgpv2_variables>, vp_len=vp_len@entry=102,
    ename=ename@entry=0x7f7c88b58440 <bgpv2_trap_oid>, enamelen=enamelen@entry=8,
    name=name@entry=0x7f7c88b58480 <bgpv2_oid>, namelen=namelen@entry=7,
    iname=0x7ffd06d3e7b0, index_len=1, trapobj=0x7f7c88b53b80 <bgpv2TrapBackListv6>,
    trapobjlen=6, sptrap=2 '\002')
    at /build/make-pkg/output/_packages/cp-routing/src/lib/agentx.c:382
    vp_len=vp_len@entry=102, ename=ename@entry=0x7f7c88b58440 <bgpv2_trap_oid>,
    enamelen=enamelen@entry=8, name=name@entry=0x7f7c88b58480 <bgpv2_oid>,
    namelen=namelen@entry=7, iname=0x7ffd06d3ec30, inamelen=16,
    trapobj=0x7f7c88b53b80 <bgpv2TrapBackListv6>, trapobjlen=6, sptrap=2 '\002')
    at /build/make-pkg/output/_packages/cp-routing/src/lib/agentx.c:298
    at /build/make-pkg/output/_packages/cp-routing/src/bgpd/bgp_snmp_bgp4v2.c:1496
    at /build/make-pkg/output/_packages/cp-routing/src/bgpd/bgp_fsm.c:48
    at /build/make-pkg/output/_packages/cp-routing/src/bgpd/bgp_fsm.c:1314
    event=Receive_NOTIFICATION_message)
    at /build/make-pkg/output/_packages/cp-routing/src/bgpd/bgp_fsm.c:2665
    at /build/make-pkg/output/_packages/cp-routing/src/bgpd/bgp_packet.c:3129
    at /build/make-pkg/output/_packages/cp-routing/src/lib/event.c:1979
    at /build/make-pkg/output/_packages/cp-routing/src/lib/libfrr.c:1213
    at /build/make-pkg/output/_packages/cp-routing/src/bgpd/bgp_main.c:510

it's due to function bgpv2PeerErrorsTable returning
return SNMP_STRING(msg_str);
with msg_str NULL rather the string ""

this commit avoid the issue.

Signed-off-by: Francois Dumontet <francois.dumontet@6wind.com>
(cherry picked from commit d5cb2d9e41135a34baec3663a686e19eff0a316f)

bgpd/bgp_debug.c
bgpd/bgp_vty.c

index f01c3e4f3570fe48c46668faa0f3bc3c657abf6e..d37d6937cf12418189c4e67a7e04b1c08d595b0e 100644 (file)
@@ -515,11 +515,11 @@ const char *bgp_notify_admin_message(char *buf, size_t bufsz, uint8_t *data,
                                     size_t datalen)
 {
        if (!data || datalen < 1)
-               return NULL;
+               return buf;
 
        uint8_t len = data[0];
        if (!len || len > datalen - 1)
-               return NULL;
+               return buf;
 
        return zlog_sanitize(buf, bufsz, data + 1, len);
 }
index 887fecd3166df7b3e14f48675186e8ebda6b4811..74bbd51c05770a9556b35c0a51ee29b015d9c8d6 100644 (file)
@@ -10769,11 +10769,9 @@ static void bgp_show_peer_reset(struct vty * vty, struct peer *peer,
                                             msgbuf, sizeof(msgbuf),
                                             (uint8_t *)peer->notify.data,
                                             peer->notify.length);
-                               if (msg_str)
-                                       json_object_string_add(
-                                          json_peer,
-                                          "lastShutdownDescription",
-                                          msg_str);
+                               json_object_string_add(json_peer,
+                                  "lastShutdownDescription",
+                                  msg_str);
                        }
 
                }