From e26df26571005ffd8f6df2069cf08c042de126b5 Mon Sep 17 00:00:00 2001 From: Pekka Riikonen Date: Sat, 15 Sep 2001 10:14:35 +0000 Subject: [PATCH] updates. --- apps/silcd/command.c | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/apps/silcd/command.c b/apps/silcd/command.c index 2828d81b..0125c55e 100644 --- a/apps/silcd/command.c +++ b/apps/silcd/command.c @@ -5114,18 +5114,24 @@ SILC_SERVER_CMD_FUNC(getkey) } /* The client is locally connected, just get the public key and - send it back. */ - tmp = silc_pkcs_public_key_encode(client->data.public_key, &tmp_len); - pk = silc_buffer_alloc(4 + tmp_len); - silc_buffer_pull_tail(pk, SILC_BUFFER_END(pk)); - silc_buffer_format(pk, - SILC_STR_UI_SHORT(tmp_len), - SILC_STR_UI_SHORT(SILC_SKE_PK_TYPE_SILC), - SILC_STR_UI_XNSTRING(tmp, tmp_len), - SILC_STR_END); - silc_free(tmp); - pkdata = pk->data; - pklen = pk->len; + send it back. If they key does not exist then do not send it, + send just OK reply */ + if (!client->data.public_key) { + pkdata = NULL; + pklen = 0; + } else { + tmp = silc_pkcs_public_key_encode(client->data.public_key, &tmp_len); + pk = silc_buffer_alloc(4 + tmp_len); + silc_buffer_pull_tail(pk, SILC_BUFFER_END(pk)); + silc_buffer_format(pk, + SILC_STR_UI_SHORT(tmp_len), + SILC_STR_UI_SHORT(SILC_SKE_PK_TYPE_SILC), + SILC_STR_UI_XNSTRING(tmp, tmp_len), + SILC_STR_END); + silc_free(tmp); + pkdata = pk->data; + pklen = pk->len; + } } else if (id_type == SILC_ID_SERVER) { server_id = silc_id_payload_get_id(idp); @@ -5183,7 +5189,7 @@ SILC_SERVER_CMD_FUNC(getkey) pk = silc_buffer_alloc(4 + tmp_len); silc_buffer_pull_tail(pk, SILC_BUFFER_END(pk)); silc_buffer_format(pk, - SILC_STR_UI_SHORT(tmp_len), + SILC_STR_UI_SHORT(tmp_len), SILC_STR_UI_SHORT(SILC_SKE_PK_TYPE_SILC), SILC_STR_UI_XNSTRING(tmp, tmp_len), SILC_STR_END); -- 2.24.0