From 2cacfa1d2745c76a4e64232d750a3b0b321fbf2b Mon Sep 17 00:00:00 2001 From: Travis McArthur Date: Mon, 1 Jun 2015 02:34:25 -0400 Subject: [PATCH] Fix bug with one node paths for oper class --- src/operclass.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/operclass.c b/src/operclass.c index 1b173ed96..50c7505c4 100644 --- a/src/operclass.c +++ b/src/operclass.c @@ -215,13 +215,19 @@ unsigned char OperClass_evaluateACLEntry(OperClassACLEntry* entry, OperClassACLP return 0; } + /* If we just have allow or deny then we match it */ + if (!node->callbacks) + { + return 1; + } + /* We have a valid node, execute all callback nodes */ for (callbackNode = node->callbacks; callbackNode; callbackNode = callbackNode->next) { eval = callbackNode->callback(entry->variables,params); } - return 0; + return eval; } OperPermission OperClass_evaluateACLPathEx(OperClassACL* acl, OperClassACLPath* path, OperClassCheckParams* params) @@ -233,7 +239,7 @@ OperPermission OperClass_evaluateACLPathEx(OperClassACL* acl, OperClassACLPath* OperClassACLEntry* entry; unsigned char allow = 0; unsigned char deny = 0; - while (path->next && acl->acls) + while (path && path->next && acl->acls) { tmp = OperClass_FindACL(acl->acls,path->identifier); if (!tmp)