Blame SOURCES/freeradius-make-grp-tallo-c-too.patch

75e927
From d51daa8f56f5c55f2effdb308ef4a14016118753 Mon Sep 17 00:00:00 2001
75e927
From: "Alan T. DeKok" <aland@freeradius.org>
75e927
Date: Sun, 5 Oct 2014 17:22:26 -0400
75e927
Subject: [PATCH 1/1] Make grp tallo'c, too
75e927
75e927
---
75e927
 src/modules/rlm_unix/rlm_unix.c | 14 +++++++++-----
75e927
 1 file changed, 9 insertions(+), 5 deletions(-)
75e927
75e927
diff --git a/src/modules/rlm_unix/rlm_unix.c b/src/modules/rlm_unix/rlm_unix.c
75e927
index 0a01074..9e55c26 100644
75e927
--- a/src/modules/rlm_unix/rlm_unix.c
75e927
+++ b/src/modules/rlm_unix/rlm_unix.c
75e927
@@ -75,20 +75,20 @@ static const CONF_PARSER module_config[] = {
75e927
 #else
75e927
 static struct group *fr_getgrnam(TALLOC_CTX *ctx, char const *name)
75e927
 {
75e927
-	struct group	*grp, my_group;
75e927
+	struct group	*grp, *result;
75e927
 	char		*group_buffer;
75e927
 	size_t		group_size = 1024;
75e927
 
75e927
-	grp = NULL;
75e927
-	group_buffer = talloc_array(ctx, char, group_size);
75e927
+	grp = talloc(ctx, struct group);
75e927
+	group_buffer = talloc_array(grp, char, group_size);
75e927
 	while (group_buffer) {
75e927
 		int err;
75e927
 
75e927
-		err = getgrnam_r(name, &my_group, group_buffer, group_size, &grp;;
75e927
+		err = getgrnam_r(name, grp, group_buffer, group_size, &result);
75e927
 		if (err == ERANGE) {
75e927
 			group_size *= 2;
75e927
 			talloc_free(group_buffer);
75e927
-			group_buffer = talloc_array(ctx, char, group_size);
75e927
+			group_buffer = talloc_array(grp, char, group_size);
75e927
 			continue;
75e927
 		}
75e927
 
75e927
@@ -145,6 +145,10 @@ static int groupcmp(UNUSED void *instance, REQUEST *req, UNUSED VALUE_PAIR *requ
75e927
 		}
75e927
 	}
75e927
 
75e927
+#ifdef HAVE_GETGRNAM_R
75e927
+	talloc_free(grp);
75e927
+#endif
75e927
+
75e927
 	return retval;
75e927
 }
75e927
 
75e927
-- 
75e927
2.1.1
75e927