diff options
author | antirez <antirez@gmail.com> | 2019-01-18 13:24:53 +0100 |
---|---|---|
committer | antirez <antirez@gmail.com> | 2019-01-21 17:14:20 +0100 |
commit | f3cdc88897210b792ae8ea4e950223e13c6d9156 (patch) | |
tree | 3bc7229d2af23e6cb9f0c6f15497c6354e1f3e59 | |
parent | 7c53e5bdc45e0faf0087e4d0d2abe3dc5c76071e (diff) | |
download | redis-f3cdc88897210b792ae8ea4e950223e13c6d9156.tar.gz |
ACL: handle command IDs in case insensitive way.
-rw-r--r-- | src/acl.c | 13 |
1 files changed, 10 insertions, 3 deletions
@@ -284,10 +284,17 @@ unsigned long ACLGetCommandID(const char *cmdname) { static rax *map = NULL; static unsigned long nextid = 0; + sds lowername = sdsnew(cmdname); + sdstolower(lowername); if (map == NULL) map = raxNew(); - void *id = raxFind(map,(unsigned char*)cmdname,strlen(cmdname)); - if (id != raxNotFound) return (unsigned long)id; - raxInsert(map,(unsigned char*)cmdname,strlen(cmdname),(void*)nextid,NULL); + void *id = raxFind(map,(unsigned char*)lowername,sdslen(lowername)); + if (id != raxNotFound) { + sdsfree(lowername); + return (unsigned long)id; + } + raxInsert(map,(unsigned char*)lowername,strlen(lowername), + (void*)nextid,NULL); + sdsfree(lowername); return nextid++; } |