bankd/client: Fix memory leak if rspro_enc_msg() fails

Change-Id: Ib72b077d82939be0627b9dd7c905fb2a33db9ca5
This commit is contained in:
Harald Welte 2019-03-30 08:50:35 +01:00
parent 972a1e892e
commit 2eee4507ca
2 changed files with 4 additions and 1 deletions

View File

@ -435,6 +435,7 @@ static int worker_send_rspro(struct bankd_worker *worker, RsproPDU_t *pdu)
int rc; int rc;
if (!msg) { if (!msg) {
ASN_STRUCT_FREE(asn_DEF_RsproPDU, pdu);
LOGW(worker, "error encoding RSPRO\n"); LOGW(worker, "error encoding RSPRO\n");
return -1; return -1;
} }

View File

@ -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) int ipa_client_conn_send_rspro(struct ipa_client_conn *ipa, RsproPDU_t *rspro)
{ {
struct msgb *msg = rspro_enc_msg(rspro); struct msgb *msg = rspro_enc_msg(rspro);
if (!msg) if (!msg) {
ASN_STRUCT_FREE(asn_DEF_RsproPDU, rspro);
return -1; return -1;
}
push_and_send(ipa, msg); push_and_send(ipa, msg);
return 0; return 0;
} }