diff options
Diffstat (limited to 'src/sss_client/nss_mc_group.c')
-rw-r--r-- | src/sss_client/nss_mc_group.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/sss_client/nss_mc_group.c b/src/sss_client/nss_mc_group.c index 268b40ef0..e0fdb97f6 100644 --- a/src/sss_client/nss_mc_group.c +++ b/src/sss_client/nss_mc_group.c @@ -29,7 +29,8 @@ #include "nss_mc.h" #include "util/util_safealign.h" -struct sss_cli_mc_ctx gr_mc_ctx = { false, -1, 0, NULL, 0, NULL, 0, NULL, 0 }; +struct sss_cli_mc_ctx gr_mc_ctx = { UNINITIALIZED, -1, 0, NULL, 0, NULL, 0, + NULL, 0, 0 }; static errno_t sss_nss_mc_parse_result(struct sss_mc_rec *rec, struct group *result, @@ -176,6 +177,7 @@ errno_t sss_nss_mc_getgrnam(const char *name, size_t name_len, done: free(rec); + __sync_sub_and_fetch(&gr_mc_ctx.active_threads, 1); return ret; } @@ -198,7 +200,8 @@ errno_t sss_nss_mc_getgrgid(gid_t gid, len = snprintf(gidstr, 11, "%ld", (long)gid); if (len > 10) { - return EINVAL; + ret = EINVAL; + goto done; } /* hashes are calculated including the NULL terminator */ @@ -242,6 +245,7 @@ errno_t sss_nss_mc_getgrgid(gid_t gid, done: free(rec); + __sync_sub_and_fetch(&gr_mc_ctx.active_threads, 1); return ret; } |