diff options
author | Andreas Schneider <asn@cryptomilk.org> | 2012-10-12 17:43:32 +0200 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2012-10-12 17:46:37 +0200 |
commit | 95ab34696bbf3948a6c478f18b3e72c71539cd2e (patch) | |
tree | cf8ec8ffb58c221518262460acd28bf1413ae61b /src | |
parent | 82711acd39e38b5f9fb128445dc95e280de9c7b6 (diff) | |
download | libssh-95ab34696bbf3948a6c478f18b3e72c71539cd2e.tar.gz libssh-95ab34696bbf3948a6c478f18b3e72c71539cd2e.tar.xz libssh-95ab34696bbf3948a6c478f18b3e72c71539cd2e.zip |
kex: Use getter functions to access kex arrays.
This should fix the build on OpenIndiana.
Diffstat (limited to 'src')
-rw-r--r-- | src/kex.c | 24 | ||||
-rw-r--r-- | src/options.c | 4 | ||||
-rw-r--r-- | src/server.c | 2 |
3 files changed, 23 insertions, 7 deletions
@@ -89,7 +89,7 @@ static const char *default_methods[] = { }; /* NOTE: This is a fixed API and the index is defined by ssh_kex_types_e */ -const char *supported_methods[] = { +static const char *supported_methods[] = { KEY_EXCHANGE, HOSTKEYS, AES BLOWFISH DES, @@ -104,7 +104,7 @@ const char *supported_methods[] = { }; /* descriptions of the key exchange packet */ -const char *ssh_kex_nums[] = { +static const char *ssh_kex_descriptions[] = { "kex algos", "server host key algo", "encryption client->server", @@ -204,6 +204,22 @@ char **space_tokenize(const char *chain){ return tokens; } +const char *ssh_kex_get_supported_method(uint32_t algo) { + if (algo >= KEX_METHODS_SIZE) { + return NULL; + } + + return supported_methods[algo]; +} + +const char *ssh_kex_get_description(uint32_t algo) { + if (algo >= KEX_METHODS_SIZE) { + return NULL; + } + + return ssh_kex_descriptions[algo]; +} + /* find_matching gets 2 parameters : a list of available objects (available_d), separated by colons,*/ /* and a list of preferred objects (preferred_d) */ /* it will return a strduped pointer on the first preferred object found in the available objects list */ @@ -344,7 +360,7 @@ void ssh_list_kex(ssh_session session, struct ssh_kex_struct *kex) { continue; } ssh_log(session, SSH_LOG_FUNCTIONS, "%s: %s", - ssh_kex_nums[i], kex->methods[i]); + ssh_kex_descriptions[i], kex->methods[i]); } } @@ -385,7 +401,7 @@ int ssh_kex_select_methods (ssh_session session){ session->next_crypto->kex_methods[i]=ssh_find_matching(server->methods[i],client->methods[i]); if(session->next_crypto->kex_methods[i] == NULL && i < SSH_LANG_C_S){ ssh_set_error(session,SSH_FATAL,"kex error : no match for method %s: server [%s], client [%s]", - ssh_kex_nums[i],server->methods[i],client->methods[i]); + ssh_kex_descriptions[i],server->methods[i],client->methods[i]); goto error; } else if ((i >= SSH_LANG_C_S) && (session->next_crypto->kex_methods[i] == NULL)) { /* we can safely do that for languages */ diff --git a/src/options.c b/src/options.c index d2580d8d..898dea62 100644 --- a/src/options.c +++ b/src/options.c @@ -173,7 +173,7 @@ int ssh_options_set_algo(ssh_session session, int algo, if (!verify_existing_algo(algo, list)) { ssh_set_error(session, SSH_REQUEST_DENIED, "Setting method: no algorithm for method \"%s\" (%s)\n", - ssh_kex_nums[algo], list); + ssh_kex_get_description(algo), list); return -1; } @@ -1205,7 +1205,7 @@ static int ssh_bind_options_set_algo(ssh_bind sshbind, int algo, if (!verify_existing_algo(algo, list)) { ssh_set_error(sshbind, SSH_REQUEST_DENIED, "Setting method: no algorithm for method \"%s\" (%s)\n", - ssh_kex_nums[algo], list); + ssh_kex_get_description(algo), list); return -1; } diff --git a/src/server.c b/src/server.c index 8db21b43..c7a37599 100644 --- a/src/server.c +++ b/src/server.c @@ -127,7 +127,7 @@ static int server_set_kex(ssh_session session) { for (i = 0; i < 10; i++) { if ((wanted = session->opts.wanted_methods[i]) == NULL) { - wanted = supported_methods[i]; + wanted = ssh_kex_get_supported_method(i); } server->methods[i] = strdup(wanted); if (server->methods[i] == NULL) { |