aboutsummaryrefslogtreecommitdiff
path: root/ident
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2015-12-17 13:13:09 +0200
committerSergey Poznyakoff <gray@gnu.org.ua>2015-12-17 13:23:43 +0200
commitf928d00f38cc8a43f31506fadf868ba72ca93b4d (patch)
tree4f11bdf3e0bf6f69b44cc7595c2c49f71afc41be /ident
parent8334b598f85317eb4d44000f6ec580c54734b15d (diff)
downloadpies-f928d00f38cc8a43f31506fadf868ba72ca93b4d.tar.gz
pies-f928d00f38cc8a43f31506fadf868ba72ca93b4d.tar.bz2
Improve is_group_member functions.
* ident/pam.c: Use is_array_member as intended. * ident/system.c: Likewise.
Diffstat (limited to 'ident')
-rw-r--r--ident/pam.c15
-rw-r--r--ident/system.c22
2 files changed, 9 insertions, 28 deletions
diff --git a/ident/pam.c b/ident/pam.c
index ef32c4d..b7b9ef4 100644
--- a/ident/pam.c
+++ b/ident/pam.c
@@ -161,19 +161,10 @@ is_group_member (pies_identity_provider_t p,
161 int result = 0; 161 int result = 0;
162 162
163 setgrent (); 163 setgrent ();
164 while ((gr = getgrent ())) 164 while (!result && (gr = getgrent ()))
165 { 165 {
166 char **p; 166 if (is_array_member (groups, gr->gr_name))
167 167 result = is_array_member (gr->gr_mem, id->username);
168 if (!is_array_member (groups, gr->gr_name))
169 continue;
170
171 for (p = gr->gr_mem; *p; p++)
172 if (strcmp (*p, id->username) == 0)
173 {
174 result = 1;
175 break;
176 }
177 } 168 }
178 endgrent (); 169 endgrent ();
179 return result; 170 return result;
diff --git a/ident/system.c b/ident/system.c
index bde667c..dcfe7a2 100644
--- a/ident/system.c
+++ b/ident/system.c
@@ -77,25 +77,15 @@ system_is_group_member (pies_identity_provider_t provider,
77 int result = 0; 77 int result = 0;
78 78
79 setgrent (); 79 setgrent ();
80 while ((gr = getgrent ())) 80 while (!result && (gr = getgrent ()))
81 { 81 {
82 char **p; 82 if (is_array_member (groups, gr->gr_name))
83
84 if (!is_array_member (groups, gr->gr_name))
85 continue;
86
87 if (gr->gr_gid == data->gid)
88 { 83 {
89 result = 1; 84 if (gr->gr_gid == data->gid)
90 break;
91 }
92
93 for (p = gr->gr_mem; *p; p++)
94 if (strcmp (*p, id->username) == 0)
95 {
96 result = 1; 85 result = 1;
97 break; 86 else
98 } 87 result = is_array_member (gr->gr_mem, id->username);
88 }
99 } 89 }
100 endgrent (); 90 endgrent ();
101 return result; 91 return result;

Return to:

Send suggestions and report system problems to the System administrator.