From 95139cccffebace69a85001f6d8da6a3eceff445 Mon Sep 17 00:00:00 2001 From: "Roger A. Light" Date: Thu, 5 Nov 2020 12:23:53 +0000 Subject: [PATCH] Dynsec: If priority is equal when ordering, use group/role name as well. --- plugins/dynamic-security/groups.c | 8 +++++++- plugins/dynamic-security/roles.c | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) 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; + } }