From f928d00f38cc8a43f31506fadf868ba72ca93b4d Mon Sep 17 00:00:00 2001 From: Sergey Poznyakoff Date: Thu, 17 Dec 2015 13:13:09 +0200 Subject: Improve is_group_member functions. * ident/pam.c: Use is_array_member as intended. * ident/system.c: Likewise. --- ident/pam.c | 15 +++------------ ident/system.c | 22 ++++++---------------- 2 files changed, 9 insertions(+), 28 deletions(-) (limited to 'ident') 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, int result = 0; setgrent (); - while ((gr = getgrent ())) + while (!result && (gr = getgrent ())) { - char **p; - - if (!is_array_member (groups, gr->gr_name)) - continue; - - for (p = gr->gr_mem; *p; p++) - if (strcmp (*p, id->username) == 0) - { - result = 1; - break; - } + if (is_array_member (groups, gr->gr_name)) + result = is_array_member (gr->gr_mem, id->username); } endgrent (); 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, int result = 0; setgrent (); - while ((gr = getgrent ())) + while (!result && (gr = getgrent ())) { - char **p; - - if (!is_array_member (groups, gr->gr_name)) - continue; - - if (gr->gr_gid == data->gid) + if (is_array_member (groups, gr->gr_name)) { - result = 1; - break; - } - - for (p = gr->gr_mem; *p; p++) - if (strcmp (*p, id->username) == 0) - { + if (gr->gr_gid == data->gid) result = 1; - break; - } + else + result = is_array_member (gr->gr_mem, id->username); + } } endgrent (); return result; -- cgit v1.2.1