X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcclient%2Fcommand.c;h=a50ab52304b83e575d2dc274cea5d8e75e038170;hb=f5a51141c5f33b6a816b36fe3adcedb53df818b9;hp=d3220d54e58d9892d6700d57d54e56b6bf9e5f92;hpb=65bb39eb3f473859544469c209b6371e230ac9a2;p=silc.git diff --git a/lib/silcclient/command.c b/lib/silcclient/command.c index d3220d54..a50ab523 100644 --- a/lib/silcclient/command.c +++ b/lib/silcclient/command.c @@ -696,7 +696,7 @@ SILC_FSM_STATE(silc_client_command_whois) SilcAttributeObjPk obj; SilcPublicKey pk; - if (!silc_pkcs_load_public_key(pubkey, &pk)) { + if (!silc_pkcs_load_public_key(pubkey, SILC_PKCS_ANY, &pk)) { SAY(client, conn, SILC_CLIENT_MESSAGE_COMMAND_ERROR, "Could not load public key %s, check the filename", pubkey); @@ -731,9 +731,8 @@ SILC_FSM_STATE(silc_client_command_whois) } 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 */ @@ -1051,7 +1050,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] != '-') { - 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], @@ -1071,7 +1073,7 @@ SILC_FSM_STATE(silc_client_command_invite) action[0] = 0x01; /* Check if it is public key file to be added to invite list */ - silc_pkcs_load_public_key(cmd->argv[2] + 1, &pubkey); + silc_pkcs_load_public_key(cmd->argv[2] + 1, SILC_PKCS_ANY, &pubkey); invite = cmd->argv[2]; if (!pubkey) invite++; @@ -1501,6 +1503,7 @@ SILC_FSM_STATE(silc_client_command_join) pubkey, privkey, pubdata, sizeof(pubdata), conn->internal->sha1hash, + client->rng, conn->local_id, SILC_ID_CLIENT, silc_client_command_join_signed, @@ -1989,7 +1992,8 @@ SILC_FSM_STATE(silc_client_command_cmode) for (k = 3; k < cmd->argc; k++) { if (cmd->argv[k][0] == '+') chadd = TRUE; - if (!silc_pkcs_load_public_key(cmd->argv[k] + 1, &chpk)) { + if (!silc_pkcs_load_public_key(cmd->argv[k] + 1, SILC_PKCS_ANY, + &chpk)) { SAY(conn->client, conn, SILC_CLIENT_MESSAGE_COMMAND_ERROR, "Could not load public key %s, check the filename", cmd->argv[k]); @@ -2118,7 +2122,8 @@ SILC_FSM_STATE(silc_client_command_cumode) } /* 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); @@ -2564,7 +2569,7 @@ SILC_FSM_STATE(silc_client_command_ban) action[0] = 0x01; /* Check if it is public key file to be added to invite list */ - silc_pkcs_load_public_key(cmd->argv[2] + 1, &pubkey); + silc_pkcs_load_public_key(cmd->argv[2] + 1, SILC_PKCS_ANY, &pubkey); ban = cmd->argv[2]; if (!pubkey) ban++; @@ -2664,7 +2669,7 @@ SILC_FSM_STATE(silc_client_command_watch) SilcPublicKey pk; SilcBuffer buffer; - if (!silc_pkcs_load_public_key(pubkey, &pk)) { + if (!silc_pkcs_load_public_key(pubkey, SILC_PKCS_ANY, &pk)) { SAY(conn->client, conn, SILC_CLIENT_MESSAGE_COMMAND_ERROR, "Could not load public key %s, check the filename", pubkey); COMMAND_ERROR(SILC_STATUS_ERR_NOT_ENOUGH_PARAMS);