From 14eb593af3c41ea439f01d34aaae497d8420f316 Mon Sep 17 00:00:00 2001 From: Ruben Garcia Azuara Date: Tue, 6 Apr 2010 19:39:41 +0200 Subject: [PATCH] Fixed solaris compilation warning and ignore case at host parameter. - Suppress compilation warning in solaris caused by a comma at the end of the last value. - Ignore case at host parameter in config file Signed-off-by: Ruben Garcia Azuara Signed-off-by: Andreas Schneider --- include/libssh/libssh.h | 6 +++--- include/libssh/misc.h | 1 + libssh/config.c | 4 +++- libssh/keyfiles.c | 30 +----------------------------- libssh/misc.c | 19 +++++++++++++++++++ 5 files changed, 27 insertions(+), 33 deletions(-) diff --git a/include/libssh/libssh.h b/include/libssh/libssh.h index 462be335..1968d095 100644 --- a/include/libssh/libssh.h +++ b/include/libssh/libssh.h @@ -165,7 +165,7 @@ enum ssh_requests_e { SSH_REQUEST_CHANNEL_OPEN, SSH_REQUEST_CHANNEL, SSH_REQUEST_SERVICE, - SSH_REQUEST_GLOBAL, + SSH_REQUEST_GLOBAL }; enum ssh_channel_type_e { @@ -183,7 +183,7 @@ enum ssh_channel_requests_e { SSH_CHANNEL_REQUEST_SHELL, SSH_CHANNEL_REQUEST_ENV, SSH_CHANNEL_REQUEST_SUBSYSTEM, - SSH_CHANNEL_REQUEST_WINDOW_CHANGE, + SSH_CHANNEL_REQUEST_WINDOW_CHANGE }; enum ssh_publickey_state_e { @@ -204,7 +204,7 @@ enum ssh_server_known_e { SSH_SERVER_KNOWN_OK, SSH_SERVER_KNOWN_CHANGED, SSH_SERVER_FOUND_OTHER, - SSH_SERVER_FILE_NOT_FOUND, + SSH_SERVER_FILE_NOT_FOUND }; #ifndef MD5_DIGEST_LEN diff --git a/include/libssh/misc.h b/include/libssh/misc.h index ddd72fe7..d9bfccb4 100644 --- a/include/libssh/misc.h +++ b/include/libssh/misc.h @@ -50,6 +50,7 @@ struct ssh_iterator *ssh_list_get_iterator(const struct ssh_list *list); int ssh_list_append(struct ssh_list *list, const void *data); int ssh_list_prepend(struct ssh_list *list, const void *data); void ssh_list_remove(struct ssh_list *list, struct ssh_iterator *iterator); +char *ssh_lowercase(const char* str); const void *_ssh_list_pop_head(struct ssh_list *list); diff --git a/libssh/config.c b/libssh/config.c index e3a00ca6..beb21fc5 100644 --- a/libssh/config.c +++ b/libssh/config.c @@ -183,12 +183,14 @@ static int ssh_config_parse_line(ssh_session session, const char *line, switch (opcode) { case SOC_HOST: *parsing = 0; + char* lowerhost = (session->host) ? ssh_lowercase(session->host) : NULL; for (p = ssh_config_get_str(&s, NULL); p && *p; p = ssh_config_get_str(&s, NULL)) { - if (match_hostname(session->host, p, strlen(p))) { + if (match_hostname(lowerhost, p, strlen(p))) { *parsing = 1; } } + SAFE_FREE(lowerhost); break; case SOC_HOSTNAME: p = ssh_config_get_str(&s, NULL); diff --git a/libssh/keyfiles.c b/libssh/keyfiles.c index 663d508f..e09de675 100644 --- a/libssh/keyfiles.c +++ b/libssh/keyfiles.c @@ -1230,34 +1230,6 @@ static int alldigits(const char *s) { * @{ */ -/** - * @internal - * - * @brief Lowercase a string. - * - * @param[in] str The string to lowercase. - * - * @return The malloced lowered string or NULL on error. - */ -static char *lowercase(const char* str) { - char *new, *p; - - if (str == NULL) { - return NULL; - } - - new = strdup(str); - if (new == NULL) { - return NULL; - } - - for (p = new; *p; p++) { - *p = tolower(*p); - } - - return new; -} - /** * @internal * @@ -1627,7 +1599,7 @@ int ssh_is_server_known(ssh_session session) { return SSH_SERVER_ERROR; } - host = lowercase(session->host); + host = ssh_lowercase(session->host); if (host == NULL) { ssh_set_error(session, SSH_FATAL, "Not enough space!"); leave_function(); diff --git a/libssh/misc.c b/libssh/misc.c index 8ca37646..4489eb69 100644 --- a/libssh/misc.c +++ b/libssh/misc.c @@ -121,6 +121,25 @@ int gettimeofday(struct timeval *__p, void *__t) { #define NSS_BUFLEN_PASSWD 4096 #endif +char *ssh_lowercase(const char* str) { + char *new, *p; + + if (str == NULL) { + return NULL; + } + + new = strdup(str); + if (new == NULL) { + return NULL; + } + + for (p = new; *p; p++) { + *p = tolower(*p); + } + + return new; +} + char *ssh_get_user_home_dir(void) { char *szPath = NULL; struct passwd pwd;