diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2015-12-17 13:13:09 +0200 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2015-12-17 13:23:43 +0200 |
commit | f928d00f38cc8a43f31506fadf868ba72ca93b4d (patch) | |
tree | 4f11bdf3e0bf6f69b44cc7595c2c49f71afc41be /ident | |
parent | 8334b598f85317eb4d44000f6ec580c54734b15d (diff) | |
download | pies-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.c | 15 | ||||
-rw-r--r-- | ident/system.c | 22 |
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; |