projects
/
silc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge commit 'origin/silc.1.1.branch'
[silc.git]
/
lib
/
silcclient
/
command.c
diff --git
a/lib/silcclient/command.c
b/lib/silcclient/command.c
index abc94ef873da41bcb5bde3bc0fa31d48435c9ff8..b5827f22819405d28285b296fdb10e15997d93c9 100644
(file)
--- a/
lib/silcclient/command.c
+++ b/
lib/silcclient/command.c
@@
-411,6
+411,7
@@
SilcUInt16 silc_client_command_call(SilcClient client,
SilcUInt32 argc = 0;
unsigned char **argv = NULL;
SilcUInt32 *argv_lens = NULL, *argv_types = NULL;
SilcUInt32 argc = 0;
unsigned char **argv = NULL;
SilcUInt32 *argv_lens = NULL, *argv_types = NULL;
+ SilcUInt16 cmd_ident;
SilcClientCommand command;
SilcClientCommandContext cmd;
char *arg;
SilcClientCommand command;
SilcClientCommandContext cmd;
char *arg;
@@
-480,7
+481,7
@@
SilcUInt16 silc_client_command_call(SilcClient client,
cmd->argv = argv;
cmd->argv_lens = argv_lens;
cmd->argv_types = argv_types;
cmd->argv = argv;
cmd->argv_lens = argv_lens;
cmd->argv_types = argv_types;
- cmd->cmd_ident = silc_client_cmd_ident(conn);
+ cmd
_ident = cmd
->cmd_ident = silc_client_cmd_ident(conn);
cmd->called = TRUE;
cmd->verbose = TRUE;
silc_list_init(cmd->reply_callbacks,
cmd->called = TRUE;
cmd->verbose = TRUE;
silc_list_init(cmd->reply_callbacks,
@@
-492,7
+493,7
@@
SilcUInt16 silc_client_command_call(SilcClient client,
silc_client_command_destructor, NULL, FALSE);
silc_fsm_start_sync(&cmd->thread, command->command);
silc_client_command_destructor, NULL, FALSE);
silc_fsm_start_sync(&cmd->thread, command->command);
- return cmd
->cmd
_ident;
+ return cmd_ident;
}
/* Generic function to send any command. The arguments must be sent already
}
/* Generic function to send any command. The arguments must be sent already
@@
-731,9
+732,8
@@
SILC_FSM_STATE(silc_client_command_whois)
}
if (nick) {
}
if (nick) {
- silc_client_nickname_parse(client, conn, cmd->argv[1], &nickname);
- if (!nickname)
- nickname = strdup(cmd->argv[1]);
+ if (!silc_client_nickname_parse(client, conn, cmd->argv[1], &nickname))
+ goto out;
}
/* Send command */
}
/* Send command */
@@
-1051,7
+1051,10
@@
SILC_FSM_STATE(silc_client_command_invite)
/* Parse the typed nickname. */
if (cmd->argc == 3) {
if (cmd->argv[2][0] != '+' && cmd->argv[2][0] != '-') {
/* Parse the typed nickname. */
if (cmd->argc == 3) {
if (cmd->argv[2][0] != '+' && cmd->argv[2][0] != '-') {
- silc_client_nickname_parse(client, conn, cmd->argv[2], &nickname);
+ if (!silc_client_nickname_parse(client, conn, cmd->argv[2], &nickname)) {
+ silc_client_unref_channel(client, conn, channel);
+ goto out;
+ }
/* Find client entry */
clients = silc_client_get_clients_local(client, conn, cmd->argv[2],
/* Find client entry */
clients = silc_client_get_clients_local(client, conn, cmd->argv[2],
@@
-2120,7
+2123,8
@@
SILC_FSM_STATE(silc_client_command_cumode)
}
/* Parse the typed nickname. */
}
/* Parse the typed nickname. */
- silc_client_nickname_parse(client, conn, cmd->argv[3], &nickname);
+ if (!silc_client_nickname_parse(client, conn, cmd->argv[3], &nickname))
+ goto out;
/* Find client entry */
clients = silc_client_get_clients_local(client, conn, cmd->argv[3], FALSE);
/* Find client entry */
clients = silc_client_get_clients_local(client, conn, cmd->argv[3], FALSE);