/* Take all ID's from the command packet */
if (argc > 3) {
- for (k = 1, i = 4; i < argc; i++) {
+ for (k = 1, i = 4; i < argc + 1; i++) {
tmp = silc_argument_get_arg_type(cmd->args, i, &len);
if (tmp) {
*client_id = silc_realloc(*client_id, sizeof(**client_id) *
(*client_id_count + 1));
(*client_id)[k] = silc_id_payload_parse_id(tmp, len);
if ((*client_id)[k] == NULL) {
- for (i = 0; i < k; i++)
+ /* Cleanup all and fail */
+ for (i = 0; i < *client_id_count; i++)
silc_free((*client_id)[i]);
silc_free(*client_id);
return FALSE;
for (i = 0; i < clients_count; i++) {
entry = clients[i];
- if (!entry->nickname || !entry->username || !entry->userinfo) {
+ if (!entry->nickname || !entry->username) {
SilcBuffer tmpbuf;
unsigned short old_ident;
if (clients_count > 1 && i == clients_count - 1)
status = SILC_STATUS_LIST_END;
+ /* Sanity check, however these should never fail. However, as
+ this sanity check has been added here they have failed. */
+ if (!entry->nickname || !entry->username)
+ continue;
+
/* Send WHOIS reply */
idp = silc_id_payload_encode(entry->id, SILC_ID_CLIENT);
tmp = silc_argument_get_first_arg(cmd->args, NULL);
memset(uh, 0, sizeof(uh));
memset(nh, 0, sizeof(nh));
-
+
strncat(nh, entry->nickname, strlen(entry->nickname));
if (!strchr(entry->nickname, '@')) {
strncat(nh, "@", 1);
mandatory fields that WHOIS command reply requires. Check for these and
make query from the server who owns the client if some fields are
missing. */
- if (server->server_type == SILC_ROUTER &&
- !silc_server_command_whois_check(cmd, clients, clients_count)) {
+ if (!silc_server_command_whois_check(cmd, clients, clients_count)) {
ret = -1;
goto out;
}
mandatory fields that WHOIS command reply requires. Check for these and
make query from the server who owns the client if some fields are
missing. */
- if (server->server_type == SILC_ROUTER &&
- !silc_server_command_whois_check(cmd, clients, clients_count)) {
+ if (!silc_server_command_whois_check(cmd, clients, clients_count)) {
ret = -1;
goto out;
}
/* Check that all mandatory fields are present and request those data
from the server who owns the client if necessary. */
- if (!cmd->pending && server->server_type == SILC_ROUTER &&
+ if (!cmd->pending &&
!silc_server_command_identify_check(cmd, clients, clients_count)) {
ret = -1;
goto out;
/* Check that all mandatory fields are present and request those data
from the server who owns the client if necessary. */
- if (!cmd->pending && server->server_type == SILC_ROUTER &&
+ if (!cmd->pending &&
!silc_server_command_identify_check(cmd, clients, clients_count)) {
ret = -1;
goto out;
silc_server_packet_send(server,
cmd->server->router->connection,
SILC_PACKET_CHANNEL_KEY, 0, packet->data,
- packet->len, TRUE);
+ packet->len, FALSE);
} else {
}