diff options
author | Roman Rakus <rrakus@redhat.com> | 2013-09-26 14:59:33 +0200 |
---|---|---|
committer | Roman Rakus <rrakus@redhat.com> | 2013-09-26 14:59:33 +0200 |
commit | 97dcfc0b8ef12ff22b0a756472c2e245ddc71b1d (patch) | |
tree | cfafda868a17f5b4d0aea50a9dc6d60d32ab3745 | |
parent | d5aa7d41462f75eea4894325a203cbcb4dc1e123 (diff) | |
download | openlmi-providers-97dcfc0b8ef12ff22b0a756472c2e245ddc71b1d.tar.gz openlmi-providers-97dcfc0b8ef12ff22b0a756472c2e245ddc71b1d.tar.xz openlmi-providers-97dcfc0b8ef12ff22b0a756472c2e245ddc71b1d.zip |
account: Fix removing member of group
Signed-off-by: Roman Rakus <rrakus@redhat.com>
-rw-r--r-- | src/account/LMI_MemberOfGroupProvider.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/account/LMI_MemberOfGroupProvider.c b/src/account/LMI_MemberOfGroupProvider.c index 4e27def..4e2212e 100644 --- a/src/account/LMI_MemberOfGroupProvider.c +++ b/src/account/LMI_MemberOfGroupProvider.c @@ -260,6 +260,7 @@ static CMPIStatus LMI_MemberOfGroupDeleteInstance( struct lu_error *error = NULL; const char *group_name = NULL; + const char *member_name = NULL; uid_t user_id = -1; GValueArray *groups = NULL; unsigned int i = 0; /* iterator */ @@ -290,6 +291,7 @@ static CMPIStatus LMI_MemberOfGroupDeleteInstance( rc = CMPI_RC_ERR_FAILED; goto fail; } + member_name = aux_lu_get_str(lue_u, LU_USERNAME); if (!lu_group_lookup_name(luc, group_name, lue_g, &error)) { rc = CMPI_RC_ERR_FAILED; @@ -299,7 +301,7 @@ static CMPIStatus LMI_MemberOfGroupDeleteInstance( } groups = lu_ent_get(lue_g, LU_MEMBERNAME); for (found = 0, i = 0; groups && i < groups->n_values; i++) { - if (0 != strcmp(group_name, g_value_get_string(g_value_array_get_nth( + if (0 == strcmp(member_name, g_value_get_string(g_value_array_get_nth( groups, i)))) { found = 1; break; @@ -313,8 +315,7 @@ static CMPIStatus LMI_MemberOfGroupDeleteInstance( goto fail; } else { /* And now remove the user from the group */ - g_value_array_remove(groups, i); - lu_ent_set(lue_g, LU_MEMBERNAME, groups); + lu_ent_del(lue_g, LU_MEMBERNAME, g_value_array_get_nth(groups, i)); if(!lu_group_modify(luc, lue_g, &error)) { rc = CMPI_RC_ERR_FAILED; asprintf(&errmsg, "Modification of group %s failed: %s\n", |