diff options
author | antirez <antirez@gmail.com> | 2019-01-16 13:29:04 +0100 |
---|---|---|
committer | antirez <antirez@gmail.com> | 2019-01-16 13:29:04 +0100 |
commit | 0db42d4ba8148a1e493f2da208d4bcf509716870 (patch) | |
tree | 8ac24aa0b51bb8990523b0665c0d319038a86985 | |
parent | ff92c069475bd6f0ebbaca009ad3168c9d359851 (diff) | |
download | redis-0db42d4ba8148a1e493f2da208d4bcf509716870.tar.gz |
ACL: implement the key match opcode in ACLSetUser().
-rw-r--r-- | src/acl.c | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -203,6 +203,12 @@ int ACLSetUser(user *u, const char *op, ssize_t oplen) { listNode *ln = listSearchKey(u->passwords,delpass); if (ln) listDelNode(u->passwords,ln); sdsfree(delpass); + } else if (op[0] == '~') { + sds newpat = sdsnewlen(op+1,oplen-1); + listNode *ln = listSearchKey(u->patterns,newpat); + /* Avoid re-adding the same pattern multiple times. */ + if (ln == NULL) listAddNodeTail(u->patterns,newpat); + u->flags &= ~USER_FLAG_ALLKEYS; } else { return C_ERR; } |