summaryrefslogtreecommitdiffstats
path: root/src/rate_ctr.c
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2017-11-16 18:31:57 +0100
committerNeels Hofmeyr <nhofmeyr@sysmocom.de>2017-11-20 16:21:44 +0000
commit10ee73a7b39b2867fde2a827b199f6264149c75c (patch)
tree50dd7a7f3a74bd2124c7223e519da49c3856e6c5 /src/rate_ctr.c
parent3fad5d782acbd97be1124ccab874741261913429 (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
Diffstat (limited to 'src/rate_ctr.c')
-rw-r--r--src/rate_ctr.c18
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;