lynxis lazus has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-remsim/+/42705?usp=email )
Change subject: rspro_util: asn1 decode: fix memleak when decoding fails ......................................................................
rspro_util: asn1 decode: fix memleak when decoding fails
Change-Id: I071343d0134dbffb1bb71ea26a5b514be1b5bb27 --- M src/rspro_util.c 1 file changed, 4 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-remsim refs/changes/05/42705/1
diff --git a/src/rspro_util.c b/src/rspro_util.c index 23bb839..5e4ab17 100644 --- a/src/rspro_util.c +++ b/src/rspro_util.c @@ -66,6 +66,8 @@ msg->l2h = msg->data; rval = der_encode_to_buffer(&asn_DEF_RsproPDU, pdu, msgb_data(msg), msgb_tailroom(msg)); if (rval.encoded < 0) { + if (pdu) + ASN_STRUCT_FREE(asn_DEF_RsproPDU, pdu); LOGP(DRSPRO, LOGL_ERROR, "Failed to encode %s\n", rval.failed_type->name); msgb_free(msg); return NULL; @@ -86,6 +88,8 @@ LOGP(DRSPRO, LOGL_DEBUG, "decoding %s\n", msgb_hexdump(msg)); rval = ber_decode(NULL, &asn_DEF_RsproPDU, (void **) &pdu, msgb_l2(msg), msgb_l2len(msg)); if (rval.code != RC_OK) { + if (pdu) + ASN_STRUCT_FREE(asn_DEF_RsproPDU, pdu); LOGP(DRSPRO, LOGL_ERROR, "Failed to decode: %d. Consumed %zu of %u bytes\n", rval.code, rval.consumed, msgb_length(msg)); return NULL;