diff --git a/plugins/dynamic-security/groups.c b/plugins/dynamic-security/groups.c index 4659d731..e1998b77 100644 --- a/plugins/dynamic-security/groups.c +++ b/plugins/dynamic-security/groups.c @@ -70,10 +70,16 @@ static int group_cmp(void *a, void *b) int dynsec_grouplist__cmp(void *a, void *b) { + int prio; struct dynsec__grouplist *grouplist_a = a; struct dynsec__grouplist *grouplist_b = b; - return grouplist_b->priority - grouplist_a->priority; + prio = grouplist_b->priority - grouplist_a->priority; + if(prio == 0){ + return strcmp(grouplist_a->groupname, grouplist_b->groupname); + }else{ + return prio; + } } void dynsec_clientlist__kick_all(struct dynsec__clientlist *base_clientlist) diff --git a/plugins/dynamic-security/roles.c b/plugins/dynamic-security/roles.c index afefdcb1..2b8782c1 100644 --- a/plugins/dynamic-security/roles.c +++ b/plugins/dynamic-security/roles.c @@ -55,10 +55,16 @@ static int role_cmp(void *a, void *b) static int rolelist_cmp(void *a, void *b) { + int prio; struct dynsec__rolelist *rolelist_a = a; struct dynsec__rolelist *rolelist_b = b; - return rolelist_b->priority - rolelist_a->priority; + prio = rolelist_b->priority - rolelist_a->priority; + if(prio == 0){ + return strcmp(rolelist_a->rolename, rolelist_b->rolename); + }else{ + return prio; + } }