- Jun 23, 2022
-
-
Benjamin Barenblat authored
After further discussion, the Mosh maintainers have decided to stick with the internal OCB implementation for this release. Restore support for using OpenSSL’s AES but internal OCB. To make this commit easy to audit, restore the code exactly, including calls to AES functions that are deprecated in OpenSSL 3; a future commit will update ocb_internal.cc to use EVP instead of directly calling the AES primitives. In anticipation of future changes, preserve support for OpenSSL’s AES-OCB, but don’t compile it in. Add --with-crypto-library=openssl-with-openssl-ocb and --with-crypto-library=openssl-with-internal-ocb options to configure so that developers can easily test Mosh using OpenSSL’s AES-OCB. These options are intended only for testing, are undocumented, and are not subject to any API stability guarantees. Rework configure to look for all possible cryptography libraries first and then dispatch on --with-crypto-library as appropriate.
-
- Jun 14, 2022
-
-
Alex Chernyakhovsky authored
OpenSSL 3.0 deprecated many of the functions that ocb.cc used to implement OCB-AES, causing a build failure when -Wdeprecated collided with -Werror. Debian temporarily fixed this by suppressing the error in #1191. Since mosh 1.4 will be the next stable release of mosh, it should not depend on deprecated functions in OpenSSL. Since version 1.1.0, OpenSSL natively supports OCB-AES through the EVP_CIPHER API. @cgull started early support for this in #924. This change extends upon the previous work by @cgull in a few ways * EVP_CipherInit_ex is called in ae_init to set up the EVP_CIPHER_CTX. It is later called in ae_encrypt and ae_decrypt just to load nonce (IV in OpenSSL EVP parlance), which reduces the amount of initialization done per-packet. However, due to OpenSSL API limitations, two copies of the EVP_CIPHER_CTX are kept: one for encryption, and one for decryption. * Adds missing support for an external tag, rather than just one appended to the ciphertext * Support for non-default-sized tags as well as some improved error handling. Note that this change raises the minimum OpenSSL version for Mosh to 1.1.0. OpenSSL does not provide security support for versions prior to 1.1 at this time, so this is in principle reasonable dependency. If we want to continue to support distributions (such as RHEL7) which continue to be supported by their vendor but use an unsupported OpenSSL, then some future work will have to restore the ocb.cc implementation that uses the deprecated functions. Bugs: #1174
-
- Jun 07, 2022
-
-
Benjamin Barenblat authored
Split src/crypto/ocb.cc into two files – one containing the AES-OCB implementation backed by OpenSSL, and the other containing implementations backed by Apple Common Crypto and Nettle. This paves the way for a new OpenSSL implementation that uses OpenSSL 1.1’s OCB support directly, rather than one that merely uses OpenSSL to provide the underlying block cipher. Remove support for rijndael-alg-fst.c and compiler-provided AES intrinsics, since they’re not in use anymore. (Mosh can still use hardware-accelerated AES if it’s available; it just now relies exclusively on the underlying cryptography library to accelerate AES if possible.) Update the build system to conditionally compile in either ocb_openssl.cc or ocb_internal.cc, depending on which cryptography library you pass to ./configure. To make this commit easy to audit, ocb_openssl.cc and ocb_internal.cc are trivially diffable against ocb.cc (now deleted). Expected diffs consist of a copyright notice update, a preprocessor check to ensure the appropriate cryptography implementation has been selected, and deletions to remove code that’s no longer in use. This does mean a substantial amount of code is duplicated between ocb_openssl.cc and ocb_internal.cc; however, ocb_openssl.cc should be completely replaced soon, so it won’t be an issue in the long term. Bug: https://github.com/mobile-shell/mosh/issues/1174
-
- May 31, 2022
-
-
Alex Chernyakhovsky authored
This reverts commit 6321b1d9. The original commit 6321b1d9 switched from a malloc call of a 22400 byte buffer to a stack-allocated 22400 byte buffer, in addition to the fairly large buffers already allocated in the functions. Some systems have fairly small stack frames, making this 22K allocation potentially dangerous. On my stock Debian bullseye system, I have 200809 bytes (from `getconf _POSIX_THREAD_ATTR_STACKSIZE`); a 22400 byte buffer already represents about 10% of the available stacksize. Other systems, such as those with musl libc, may have either 80KiB or 128KiB [1], making this allocation represent between 18% to 28% of the available stack space. [1] https://wiki.musl-libc.org/functional-differences-from-glibc.html#Thread-stack-size
-
Alex Chernyakhovsky authored
This commit adds a fuzzer for more of the terminal pipeline, adding coverage for the input and output portions of the terminal framebuffer.
-
Alex Chernyakhovsky authored
This commit adds the --enable-fuzzing (and --enable-asan, to make fuzzing more useful) options and a sample fuzzer for the terminal parser. At this time only libfuzzer is supported. Future changes to add AFL to get more fuzzing capability should be possible with the addition of the afl_driver.cc from Chromium.
-
Alex Chernyakhovsky authored
-
Alex Chernyakhovsky authored
-
Alex Chernyakhovsky authored
This change adds autoconf/automake support for building all of mosh with gcov, and generates an lcov html report. This allows seeing which parts ofthe source tree have good test coverage, and which can be shored up. Eventually, it would be good to hook this up to Github Actions to be generated automatically.
-
- Feb 05, 2022
-
-
Wolfgang E. Sanyer authored
Signed-off-by:Wolfgang E. Sanyer <WolfgangESanyer@gmail.com>
-
Wolfgang E. Sanyer authored
Signed-off-by:Wolfgang E. Sanyer <WolfgangSanyer@Google.com>
-
Wolfgang E. Sanyer authored
Signed-off-by:Wolfgang E. Sanyer <WolfgangSanyer@Google.com>
-
- Dec 11, 2021
-
-
Andrew Chin authored
Add tmux and alacritty to title_term_types
-
- Dec 09, 2021
-
-
Andrew Chin authored
Use CLOCK_MONOTONIC_RAW when available
-
- Nov 05, 2021
-
-
Andrew Chin authored
Don't sometimes hang just after launching ssh
-
- Oct 29, 2021
-
-
Kalle Samuels authored
sshd has a bug in which the sometimes it may get stuck trying to read from the client even though the child process has already exited. This is visible at https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/ssh/serverloop.c?annotate=1.226 line 274: once the child is waited on, `child_terminated` is reset to 0, which causes it to use an infinite timeout in the select there. This workaround causes mosh to disconnect from the server, thereby allowing sshd finish.
-
- Oct 21, 2021
-
-
Harry Sintonen authored
-
- Aug 27, 2021
-
-
Naïm Favier authored
Resolves #1130
-
- Jul 21, 2021
-
-
Andrew Chin authored
.gitignore: add autogenerated files
-
black_desk authored
-
black_desk authored
-
- Jul 14, 2021
-
-
Andrew Chin authored
fixed the irc channel link in README
-
buZz authored
-
- Dec 06, 2020
-
-
Harry Sintonen authored
-
- May 18, 2020
- May 17, 2020
-
-
John Hood authored
-
- Oct 03, 2019
-
-
Anders Kaseorg authored
Signed-off-by:Anders Kaseorg <andersk@mit.edu>
-
Anders Kaseorg authored
The uninitialized variable warning from T x; broke the test if the user passed CXXFLAGS='-O2 -Wall -Werror'. (Users shouldn’t do that; our own --enable-compile-warnings=error option was unaffected.) Signed-off-by:Anders Kaseorg <andersk@mit.edu>
-
Anders Kaseorg authored
Signed-off-by:Anders Kaseorg <andersk@mit.edu>
-
Anders Kaseorg authored
These tests only define HAVE_* macros that we never check. Signed-off-by:Anders Kaseorg <andersk@mit.edu>
-
Anders Kaseorg authored
As of commit dd941df1 , we no longer build any plain C, except within AM_PROG_AR. Signed-off-by:
Anders Kaseorg <andersk@mit.edu>
-
- Jul 11, 2019
-
-
John Hood authored
Change the openssl-devel package to libssl-devel. Cygwin still has an "obsolete" (essentially virtual) package for openssl-devel, but it doesn't seem to work properly on Appveyor's Cygwin install. Protobuf >= 3.6.0 requires C++11, which I added support for last year. But when I did that, I requested strict ANSI C++ compatibility, which causes Cygwin/newlib's libc feature test macros to be set to disable (at least) POSIX.1 extensions. Let the Autoconf macro use its default instead (prefer GNU/extended C++, accept anything).
-
- Jun 13, 2019
-
-
Anders Kaseorg authored
Signed-off-by:Anders Kaseorg <andersk@mit.edu>
-
- Feb 11, 2019
-
-
Anders Kaseorg authored
Statically linking mosh-server with glibc isn’t a great idea for various reasons (nsswitch modules, locale format incompatibilities). But we can provide most of the benefits of static linking by allowing specific library dependencies to be linked statically using -Bstatic and -Bdynamic. The full set is enabled by ./configure --enable-static-libraries which is equivalent to ./configure --enable-static-libstdc++ --enable-static-libgcc \ --enable-static-utempter --enable-static-zlib --enable-static-curses \ --enable-static-crypto --enable-static-protobuf and results in binaries whose only runtime library dependencies are provided with libc: $ ldd src/frontend/mosh-server linux-vdso.so.1 (0x00007ffe0b377000) libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007fa0d9970000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fa0d97e3000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fa0d97c2000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa0d95d8000) /lib64/ld-linux-x86-64.so.2 (0x00007fa0d9f6a000) Signed-off-by:Anders Kaseorg <andersk@mit.edu>
-
Anders Kaseorg authored
Signed-off-by:Anders Kaseorg <andersk@mit.edu>
-
- Jan 04, 2019
-
-
Peter Edwards authored
If there are consecutive resize events in the userstream to be applied in "serve", we should apply the last/latest one in the sequence, not the first/earliest one. This fixes a problem where a flurry of resize events (eg, generated by a window manager resizing the client), can cause mosh to have an out-of-date idea as to what the physical geometry of the window is.
-
- Aug 30, 2018