From: Pekka Riikonen Date: Fri, 22 Mar 2002 11:27:54 +0000 (+0000) Subject: Fixed the MAX_ID_LEN #define, and the silc_id_id2str and X-Git-Tag: silc.client.0.8.3~5 X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=commitdiff_plain;h=35173748eeb0b3a17e318fdec39fa83841d41149 Fixed the MAX_ID_LEN #define, and the silc_id_id2str and silc_id_str2id to support IPv6. --- diff --git a/CHANGES b/CHANGES index 673ac8c1..9560b47a 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,13 @@ +Fri Mar 22 12:25:58 CET 2002 Pekka Riikonen + + * Fixed the SILC_PACKET_MAX_ID_LEN to actually be the max + ID length. It ignored that ID can be IPv6 based as well. + Affected file lib/silccore/silcpacket.h. + + * Fixed the silc_id_id2str and silc_id_str2id to take the + IPv6 address offset's into consideration. Affecte file is + lib/silccore/silcid.c. + Thu Mar 21 20:44:13 EET 2002 Pekka Riikonen * Fixed the internal Unix scheduler functions to check for diff --git a/lib/silccore/silcid.c b/lib/silccore/silcid.c index 87040063..a46892c1 100644 --- a/lib/silccore/silcid.c +++ b/lib/silccore/silcid.c @@ -215,8 +215,8 @@ unsigned char *silc_id_id2str(const void *id, SilcIdType type) if (!ret_id) return NULL; memcpy(ret_id, server_id->ip.data, server_id->ip.data_len); - SILC_PUT16_MSB(server_id->port, &ret_id[4]); - SILC_PUT16_MSB(server_id->rnd, &ret_id[6]); + SILC_PUT16_MSB(server_id->port, &ret_id[server_id->ip.data_len]); + SILC_PUT16_MSB(server_id->rnd, &ret_id[server_id->ip.data_len + 2]); return ret_id; break; case SILC_ID_CLIENT: @@ -225,8 +225,9 @@ unsigned char *silc_id_id2str(const void *id, SilcIdType type) if (!ret_id) return NULL; memcpy(ret_id, client_id->ip.data, client_id->ip.data_len); - ret_id[4] = client_id->rnd; - memcpy(&ret_id[5], client_id->hash, CLIENTID_HASH_LEN); + ret_id[client_id->ip.data_len] = client_id->rnd; + memcpy(&ret_id[client_id->ip.data_len + 1], client_id->hash, + CLIENTID_HASH_LEN); return ret_id; break; case SILC_ID_CHANNEL: @@ -235,8 +236,8 @@ unsigned char *silc_id_id2str(const void *id, SilcIdType type) if (!ret_id) return NULL; memcpy(ret_id, channel_id->ip.data, channel_id->ip.data_len); - SILC_PUT16_MSB(channel_id->port, &ret_id[4]); - SILC_PUT16_MSB(channel_id->rnd, &ret_id[6]); + SILC_PUT16_MSB(channel_id->port, &ret_id[channel_id->ip.data_len]); + SILC_PUT16_MSB(channel_id->rnd, &ret_id[channel_id->ip.data_len + 2]); return ret_id; break; } @@ -264,8 +265,8 @@ void *silc_id_str2id(const unsigned char *id, SilcUInt32 id_len, SilcIdType type memcpy(server_id->ip.data, id, (id_len > ID_SERVER_LEN_PART + 4 ? 16 : 4)); server_id->ip.data_len = (id_len > ID_SERVER_LEN_PART + 4 ? 16 : 4); - SILC_GET16_MSB(server_id->port, &id[4]); - SILC_GET16_MSB(server_id->rnd, &id[6]); + SILC_GET16_MSB(server_id->port, &id[server_id->ip.data_len]); + SILC_GET16_MSB(server_id->rnd, &id[server_id->ip.data_len + 2]); return server_id; } break; @@ -283,8 +284,9 @@ void *silc_id_str2id(const unsigned char *id, SilcUInt32 id_len, SilcIdType type memcpy(client_id->ip.data, id, (id_len > ID_CLIENT_LEN_PART + 4 ? 16 : 4)); client_id->ip.data_len = (id_len > ID_CLIENT_LEN_PART + 4 ? 16 : 4); - client_id->rnd = id[4]; - memcpy(client_id->hash, &id[5], CLIENTID_HASH_LEN); + client_id->rnd = id[client_id->ip.data_len]; + memcpy(client_id->hash, &id[client_id->ip.data_len + 1], + CLIENTID_HASH_LEN); return client_id; } break; @@ -302,8 +304,8 @@ void *silc_id_str2id(const unsigned char *id, SilcUInt32 id_len, SilcIdType type memcpy(channel_id->ip.data, id, (id_len > ID_CHANNEL_LEN_PART + 4 ? 16 : 4)); channel_id->ip.data_len = (id_len > ID_CHANNEL_LEN_PART + 4 ? 16 : 4); - SILC_GET16_MSB(channel_id->port, &id[4]); - SILC_GET16_MSB(channel_id->rnd, &id[6]); + SILC_GET16_MSB(channel_id->port, &id[channel_id->ip.data_len]); + SILC_GET16_MSB(channel_id->rnd, &id[channel_id->ip.data_len + 2]); return channel_id; } break; diff --git a/lib/silccore/silcpacket.h b/lib/silccore/silcpacket.h index 6c855225..669a4e89 100644 --- a/lib/silccore/silcpacket.h +++ b/lib/silccore/silcpacket.h @@ -55,7 +55,7 @@ #define SILC_PACKET_MAX_LEN 0xffff /* Maximum length of ID */ -#define SILC_PACKET_MAX_ID_LEN 16 +#define SILC_PACKET_MAX_ID_LEN 28 /****d* silccore/SilcPacketAPI/SilcPacketType *