summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorantirez <antirez@gmail.com>2019-01-18 13:24:53 +0100
committerantirez <antirez@gmail.com>2019-01-21 17:14:20 +0100
commitf3cdc88897210b792ae8ea4e950223e13c6d9156 (patch)
tree3bc7229d2af23e6cb9f0c6f15497c6354e1f3e59
parent7c53e5bdc45e0faf0087e4d0d2abe3dc5c76071e (diff)
downloadredis-f3cdc88897210b792ae8ea4e950223e13c6d9156.tar.gz
ACL: handle command IDs in case insensitive way.
-rw-r--r--src/acl.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/acl.c b/src/acl.c
index 15b108738..704919589 100644
--- a/src/acl.c
+++ b/src/acl.c
@@ -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++;
}