diff options
author | Neels Hofmeyr <neels@hofmeyr.de> | 2017-11-16 18:31:57 +0100 |
---|---|---|
committer | Neels Hofmeyr <nhofmeyr@sysmocom.de> | 2017-11-20 16:21:44 +0000 |
commit | 10ee73a7b39b2867fde2a827b199f6264149c75c (patch) | |
tree | 50dd7a7f3a74bd2124c7223e519da49c3856e6c5 | |
parent | 3fad5d782acbd97be1124ccab874741261913429 (diff) |
rate_ctr: fix mem leak for mangled desc
Using the NULL context creates mem leaks that bother sanitizer builds.
Allocate as talloc "child" of the rate_ctr_group, so that the mangled desc (if
any) gets freed when the rate_ctr group is freed.
Remove the comment concerning osmo-msc: the way to fix the unexpected talloc
state in osmo-msc tests is to have no invalid rate counter names in osmo-msc.
See Ib1db8e3dc6c833174f1b0b1ca051b0861f477408 (osmo-msc).
Change-Id: Ief9abfeb78b7706200bcc6aaa5dcb04fbeaa9b5b
-rw-r--r-- | src/rate_ctr.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/rate_ctr.c b/src/rate_ctr.c index 54644909..477339f2 100644 --- a/src/rate_ctr.c +++ b/src/rate_ctr.c @@ -190,15 +190,6 @@ struct rate_ctr_group *rate_ctr_group_alloc(void *ctx, unsigned int size; struct rate_ctr_group *group; - /* attempt to mangle all '.' in identifiers to ':' for backwards compat */ - if (!rate_ctrl_group_desc_validate(desc, true)) { - /* don't use 'ctx' here as it would screw up memory leak debugging e.g. - * in osmo-msc */ - desc = rate_ctr_group_desc_mangle(NULL, desc); - if (!desc) - return NULL; - } - size = sizeof(struct rate_ctr_group) + desc->num_ctr * sizeof(struct rate_ctr); @@ -209,6 +200,15 @@ struct rate_ctr_group *rate_ctr_group_alloc(void *ctx, if (!group) return NULL; + /* attempt to mangle all '.' in identifiers to ':' for backwards compat */ + if (!rate_ctrl_group_desc_validate(desc, true)) { + desc = rate_ctr_group_desc_mangle(group, desc); + if (!desc) { + talloc_free(group); + return NULL; + } + } + group->desc = desc; group->idx = idx; |