diff --git a/src/acl.c b/src/acl.c index 05625956..7aa7204f 100644 --- a/src/acl.c +++ b/src/acl.c @@ -555,7 +555,7 @@ int ACLCheckCommandPerm(client *c) { for (int j = 0; j < numkeys; j++) { listIter li; listNode *ln; - listRewind(u->passwords,&li); + listRewind(u->patterns,&li); /* Test this key against every pattern. */ int match = 0; @@ -570,9 +570,12 @@ int ACLCheckCommandPerm(client *c) { break; } } - if (!match) return ACL_DENIED_KEY; + if (!match) { + getKeysFreeResult(keyidx); + return ACL_DENIED_KEY; + } } - getKeysFreeResult(keyidx); + if (keyidx) getKeysFreeResult(keyidx); } /* If we survived all the above checks, the user can execute the