command: don't pass permission as pointer where appropriate
Some functions don't want to modify a client's permission set. Pass the permissions to them by value, not by reference.
This commit is contained in:
parent
18fc10a926
commit
bf6994d8e3
@ -153,7 +153,7 @@ static const char check_non_negative[] = "\"%s\" is not an integer >= 0";
|
|||||||
static const char *current_command;
|
static const char *current_command;
|
||||||
static int command_listNum;
|
static int command_listNum;
|
||||||
|
|
||||||
static CommandEntry *getCommandEntryFromString(char *string, int *permission);
|
static CommandEntry *getCommandEntryFromString(char *string, int permission);
|
||||||
|
|
||||||
static List *commandList;
|
static List *commandList;
|
||||||
|
|
||||||
@ -833,7 +833,7 @@ static int listHandleUpdate(struct client *client,
|
|||||||
insertInList(pathList, "", NULL);
|
insertInList(pathList, "", NULL);
|
||||||
|
|
||||||
if (next)
|
if (next)
|
||||||
nextCmd = getCommandEntryFromString(next->data, permission);
|
nextCmd = getCommandEntryFromString(next->data, *permission);
|
||||||
|
|
||||||
if (cmd != nextCmd) {
|
if (cmd != nextCmd) {
|
||||||
int ret = updateInit(pathList);
|
int ret = updateInit(pathList);
|
||||||
@ -1418,7 +1418,7 @@ static int checkArgcAndPermission(CommandEntry * cmd, struct client *client,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static CommandEntry *getCommandEntryAndCheckArgcAndPermission(struct client *client,
|
static CommandEntry *getCommandEntryAndCheckArgcAndPermission(struct client *client,
|
||||||
int *permission,
|
int permission,
|
||||||
int argc,
|
int argc,
|
||||||
char *argv[])
|
char *argv[])
|
||||||
{
|
{
|
||||||
@ -1439,14 +1439,14 @@ static CommandEntry *getCommandEntryAndCheckArgcAndPermission(struct client *cli
|
|||||||
|
|
||||||
current_command = cmd->cmd;
|
current_command = cmd->cmd;
|
||||||
|
|
||||||
if (checkArgcAndPermission(cmd, client, *permission, argc, argv) < 0) {
|
if (checkArgcAndPermission(cmd, client, permission, argc, argv) < 0) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return cmd;
|
return cmd;
|
||||||
}
|
}
|
||||||
|
|
||||||
static CommandEntry *getCommandEntryFromString(char *string, int *permission)
|
static CommandEntry *getCommandEntryFromString(char *string, int permission)
|
||||||
{
|
{
|
||||||
CommandEntry *cmd;
|
CommandEntry *cmd;
|
||||||
char *argv[COMMAND_ARGV_MAX] = { NULL };
|
char *argv[COMMAND_ARGV_MAX] = { NULL };
|
||||||
@ -1475,7 +1475,7 @@ static int processCommandInternal(struct client *client,
|
|||||||
if (argc == 0)
|
if (argc == 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if ((cmd = getCommandEntryAndCheckArgcAndPermission(client, permission,
|
if ((cmd = getCommandEntryAndCheckArgcAndPermission(client, *permission,
|
||||||
argc, argv))) {
|
argc, argv))) {
|
||||||
if (!cmdnode || !cmd->listHandler) {
|
if (!cmdnode || !cmd->listHandler) {
|
||||||
ret = cmd->handler(client, permission, argc, argv);
|
ret = cmd->handler(client, permission, argc, argv);
|
||||||
|
Loading…
Reference in New Issue
Block a user