mirror of https://gerrit.osmocom.org/asn1c
Memory leak fixed in SET OF / SEQUENCE OF in wrong encoding processing
This commit is contained in:
parent
9ab21b8984
commit
4f530b5208
|
@ -10,6 +10,8 @@
|
|||
* Multiple enhancements by Daniele Varrazzo <daniele.varrazzo@gmail.com>
|
||||
* Fixed explicit tagging of an in-lined constructed type.
|
||||
(Severity: low; Security impact: none).
|
||||
* Memory leak fixed in SET OF / SEQUENCE OF when wrong encoding
|
||||
is encountered. (Severity: medium; Security impact: low)
|
||||
|
||||
0.9.21: 2006-Sep-17
|
||||
|
||||
|
|
|
@ -227,6 +227,8 @@ SET_OF_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
|
|||
}
|
||||
/* Fall through */
|
||||
case RC_FAIL: /* Fatal error */
|
||||
ASN_STRUCT_FREE(*elm->type, ctx->ptr);
|
||||
ctx->ptr = 0;
|
||||
RETURN(RC_FAIL);
|
||||
} /* switch(rval) */
|
||||
|
||||
|
@ -787,8 +789,10 @@ SET_OF_print(asn_TYPE_descriptor_t *td, const void *sptr, int ilevel,
|
|||
void
|
||||
SET_OF_free(asn_TYPE_descriptor_t *td, void *ptr, int contents_only) {
|
||||
if(td && ptr) {
|
||||
asn_SET_OF_specifics_t *specs;
|
||||
asn_TYPE_member_t *elm = td->elements;
|
||||
asn_anonymous_set_ *list = _A_SET_FROM_VOID(ptr);
|
||||
asn_struct_ctx_t *ctx; /* Decoder context */
|
||||
int i;
|
||||
|
||||
/*
|
||||
|
@ -807,6 +811,13 @@ SET_OF_free(asn_TYPE_descriptor_t *td, void *ptr, int contents_only) {
|
|||
if(!contents_only) {
|
||||
FREEMEM(ptr);
|
||||
}
|
||||
|
||||
specs = (asn_SET_OF_specifics_t *)td->specifics;
|
||||
ctx = (asn_struct_ctx_t *)((char *)ptr + specs->ctx_offset);
|
||||
if(ctx->ptr) {
|
||||
ASN_STRUCT_FREE(*elm->type, ctx->ptr);
|
||||
ctx->ptr = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue