aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2019-03-30 08:50:35 +0100
committerHarald Welte <laforge@gnumonks.org>2019-03-30 08:50:35 +0100
commit2eee4507cafbea4c09ae4c5cc6d111ac87908e15 (patch)
tree4034e62b87741043fea55ac1f41500e62b9d1a30
parent972a1e892e462f4abf05b2c2ee230fdcde8aa603 (diff)
bankd/client: Fix memory leak if rspro_enc_msg() fails
-rw-r--r--src/bankd_main.c1
-rw-r--r--src/rspro_client_fsm.c4
2 files changed, 4 insertions, 1 deletions
diff --git a/src/bankd_main.c b/src/bankd_main.c
index cb78718..b3a5513 100644
--- a/src/bankd_main.c
+++ b/src/bankd_main.c
@@ -435,6 +435,7 @@ static int worker_send_rspro(struct bankd_worker *worker, RsproPDU_t *pdu)
int rc;
if (!msg) {
+ ASN_STRUCT_FREE(asn_DEF_RsproPDU, pdu);
LOGW(worker, "error encoding RSPRO\n");
return -1;
}
diff --git a/src/rspro_client_fsm.c b/src/rspro_client_fsm.c
index 925b0ff..c8d9f4e 100644
--- a/src/rspro_client_fsm.c
+++ b/src/rspro_client_fsm.c
@@ -58,8 +58,10 @@ static void push_and_send(struct ipa_client_conn *ipa, struct msgb *msg_tx)
int ipa_client_conn_send_rspro(struct ipa_client_conn *ipa, RsproPDU_t *rspro)
{
struct msgb *msg = rspro_enc_msg(rspro);
- if (!msg)
+ if (!msg) {
+ ASN_STRUCT_FREE(asn_DEF_RsproPDU, rspro);
return -1;
+ }
push_and_send(ipa, msg);
return 0;
}