From: Filip Tehlar Date: Thu, 28 Jul 2022 08:39:13 +0000 (+0000) Subject: session: fix a crash when using unregistered transport proto X-Git-Tag: v23.02-rc0~134 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=92d296551bdc30900fcffcd9f837746b5c829e48;p=vpp.git session: fix a crash when using unregistered transport proto Type: improvement Signed-off-by: Filip Tehlar Change-Id: I39e3e007da2b99321bebf3e1c1ebb1d87547f532 --- diff --git a/src/vnet/session/session_types.h b/src/vnet/session/session_types.h index 7cfa6716187..95a88c5ab6e 100644 --- a/src/vnet/session/session_types.h +++ b/src/vnet/session/session_types.h @@ -505,7 +505,8 @@ STATIC_ASSERT (sizeof (session_dgram_hdr_t) == (SESSION_CONN_ID_LEN + 8), _ (NOEXTCFG, "no extended transport config") \ _ (NOCRYPTOENG, "no crypto engine") \ _ (NOCRYPTOCKP, "cert key pair not found ") \ - _ (LOCAL_CONNECT, "could not connect with local scope") + _ (LOCAL_CONNECT, "could not connect with local scope") \ + _ (TRANSPORT_NO_REG, "transport was not registered") typedef enum session_error_p_ { diff --git a/src/vnet/session/transport.c b/src/vnet/session/transport.c index 54ce9176666..192a201612a 100644 --- a/src/vnet/session/transport.c +++ b/src/vnet/session/transport.c @@ -314,6 +314,8 @@ transport_cleanup_half_open (transport_proto_t tp, u32 conn_index) int transport_connect (transport_proto_t tp, transport_endpoint_cfg_t * tep) { + if (PREDICT_FALSE (!tp_vfts[tp].connect)) + return SESSION_E_TRANSPORT_NO_REG; return tp_vfts[tp].connect (tep); } @@ -343,6 +345,8 @@ u32 transport_start_listen (transport_proto_t tp, u32 session_index, transport_endpoint_cfg_t *tep) { + if (PREDICT_FALSE (!tp_vfts[tp].start_listen)) + return SESSION_E_TRANSPORT_NO_REG; return tp_vfts[tp].start_listen (session_index, tep); }