diff options
authorPhilipp Maier <pmaier@sysmocom.de>2017-08-11 17:45:46 +0200
committerPhilipp Maier <pmaier@sysmocom.de>2017-08-11 17:49:38 +0200
commit3219e52dcf6e771bd03ad4abc3823422edb6e5fe (patch)
parentc34bcd42e494200a7057dadcfa7e34fdbe6c0fca (diff)
sccp: fixup for osmo_sccp_get_ss7()
osmo_sccp_get_ss7() has the risk of a nullpointer dereference, when sccp is NULL. Return NULL when the sccp instance is NULL. Add doxygen comment Change-Id: I84d484e4441fd37443fff8c67e17df8fb15d5b2e
2 files changed, 7 insertions, 2 deletions
diff --git a/include/osmocom/sigtran/sccp_sap.h b/include/osmocom/sigtran/sccp_sap.h
index bf1b368..5524bd8 100644
--- a/include/osmocom/sigtran/sccp_sap.h
+++ b/include/osmocom/sigtran/sccp_sap.h
@@ -246,7 +246,7 @@ void osmo_sccp_vty_init(void);
struct osmo_sccp_instance *
osmo_sccp_instance_create(struct osmo_ss7_instance *ss7, void *priv);
void osmo_sccp_instance_destroy(struct osmo_sccp_instance *inst);
-struct osmo_ss7_instance *osmo_sccp_get_ss7(struct osmo_sccp_instance *sccp);
+struct osmo_ss7_instance *osmo_sccp_get_ss7(const struct osmo_sccp_instance *sccp);
struct osmo_sccp_instance *osmo_sccp_get_sccp(const struct osmo_sccp_user *scu);
void osmo_sccp_user_unbind(struct osmo_sccp_user *scu);
diff --git a/src/sccp_user.c b/src/sccp_user.c
index a4568cf..b0a807d 100644
--- a/src/sccp_user.c
+++ b/src/sccp_user.c
@@ -598,8 +598,13 @@ out_strings:
return NULL;
-struct osmo_ss7_instance *osmo_sccp_get_ss7(struct osmo_sccp_instance *sccp)
+/*! \brief get the SS7 instance that is related to the given SCCP instance
+ * \param[in] sccp SCCP instance
+ * \returns SS7 instance; NULL if sccp was NULL */
+struct osmo_ss7_instance *osmo_sccp_get_ss7(const struct osmo_sccp_instance *sccp)
+ if (!sccp)
+ return NULL;
return sccp->ss7;