From 521ef4f7839216e19ad93420f0464ba969fead8b Mon Sep 17 00:00:00 2001 From: Pavel Reichl Date: Fri, 22 Jan 2016 12:30:23 -0500 Subject: [PATCH 54/86] IDMAP: Fix minor memory leak MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Michal Židek (cherry picked from commit 5554a2a679f72f19f266d660a5681e3b0c657379) (cherry picked from commit fe8d58c75da2b9b3704bb2ae19f8014323797757) --- src/lib/idmap/sss_idmap.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/lib/idmap/sss_idmap.c b/src/lib/idmap/sss_idmap.c index 269ef0132ff3b9ffbfbe65006361fac6d4f88cf9..e3e9972b802748770a5f7440fa8ddc8ba75d3362 100644 --- a/src/lib/idmap/sss_idmap.c +++ b/src/lib/idmap/sss_idmap.c @@ -607,13 +607,13 @@ get_helpers(struct sss_idmap_ctx *ctx, for (int i = 0; i < ctx->idmap_opts.extra_slice_init; i++) { secondary_name = generate_sec_slice_name(ctx, domain_sid, first_rid); if (secondary_name == NULL) { - return IDMAP_OUT_OF_MEMORY; + err = IDMAP_OUT_OF_MEMORY; + goto fail; } err = generate_slice(ctx, secondary_name, first_rid, &slice); if (err != IDMAP_SUCCESS) { - ctx->free_func(secondary_name, ctx->alloc_pvt); - return err; + goto fail; } first_rid += ctx->idmap_opts.rangesize; @@ -631,6 +631,14 @@ get_helpers(struct sss_idmap_ctx *ctx, *_sec_slices = sec_slices; return IDMAP_SUCCESS; + +fail: + ctx->free_func(secondary_name, ctx->alloc_pvt); + + /* Free already generated helpers. */ + free_helpers(ctx, sec_slices, true); + + return err; } enum idmap_error_code sss_idmap_add_domain_ex(struct sss_idmap_ctx *ctx, -- 2.5.0