diff options
-rw-r--r-- | include/libssh/libssh.h | 6 | ||||
-rw-r--r-- | include/libssh/misc.h | 1 | ||||
-rw-r--r-- | libssh/config.c | 4 | ||||
-rw-r--r-- | libssh/keyfiles.c | 30 | ||||
-rw-r--r-- | 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 @@ -1233,34 +1233,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 - * * @brief Free a token array. */ static void tokens_free(char **tokens) { @@ -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; |