int pr_RemoveUserFromGroup(char *user, char *group) { afs_int32 code; namelist lnames; idlist lids; lnames.namelist_len = 2; lnames.namelist_val = malloc(2 * PR_MAXNAMELEN); strncpy(lnames.namelist_val[0], user, PR_MAXNAMELEN); strncpy(lnames.namelist_val[1], group, PR_MAXNAMELEN); lids.idlist_val = 0; lids.idlist_len = 0; code = pr_NameToId(&lnames, &lids); if (code) goto done; if (lids.idlist_val[0] == ANONYMOUSID || lids.idlist_val[1] == ANONYMOUSID) { code = PRNOENT; goto done; } code = ubik_PR_RemoveFromGroup(pruclient, 0, lids.idlist_val[0], lids.idlist_val[1]); done: if (lnames.namelist_val) free(lnames.namelist_val); xdr_free((xdrproc_t) xdr_idlist, &lids); return code; }
int pr_IsAMemberOf(char *uname, char *gname, afs_int32 *flag) { afs_int32 code; namelist lnames; idlist lids; stolower(uname); stolower(gname); lnames.namelist_len = 2; lnames.namelist_val = malloc(2 * PR_MAXNAMELEN); strncpy(lnames.namelist_val[0], uname, PR_MAXNAMELEN); strncpy(lnames.namelist_val[1], gname, PR_MAXNAMELEN); lids.idlist_val = 0; lids.idlist_len = 0; code = pr_NameToId(&lnames, &lids); if (code) { if (lnames.namelist_val) free(lnames.namelist_val); xdr_free((xdrproc_t) xdr_idlist, &lids); return code; } code = ubik_PR_IsAMemberOf(pruclient, 0, lids.idlist_val[0], lids.idlist_val[1], flag); if (lnames.namelist_val) free(lnames.namelist_val); xdr_free((xdrproc_t) xdr_idlist, &lids); return code; }
int pr_AddToGroup(char *user, char *group) { register afs_int32 code; namelist lnames; idlist lids; lnames.namelist_len = 2; lnames.namelist_val = malloc(2 * PR_MAXNAMELEN); strncpy(lnames.namelist_val[0], user, PR_MAXNAMELEN); strncpy(lnames.namelist_val[1], group, PR_MAXNAMELEN); lids.idlist_val = 0; lids.idlist_len = 0; code = pr_NameToId(&lnames, &lids); if (code) goto done; /* if here, still could be missing an entry */ if (lids.idlist_val[0] == ANONYMOUSID || lids.idlist_val[1] == ANONYMOUSID) { code = PRNOENT; goto done; } code = ubik_PR_AddToGroup(pruclient, 0, lids.idlist_val[0], lids.idlist_val[1]); done: if (lnames.namelist_val) free(lnames.namelist_val); xdr_free((xdrproc_t) xdr_idlist, &lids); return code; }