diff --git a/src/acl.c b/src/acl.c index 20241ea7a..f6e003f62 100644 --- a/src/acl.c +++ b/src/acl.c @@ -580,7 +580,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; @@ -595,9 +595,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