From 2a65d397034737650cec5171f03918294ab89c7c Mon Sep 17 00:00:00 2001 From: Pekka Riikonen Date: Wed, 16 Apr 2008 15:53:18 +0300 Subject: [PATCH] Fixed many 64-bit alignment issues from silcd. --- Makefile.ad | 2 +- apps/silcd/command.c | 32 +++++++++++++++++++------------- apps/silcd/server.c | 17 ++++++++++------- apps/silcd/server_util.c | 35 ++++++++++++++++++++--------------- 4 files changed, 50 insertions(+), 36 deletions(-) diff --git a/Makefile.ad b/Makefile.ad index e7dacff6..7dd0be5a 100644 --- a/Makefile.ad +++ b/Makefile.ad @@ -45,7 +45,7 @@ EXTRA_DIST = \ #endif SILC_DIST_CLIENT #ifdef SILC_DIST_SILC libtoolfix \ - CHANGES CREDITS + CREDITS #endif SILC_DIST_SILC #ifdef SILC_DIST_SILC diff --git a/apps/silcd/command.c b/apps/silcd/command.c index f9b723af..c4b0edbe 100644 --- a/apps/silcd/command.c +++ b/apps/silcd/command.c @@ -4,7 +4,7 @@ Author: Pekka Riikonen - Copyright (C) 1997 - 2007 Pekka Riikonen + Copyright (C) 1997 - 2008 Pekka Riikonen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -1051,7 +1051,8 @@ SILC_SERVER_CMD_FUNC(invite) SilcBuffer list, tmp2; SilcBufferStruct alist; unsigned char *tmp, *atype = NULL; - SilcUInt32 len, type, len2; + SilcUInt32 len, len2, ttype; + void *type; SilcUInt16 argc = 0, ident = silc_command_get_ident(cmd->payload); SILC_SERVER_COMMAND_CHECK(SILC_COMMAND_INVITE, cmd, 1, 4); @@ -1163,7 +1164,7 @@ SILC_SERVER_CMD_FUNC(invite) tmp = silc_argument_get_arg_type(cmd->args, 2, &len); silc_hash_table_list(channel->invite_list, &htl); while (silc_hash_table_get(&htl, (void *)&type, (void *)&tmp2)) { - if (type == 3 && !memcmp(tmp2->data, tmp, len)) { + if (SILC_PTR_TO_32(type) == 3 && !memcmp(tmp2->data, tmp, len)) { tmp = NULL; break; } @@ -1252,7 +1253,8 @@ SILC_SERVER_CMD_FUNC(invite) silc_hash_table_list(channel->invite_list, &htl); while (silc_hash_table_get(&htl, (void *)&type, (void *)&tmp2)) list = silc_argument_payload_encode_one(list, tmp2->data, - silc_buffer_len(tmp2), type); + silc_buffer_len(tmp2), + SILC_PTR_TO_32(type)); silc_hash_table_list_reset(&htl); } @@ -1290,16 +1292,16 @@ SILC_SERVER_CMD_FUNC(invite) type = 0; argc = silc_argument_get_arg_num(cmd->args); if (argc == 1) - type = 1; + ttype = 1; if (silc_argument_get_arg_type(cmd->args, 3, &len)) - type = 1; + ttype = 1; /* Send command reply */ tmp = silc_argument_get_arg_type(cmd->args, 1, &len); silc_server_send_command_reply(server, cmd->sock, SILC_COMMAND_INVITE, SILC_STATUS_OK, 0, ident, 2, 2, tmp, len, - 3, type && list ? + 3, ttype && list ? list->data : NULL, type && list ? silc_buffer_len(list) : 0); silc_buffer_free(list); @@ -1828,6 +1830,7 @@ static void silc_server_command_join_channel(SilcServer server, SilcBuffer user_list, mode_list, invite_list, ban_list; SilcUInt16 ident = silc_command_get_ident(cmd->payload); char check[512], check2[512]; + void *plen; SilcBool founder = FALSE; SilcBool resolve; SilcBuffer fkey = NULL, chpklist = NULL; @@ -2144,10 +2147,11 @@ static void silc_server_command_join_channel(SilcServer server, SILC_STR_END); silc_hash_table_list(channel->invite_list, &htl); - while (silc_hash_table_get(&htl, (void *)&tmp_len, (void *)&reply)) + while (silc_hash_table_get(&htl, (void *)&plen, (void *)&reply)) invite_list = silc_argument_payload_encode_one(invite_list, reply->data, - silc_buffer_len(reply), tmp_len); + silc_buffer_len(reply), + SILC_PTR_TO_32(plen)); silc_hash_table_list_reset(&htl); } @@ -2163,10 +2167,11 @@ static void silc_server_command_join_channel(SilcServer server, SILC_STR_END); silc_hash_table_list(channel->ban_list, &htl); - while (silc_hash_table_get(&htl, (void *)&tmp_len, (void *)&reply)) + while (silc_hash_table_get(&htl, (void *)&plen, (void *)&reply)) ban_list = silc_argument_payload_encode_one(ban_list, reply->data, - silc_buffer_len(reply), tmp_len); + silc_buffer_len(reply), + SILC_PTR_TO_32(plen)); silc_hash_table_list_reset(&htl); } @@ -4600,7 +4605,7 @@ SILC_SERVER_CMD_FUNC(ban) SilcUInt32 id_len, len, len2; SilcArgumentPayload args; SilcHashTableList htl; - SilcUInt32 type; + void *type; SilcUInt16 argc = 0, ident = silc_command_get_ident(cmd->payload); SilcBufferStruct blist; @@ -4709,7 +4714,8 @@ SILC_SERVER_CMD_FUNC(ban) silc_hash_table_list(channel->ban_list, &htl); while (silc_hash_table_get(&htl, (void *)&type, (void *)&tmp2)) list = silc_argument_payload_encode_one(list, tmp2->data, - silc_buffer_len(tmp2), type); + silc_buffer_len(tmp2), + SILC_PTR_TO_32(type)); silc_hash_table_list_reset(&htl); } diff --git a/apps/silcd/server.c b/apps/silcd/server.c index 7d5ce4ed..94457699 100644 --- a/apps/silcd/server.c +++ b/apps/silcd/server.c @@ -4,7 +4,7 @@ Author: Pekka Riikonen - Copyright (C) 1997 - 2007 Pekka Riikonen + Copyright (C) 1997 - 2008 Pekka Riikonen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -4135,6 +4135,7 @@ void silc_server_announce_get_inviteban(SilcServer server, { SilcBuffer list, idp, idp2, tmp2; SilcUInt32 type; + void *ptype; SilcHashTableList htl; const unsigned char a[1] = { 0x03 }; @@ -4146,9 +4147,10 @@ void silc_server_announce_get_inviteban(SilcServer server, type = silc_hash_table_count(channel->invite_list); SILC_PUT16_MSB(type, list->data); silc_hash_table_list(channel->invite_list, &htl); - while (silc_hash_table_get(&htl, (void *)&type, (void *)&tmp2)) - list = silc_argument_payload_encode_one(list, tmp2->data, silc_buffer_len(tmp2), - type); + while (silc_hash_table_get(&htl, (void *)&ptype, (void *)&tmp2)) + list = silc_argument_payload_encode_one(list, tmp2->data, + silc_buffer_len(tmp2), + SILC_PTR_TO_32(ptype)); silc_hash_table_list_reset(&htl); idp2 = silc_id_payload_encode(server->id, SILC_ID_SERVER); @@ -4170,9 +4172,10 @@ void silc_server_announce_get_inviteban(SilcServer server, type = silc_hash_table_count(channel->ban_list); SILC_PUT16_MSB(type, list->data); silc_hash_table_list(channel->ban_list, &htl); - while (silc_hash_table_get(&htl, (void *)&type, (void *)&tmp2)) - list = silc_argument_payload_encode_one(list, tmp2->data, silc_buffer_len(tmp2), - type); + while (silc_hash_table_get(&htl, (void *)&ptype, (void *)&tmp2)) + list = silc_argument_payload_encode_one(list, tmp2->data, + silc_buffer_len(tmp2), + SILC_PTR_TO_32(ptype)); silc_hash_table_list_reset(&htl); *ban = diff --git a/apps/silcd/server_util.c b/apps/silcd/server_util.c index 345419a2..1f61876f 100644 --- a/apps/silcd/server_util.c +++ b/apps/silcd/server_util.c @@ -1753,10 +1753,11 @@ SilcBool silc_server_inviteban_match(SilcServer server, SilcHashTable list, SilcUInt8 type, void *check) { unsigned char *tmp = NULL; - SilcUInt32 len = 0, t; + SilcUInt32 len = 0; SilcHashTableList htl; SilcBuffer entry, idp = NULL, pkp = NULL; SilcBool ret = FALSE; + void *t; SILC_LOG_DEBUG(("Matching invite/ban")); @@ -1786,13 +1787,14 @@ SilcBool silc_server_inviteban_match(SilcServer server, SilcHashTable list, /* Compare the list */ silc_hash_table_list(list, &htl); while (silc_hash_table_get(&htl, (void *)&t, (void *)&entry)) { - if (type == t) { + if (type == SILC_PTR_TO_32(t)) { if (type == 1) { if (silc_string_match(entry->data, tmp)) { ret = TRUE; break; } - } else if (!memcmp(entry->data, tmp, len)) { + } else if (silc_buffer_len(entry) == len && + !memcmp(entry->data, tmp, len)) { ret = TRUE; break; } @@ -1816,6 +1818,7 @@ SilcBool silc_server_inviteban_process(SilcServer server, { unsigned char *tmp; SilcUInt32 type, len; + void *ptype; SilcBuffer tmp2; SilcHashTableList htl; @@ -1842,8 +1845,9 @@ SilcBool silc_server_inviteban_process(SilcServer server, /* Check if the string is added already */ silc_hash_table_list(list, &htl); - while (silc_hash_table_get(&htl, (void *)&type, (void *)&tmp2)) { - if (type == 1 && silc_string_match(tmp2->data, tmp)) { + while (silc_hash_table_get(&htl, (void *)&ptype, (void *)&tmp2)) { + if (SILC_PTR_TO_32(ptype) == 1 && + silc_string_match(tmp2->data, tmp)) { tmp = NULL; break; } @@ -1873,8 +1877,8 @@ SilcBool silc_server_inviteban_process(SilcServer server, /* Check if the public key is in the list already */ silc_hash_table_list(list, &htl); - while (silc_hash_table_get(&htl, (void *)&type, (void *)&tmp2)) { - if (type == 2 && !memcmp(tmp2->data, tmp, len)) { + while (silc_hash_table_get(&htl, (void *)&ptype, (void *)&tmp2)) { + if (SILC_PTR_TO_32(ptype) == 2 && !memcmp(tmp2->data, tmp, len)) { tmp = NULL; break; } @@ -1893,8 +1897,8 @@ SilcBool silc_server_inviteban_process(SilcServer server, /* Check if the ID is in the list already */ silc_hash_table_list(list, &htl); - while (silc_hash_table_get(&htl, (void *)&type, (void *)&tmp2)) { - if (type == 3 && !memcmp(tmp2->data, tmp, len)) { + while (silc_hash_table_get(&htl, (void *)&ptype, (void *)&tmp2)) { + if (SILC_PTR_TO_32(ptype) == 3 && !memcmp(tmp2->data, tmp, len)) { tmp = NULL; break; } @@ -1932,8 +1936,9 @@ SilcBool silc_server_inviteban_process(SilcServer server, /* Delete from the list */ silc_hash_table_list(list, &htl); - while (silc_hash_table_get(&htl, (void *)&type, (void *)&tmp2)) { - if (type == 1 && silc_string_match(tmp2->data, tmp)) { + while (silc_hash_table_get(&htl, (void *)&ptype, (void *)&tmp2)) { + if (SILC_PTR_TO_32(ptype) == 1 && + silc_string_match(tmp2->data, tmp)) { silc_hash_table_del_by_context(list, (void *)1, tmp2); break; } @@ -1953,8 +1958,8 @@ SilcBool silc_server_inviteban_process(SilcServer server, /* Delete from the invite list */ silc_hash_table_list(list, &htl); - while (silc_hash_table_get(&htl, (void *)&type, (void *)&tmp2)) { - if (type == 2 && !memcmp(tmp2->data, tmp, len)) { + while (silc_hash_table_get(&htl, (void *)&ptype, (void *)&tmp2)) { + if (SILC_PTR_TO_32(ptype) == 2 && !memcmp(tmp2->data, tmp, len)) { silc_hash_table_del_by_context(list, (void *)2, tmp2); break; } @@ -1966,8 +1971,8 @@ SilcBool silc_server_inviteban_process(SilcServer server, /* Delete from the invite list */ silc_hash_table_list(list, &htl); - while (silc_hash_table_get(&htl, (void *)&type, (void *)&tmp2)) { - if (type == 3 && !memcmp(tmp2->data, tmp, len)) { + while (silc_hash_table_get(&htl, (void *)&ptype, (void *)&tmp2)) { + if (SILC_PTR_TO_32(ptype) == 3 && !memcmp(tmp2->data, tmp, len)) { silc_hash_table_del_by_context(list, (void *)3, tmp2); break; } -- 2.24.0