From ef19fc1ccd8a967ba1d860e8f6a426d360e4edce Mon Sep 17 00:00:00 2001 From: Vadim Yanitskiy Date: Mon, 29 Nov 2021 02:09:43 +0300 Subject: [PATCH] libmsc: fix memory leak (struct gsm_sms) in gsm340_rx_tpdu() If a MO SMS gets successfully routed through SMPP, we return early in gsm340_rx_tpdu() and leak a chunk of type 'struct gsm_sms'. Change-Id: I8a745d747f06baa7109418ffe600b27b3c0a5228 Fixes: [1] Ic34d398e0a850856e20380ae35e5c2ae5e3c539b Fixes: OS#5334 --- src/libmsc/gsm_04_11.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libmsc/gsm_04_11.c b/src/libmsc/gsm_04_11.c index 199fdc11e..bd7cf1fc2 100644 --- a/src/libmsc/gsm_04_11.c +++ b/src/libmsc/gsm_04_11.c @@ -631,7 +631,8 @@ static int gsm340_rx_tpdu(struct gsm_trans *trans, struct msgb *msg, /* This SMS got routed through SMPP and we are waiting on the response. */ if (gsms->smpp.esme) { - return -EINPROGRESS; + rc = -EINPROGRESS; + goto out; } /* This SMS got routed through SMPP, but the configured ESME was