[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] Check system known_hosts file
[Thread Prev] | [Thread Next]
- Subject: [PATCH] Check system known_hosts file
- From: "Tomas Trnka" <tomastrnka@xxxxxxx>
- Reply-to: libssh@xxxxxxxxxx
- Date: Fri, 12 Jul 2013 12:10:50 +0200
- To: libssh@xxxxxxxxxx
Hello, this short patch makes libssh check the /etc/ssh/known_hosts file before the per-user ~/.ssh/known_hosts file, making libssh behave the same as OpenSSH client. Tested only on Linux, but it shouldn't influence Windows at all, as the fopen("/etc/ssh/known_hosts") will always fail and per-user configuration will be checked right away. If the superfluous fopen is a concern, the system known_hosts check can be easily disabled: #ifndef WIN32 const char *current_knownhosts = "/etc/ssh/ssh_known_hosts"; #else const char *current_knownhosts = session->knownhosts; #endif Signed-off-by: Tomáš Trnka <tomastrnka@xxxxxxx> -- diff '--exclude=*~' -u -r libssh-0.5.4/src/known_hosts.c libssh-0.5.4-system-known_hosts/src/known_hosts.c --- libssh-0.5.4/src/known_hosts.c 2013-01-22 11:38:30.000000000 +0100 +++ libssh-0.5.4-system-known_hosts/src/known_hosts.c 2013-03-11 14:20:42.593563301 +0100 @@ -419,6 +419,7 @@ const char *type; int match; int ret = SSH_SERVER_NOT_KNOWN; + const char *current_knownhosts = "/etc/ssh/ssh_known_hosts"; enter_function(); @@ -456,11 +457,22 @@ do { tokens = ssh_get_knownhost_line(session, &file, - session->knownhosts, &type); + current_knownhosts, &type); - /* End of file, return the current state */ + /* End of file */ if (tokens == NULL) { - break; + /* Checking system known_hosts file done, check user known_hosts now */ + if (current_knownhosts != session->knownhosts) { + current_knownhosts = session->knownhosts; + if (file != NULL) { + fclose(file); + } + file = NULL; + continue; + } else { + /* Both files checked, return current state */ + break; + } } match = match_hashed_host(session, host, tokens[0]); if (match == 0){
Re: [PATCH] Check system known_hosts file | Andreas Schneider <asn@xxxxxxxxxxxxxx> |