Fix client flags to be int64 in module.c

currently there's no bug since the flags these functions handle are
always lower than 32bit, but still better fix the type to prevent future
bugs.
This commit is contained in:
Oran Agra 2020-02-06 09:33:20 +02:00 committed by antirez
parent e92983ed3f
commit a98e5a1fc3

View File

@ -714,9 +714,9 @@ void RM_KeyAtPos(RedisModuleCtx *ctx, int pos) {
* flags into the command flags used by the Redis core. * flags into the command flags used by the Redis core.
* *
* It returns the set of flags, or -1 if unknown flags are found. */ * It returns the set of flags, or -1 if unknown flags are found. */
int commandFlagsFromString(char *s) { int64_t commandFlagsFromString(char *s) {
int count, j; int count, j;
int flags = 0; int64_t flags = 0;
sds *tokens = sdssplitlen(s,strlen(s)," ",1,&count); sds *tokens = sdssplitlen(s,strlen(s)," ",1,&count);
for (j = 0; j < count; j++) { for (j = 0; j < count; j++) {
char *t = tokens[j]; char *t = tokens[j];
@ -798,7 +798,7 @@ int commandFlagsFromString(char *s) {
* to authenticate a client. * to authenticate a client.
*/ */
int RM_CreateCommand(RedisModuleCtx *ctx, const char *name, RedisModuleCmdFunc cmdfunc, const char *strflags, int firstkey, int lastkey, int keystep) { int RM_CreateCommand(RedisModuleCtx *ctx, const char *name, RedisModuleCmdFunc cmdfunc, const char *strflags, int firstkey, int lastkey, int keystep) {
int flags = strflags ? commandFlagsFromString((char*)strflags) : 0; int64_t flags = strflags ? commandFlagsFromString((char*)strflags) : 0;
if (flags == -1) return REDISMODULE_ERR; if (flags == -1) return REDISMODULE_ERR;
if ((flags & CMD_MODULE_NO_CLUSTER) && server.cluster_enabled) if ((flags & CMD_MODULE_NO_CLUSTER) && server.cluster_enabled)
return REDISMODULE_ERR; return REDISMODULE_ERR;