Make grp tallo'c, too
authorAlan T. DeKok <aland@freeradius.org>
Sun, 5 Oct 2014 21:22:26 +0000 (17:22 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Sun, 5 Oct 2014 21:34:40 +0000 (17:34 -0400)
src/modules/rlm_unix/rlm_unix.c

index 0a01074..9e55c26 100644 (file)
@@ -75,20 +75,20 @@ static const CONF_PARSER module_config[] = {
 #else
 static struct group *fr_getgrnam(TALLOC_CTX *ctx, char const *name)
 {
-       struct group    *grp, my_group;
+       struct group    *grp, *result;
        char            *group_buffer;
        size_t          group_size = 1024;
 
-       grp = NULL;
-       group_buffer = talloc_array(ctx, char, group_size);
+       grp = talloc(ctx, struct group);
+       group_buffer = talloc_array(grp, char, group_size);
        while (group_buffer) {
                int err;
 
-               err = getgrnam_r(name, &my_group, group_buffer, group_size, &grp);
+               err = getgrnam_r(name, grp, group_buffer, group_size, &result);
                if (err == ERANGE) {
                        group_size *= 2;
                        talloc_free(group_buffer);
-                       group_buffer = talloc_array(ctx, char, group_size);
+                       group_buffer = talloc_array(grp, char, group_size);
                        continue;
                }
 
@@ -145,6 +145,10 @@ static int groupcmp(UNUSED void *instance, REQUEST *req, UNUSED VALUE_PAIR *requ
                }
        }
 
+#ifdef HAVE_GETGRNAM_R
+       talloc_free(grp);
+#endif
+
        return retval;
 }