From 92d296551bdc30900fcffcd9f837746b5c829e48 Mon Sep 17 00:00:00 2001 From: Filip Tehlar Date: Thu, 28 Jul 2022 08:39:13 +0000 Subject: [PATCH] session: fix a crash when using unregistered transport proto Type: improvement Signed-off-by: Filip Tehlar Change-Id: I39e3e007da2b99321bebf3e1c1ebb1d87547f532 --- src/vnet/session/session_types.h | 3 ++- src/vnet/session/transport.c | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) 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); } -- 2.16.6