From: Alan T. DeKok Date: Tue, 2 Sep 2014 18:17:18 +0000 (-0400) Subject: Fix use of talloc buffers X-Git-Tag: release_3_0_5~644 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=20138cc2e31a7bcbf3aab09acf5753340d9f8954;p=thirdparty%2Ffreeradius-server.git Fix use of talloc buffers --- diff --git a/src/modules/rlm_unix/rlm_unix.c b/src/modules/rlm_unix/rlm_unix.c index c1a95c252a2..0a01074190b 100644 --- a/src/modules/rlm_unix/rlm_unix.c +++ b/src/modules/rlm_unix/rlm_unix.c @@ -71,23 +71,24 @@ static const CONF_PARSER module_config[] = { #ifndef HAVE_GETGRNAM_R -#define fr_getgrnam getgrnam +#define fr_getgrnam(_a, _b) getgrnam(_b) #else -static struct group *fr_getgrnam(char const *name) +static struct group *fr_getgrnam(TALLOC_CTX *ctx, char const *name) { struct group *grp, my_group; char *group_buffer; size_t group_size = 1024; grp = NULL; - group_buffer = talloc_array(NULL, char, group_size); + group_buffer = talloc_array(ctx, char, group_size); while (group_buffer) { int err; err = getgrnam_r(name, &my_group, group_buffer, group_size, &grp); if (err == ERANGE) { group_size *= 2; - group_buffer = talloc_realloc(NULL, group_buffer, char, group_size); + talloc_free(group_buffer); + group_buffer = talloc_array(ctx, char, group_size); continue; } @@ -132,7 +133,7 @@ static int groupcmp(UNUSED void *instance, REQUEST *req, UNUSED VALUE_PAIR *requ if (!pwd) return -1; - grp = fr_getgrnam(check->vp_strvalue); + grp = fr_getgrnam(req, check->vp_strvalue); if (!grp) return -1; @@ -144,10 +145,6 @@ static int groupcmp(UNUSED void *instance, REQUEST *req, UNUSED VALUE_PAIR *requ } } -#ifdef HAVE_GETGRNAM_R - talloc_free(grp); -#endif - return retval; }