aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeels Hofmeyr <nhofmeyr@sysmocom.de>2023-04-27 05:44:42 +0200
committerneels <nhofmeyr@sysmocom.de>2023-04-27 16:41:49 +0000
commit29d7e780fc96efcb8d4ca01acc0847f94fbeeabf (patch)
tree97276eec7756002a7bd3df69f33803f9b819ed73
parentbe0b55e0472f99fbac27d885201615a246609cca (diff)
fix PDU leaks in rua_generate_*() functions
-rw-r--r--src/rua_common.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/rua_common.c b/src/rua_common.c
index f21bf8f..37cf3ba 100644
--- a/src/rua_common.c
+++ b/src/rua_common.c
@@ -134,6 +134,7 @@ struct msgb *rua_generate_initiating_message(
{
RUA_RUA_PDU_t pdu;
int rc;
+ struct msgb *msg;
memset(&pdu, 0, sizeof(pdu));
@@ -146,7 +147,9 @@ struct msgb *rua_generate_initiating_message(
return NULL;
}
- return _rua_gen_msg(&pdu);
+ msg = _rua_gen_msg(&pdu);
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RUA_RUA_PDU, &pdu);
+ return msg;
}
struct msgb *rua_generate_successful_outcome(
@@ -157,6 +160,7 @@ struct msgb *rua_generate_successful_outcome(
{
RUA_RUA_PDU_t pdu;
int rc;
+ struct msgb *msg;
memset(&pdu, 0, sizeof(pdu));
@@ -169,7 +173,9 @@ struct msgb *rua_generate_successful_outcome(
return NULL;
}
- return _rua_gen_msg(&pdu);
+ msg = _rua_gen_msg(&pdu);
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RUA_RUA_PDU, &pdu);
+ return msg;
}
struct msgb *rua_generate_unsuccessful_outcome(
@@ -180,6 +186,7 @@ struct msgb *rua_generate_unsuccessful_outcome(
{
RUA_RUA_PDU_t pdu;
int rc;
+ struct msgb *msg;
memset(&pdu, 0, sizeof(pdu));
@@ -192,7 +199,9 @@ struct msgb *rua_generate_unsuccessful_outcome(
return NULL;
}
- return _rua_gen_msg(&pdu);
+ msg = _rua_gen_msg(&pdu);
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RUA_RUA_PDU, &pdu);
+ return msg;
}
RUA_IE_t *rua_new_ie(RUA_ProtocolIE_ID_t id,