summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoman Rakus <rrakus@redhat.com>2013-09-26 14:59:33 +0200
committerRoman Rakus <rrakus@redhat.com>2013-09-26 14:59:33 +0200
commit97dcfc0b8ef12ff22b0a756472c2e245ddc71b1d (patch)
treecfafda868a17f5b4d0aea50a9dc6d60d32ab3745
parentd5aa7d41462f75eea4894325a203cbcb4dc1e123 (diff)
downloadopenlmi-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.c7
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",