summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* examples: Add no default keys options to ssh_server_forkAlan Dunn2014-03-271-5/+40
| | | | | | | | | | | | It seems useful to be able to run ssh_server_fork without being required to load some key of RSA and DSA keytypes. However, with the current ssh_server_fork, you need to have some keys as some default value is set by default and you can't unset the value for a keytype (e.g. by using NULL as an argument). So the "no default keys" argument turns off the default key assignments. Signed-off-by: Alan Dunn <amdunn@gmail.com> Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
* doc: Add ECDSA keys to docs, make key docs consistentAlan Dunn2014-03-271-1/+4
| | | | | Signed-off-by: Alan Dunn <amdunn@gmail.com> Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
* options: Allow use of host ECDSA keyAlan Dunn2014-03-272-24/+33
| | | | | Signed-off-by: Alan Dunn <amdunn@gmail.com> Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
* tests: Check the the ecdsa_nid is the same.Andreas Schneider2014-03-271-0/+2
|
* tests: Add test case for bug #147Alan Dunn2014-03-271-0/+34
| | | | | Signed-off-by: Alan Dunn <amdunn@gmail.com> Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
* pki_crypto: Always copy ecdsa_nid into duplicated ECDSA keysAlan Dunn2014-03-121-2/+2
| | | | | | BUG: https://red.libssh.org/issues/147 Signed-off-by: Alan Dunn <amdunn@gmail.com>
* pki: Use SHA-2 for session ID signing with ECDSA keysAlan Dunn2014-03-121-12/+42
| | | | | | | | | Previously, SHA-1 was used always. BUG: https://red.libssh.org/issues/148 Signed-off-by: Alan Dunn <amdunn@gmail.com> Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
* server: silence build warningLuka Perkov2014-03-121-0/+1
| | | | | | | | | | | | | | | The commit fixes this build warning: ==== src/server.c:223:8: warning: ‘privkey’ may be used uninitialized in this function [-Wmaybe-uninitialized] rc = ssh_pki_export_privkey_to_pubkey(*privkey, &pubkey); ^ src/server.c:243:11: note: ‘privkey’ was declared here ssh_key privkey; ==== Signed-off-by: Luka Perkov <luka.perkov@sartura.hr> Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
* packet: log disconnect code in host byte orderJon Simons2014-03-121-13/+19
| | | | Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
* bind: only set bindfd after successful listenJon Simons2014-03-121-1/+2
| | | | | | | | In 'ssh_bind_listen', move setting of 'sshbind->bindfd' to only happen after the listen call: otherwise 'bindfd' can be set to a bogus descriptor for the case that listen fails. Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
* security: fix for vulnerability CVE-2014-0017Aris Adamantiadis2014-03-044-0/+15
| | | | | | | | | | When accepting a new connection, a forking server based on libssh forks and the child process handles the request. The RAND_bytes() function of openssl doesn't reset its state after the fork, but simply adds the current process id (getpid) to the PRNG state, which is not guaranteed to be unique. This can cause several children to end up with same PRNG state which is a security issue.
* examples: Add missing include for stderr.Andreas Schneider2014-02-171-0/+1
| | | | This should fix the build on FreeBSD.
* cmake: Merge server examples.Andreas Schneider2014-02-161-7/+5
|
* examples: Remove old samplesshd-tty.Andreas Schneider2014-02-162-475/+0
|
* examples: Remove old samplesshd.Andreas Schneider2014-02-162-317/+0
|
* examples: Add ssh_server_fork exampleAudrius Butkevicius2014-02-164-0/+648
| | | | | Signed-off-by: Audrius Butkevicius <audrius.butkevicius@gmail.com> Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
* config: Add missing HAVE_LIBUTIL_H define in config.hAudrius Butkevicius2014-02-161-0/+3
| | | | | Signed-off-by: Audrius Butkevicius <audrius.butkevicius@gmail.com> Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
* examples: Add missing include on FreeBSD.Andreas Schneider2014-02-141-0/+3
|
* cmake: Check for libutil.h on FreeBSD.Andreas Schneider2014-02-141-0/+1
|
* pki: Fix build warning about unused variables.Andreas Schneider2014-02-141-2/+2
|
* Add session/channel byte/packet countersAudrius Butkevicius2014-02-128-0/+106
| | | | Signed-off-by: Audrius Butkevicius <audrius.butkevicius@elastichosts.com>
* pki: Fix the build on OpenSolaris.Andreas Schneider2014-02-121-1/+1
|
* pki: Fix memory leak with ecdsa signatures.Andreas Schneider2014-02-111-0/+4
|
* cpack: Ignore obj directory.Andreas Schneider2014-02-101-1/+1
|
* packet: Improve readablity of packet decrypt.Andreas Schneider2014-02-061-6/+7
| | | | | | | After discussion with Aris and it was not obvious enough to understand the issue we decided to refactor it. Reviewd-by: Aris Adamantiadis <aris@0xbadc0de.be>
* packet_crypt: Make packet_{en,de}crypt fail consistently on len == 0Alan Dunn2014-02-061-0/+6
| | | | | | | | | | Right now the behavior of packet_{en,de}crypt on len == 0 depends on the behavior of malloc. Instead, make these consistently fail based on what I assume the desired behavior is due to the first error message in each. Signed-off-by: Alan Dunn <amdunn@gmail.com> Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
* packet: Do not decrypt zero length rest of bufferAlan Dunn2014-02-062-13/+25
| | | | | | | | | | | | | | | | | | | | | | | If we receive a packet of length exactly blocksize, then packet_decrypt gets called on a buffer of size 0. The check at the beginning of packet_decrypt indicates that the function should be called on buffers of at least one blocksize, though the check allows through zero length. As is packet_decrypt can return -1 when len is 0 because malloc can return NULL in this case: according to the ISO C standard, malloc is free to return NULL or a pointer that can be freed when size == 0, and uclibc by default will return NULL here (in "non-glibc-compatible" mode). The net result is that when using uclibc connections with libssh can anomalously fail. Alternatively, packet_decrypt (and probably packet_encrypt for consistency) could be made to always succeed on len == 0 without depending on the behavior of malloc. Thanks to Josh Berlin for bringing conneciton failures with uclibc to my attention. Signed-off-by: Alan Dunn <amdunn@gmail.com> Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
* build: Use Threads_FOUND to decide whether to build ssh_threads.Raphael Kubo da Costa2014-02-061-2/+2
| | | | | | | | | | | | | | | | Follow-up to 4e04ec8, which caused a regression on OS X. Checking the value of CMAKE_THREAD_LIBS_INIT to decide whether any threading library is present on a system turns out to be wrong -- in OS X, for example, usage of pthreads does not depend on any additional linker or compiler flags, so CMAKE_THREAD_LIBS_INIT is empty and our check in src/CMakeLists.txt failed (it used to work before 4e04ec8 because CMAKE_HAVE_THREADS_LIBRARY is set). Instead, just look for Threads_FOUND, which FindThreads sets just like any other Find module when it has found what it was looking for. Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
* session: skip timestamp init for non-blocking caseJon Simons2014-02-061-1/+5
| | | | Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
* session: add getters for session cipher namesJon Simons2014-02-062-0/+34
| | | | Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
* Revert f2c2687ca6c6c7e25c9a547227027ab28eb4fc16Aris Adamantiadis2014-02-051-1/+1
| | | | | Fix bug #142 The mode does need to be an octal numeric string. Mode 0600 now gets sent on the wire as 0384, triggering a "scp: protocol error: bad mode" response, and an "scp status code 1d not valid" message from libssh.
* knownhosts: resolve leaks found by coverityAris Adamantiadis2014-02-052-9/+8
|
* knownhosts: detect variations of ecdsaAris Adamantiadis2014-02-045-43/+117
|
* server: use custom server bannersAudrius Butkevicius2014-02-041-2/+2
| | | | | | Value of session->serverbanner never gets used Signed-off-by: Audrius Butkevicius <audrius.butkevicius@gmail.com>
* threads: Be less strict when deciding whether to build libssh_threads.Raphael Kubo da Costa2014-02-031-2/+2
| | | | | | | | | | | | | | | | | As mentioned in the previous commit, there are cases where CMAKE_HAVE_THREADS_LIBRARY is not set and pthreads _is_ being used: one can pass -DTHREADS_HAVE_PTHREAD_ARG=1 to CMake directly so that it just passes -pthread to the compiler/linker and does not set CMAKE_HAVE_THREADS_LIBRARY. Since we are only interested in knowing whether any threading library has been found, we should use CMAKE_THREAD_LIBS_INIT instead (Threads_FOUND would also work). Note that, at the moment, there is only a pthreads backend available in threads/, so if it is not found configuration will fail because CMake will try to create a library from an empty set of source files. Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
* ConfigureChecks: Stop checking for CMAKE_HAVE_THREADS_LIBRARY.Raphael Kubo da Costa2014-02-031-5/+3
| | | | | | | | | | | libssh is primarily interested in whether pthreads is present and can be used. Checking for CMAKE_HAVE_THREADS_LIBRARY is not the same thing, as there are cases where pthread exists but CMAKE_HAVE_THREADS_LIBRARY is not set (for example, FreeBSD passes -DTHREADS_HAVE_PTHREAD_ARG=1 to CMake by default as a way to skip the checks for -lpthread, -lpthreads and others and tell the build system that -pthread is the one expected to be used). Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
* socket: fix read of non-connected socketJon Simons2014-02-021-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Ensure to check whether the socket at hand is indeed still connected throughout POLLIN processing in ssh_socket_pollcallback. Before this change, the POLLIN block in ssh_socket_pollcallback is predicated against the condition (s->state == SSH_SOCKET_CONNECTED). Once entered, data from the socket is consumed through the data callback in this loop: do { r = s->callbacks->data(buffer_get_rest(s->in_buffer), buffer_get_rest_len(s->in_buffer), s->callbacks->userdata); buffer_pass_bytes(s->in_buffer,r); } while (r > 0); However, it is possible for the socket data callback to change the state of the socket (closing it, for example). Fix the loop to only continue so long as the socket remains connected: this also entails setting the ssh_socket state to SSH_SOCKET_CLOSED upon close. The bug can be observed before the change by sending a bogus banner to the server: 'echo -e "A\r\nB\r\n" | nc localhost 22'. Each of 'A' and 'B' will be processed by 'callback_receive_banner', even though the client socket is closed after rejection of 'A'. Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
* doc: correct ssh_channel_read_timeout unitsJon Simons2014-02-022-7/+7
| | | | Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
* doc: Document expected return value of channel data callbackAudrius Butkevicius2014-02-021-0/+2
| | | | | Signed-off-by: Audrius Butkevicius <audrius.butkevicius@gmail.com> Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
* src: Fix argument order in ssh_channel_pty_window_change_callbackAudrius Butkevicius2014-02-021-2/+2
| | | | | | | So that it would match ssh_channel_pty_request_callback as well as the documentation Signed-off-by: Audrius Butkevicius <audrius.butkevicius@gmail.com> Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
* src: Define MAX_BUF_SIZE globally and use it.Joseph Southwell2014-02-025-5/+17
| | | | Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
* client: Fix EOF session error reporting.Joseph Southwell2014-02-022-3/+9
| | | | Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
* Make function ssh_channel_accept() nonblocking if timeout is 0.Oleksandr Shneyder2014-02-021-1/+5
| | | | Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
* build: remove OSX deprecated warnings for opensslAris Adamantiadis2014-02-022-10/+7
|
* build: fix cmake bug introduced yesterdayAris Adamantiadis2014-02-021-3/+3
| | | | Compilation failed on OSX because of the missing OR OSX
* Kex: fix coverity warning + edge caseAris Adamantiadis2014-02-021-4/+8
|
* server: allow custom server banners (bug #83)Aris Adamantiadis2014-02-013-2/+12
|
* Knownhosts: implement hostkey with knownhosts heuristicAris Adamantiadis2014-02-011-1/+24
|
* knownhosts: add test case for bug #138Aris Adamantiadis2014-02-011-0/+43
|
* known_hosts: add ssh_knownhosts_algorithms()Aris Adamantiadis2014-02-013-3/+108
| | | | | Goal of that function is to test the preferred key exchange methods based on what's available in the known_hosts file