Commit Graph

711 Commits

Author SHA1 Message Date
Keith Winstein 119bbcaced Add nicer message and 15s timeout if server can't be reached on UDP.
(Closes #152)
2012-04-16 02:31:27 -04:00
Ed Schouten 033953dcd2 Don't leak utmpx entries on shutdown.
As far as I know, for all implementations of libutempter, the
utempter_remove_added_record() function depends on the file descriptor
passed to utempter_add_record() to still be valid. The reason for this,
is that this file descriptor is propagated to the setuid utility that is
responsible for modifying utmpx.

Modify the code to remove the utmpx entry before closing the
pseudo-terminal master device. While there, simply use
utempter_remove_record(), which takes the file descriptor explicitly.
The advantage is that this prevents potential foot-shooting in the
future. Visual inspection of the source code will make it more obvious
that utempter depends on the file descriptor.

Closes #179.
2012-04-16 01:37:48 -04:00
Joshua Pollack 59e8364178 Add support for Cygwin, which has curses headers in /usr/include/ncurses
[keithw -- applied style change from kmcallister]

Closes #181.
2012-04-16 00:54:27 -04:00
Keith Winstein 25b0e0e8ab Make new pipe2() test work properly when pipe2() undefined (e.g. on OS X). 2012-04-16 00:47:55 -04:00
Keith Winstein c57ded1790 Clarify usage statement. 2012-04-16 00:46:01 -04:00
Keith Winstein c1c102ff07 Document --ssh option in mosh(1) man page.
Closes #173.
2012-04-16 00:03:35 -04:00
Alexander Rapp 86113b5f7a scripts/mosh: Add --ssh flag
Let users specify an ssh outside their PATH, or extra flags like -p or -i.

Modify the usage message to describe this feature and hint at the
semantic difference viz. --client=path\ to\ client vs --ssh="path\ to\
ssh".

Closes #53

[keithw@mit.edu -- applied fixes per Anders Kaseorg]
2012-04-15 23:48:12 -04:00
Keegan McAllister c2a5941f88 Fall back to naive built-in byte-swap routines
EL5 lacks htobe64 and friends.  Using its byteswap.h requires an endianness
check in our headers, which is fragile and compiler-dependent.  It's a fair
amount of code [1], and is only useful on EL5.

So instead, let's include a fallback implementation of these functions, and use
it whenever we can't find the (now-)standard Linux or OS X routines.  The
fallback is endianness-independent and should work on any platform.

[1] https://github.com/rurban/mosh/commit/da1a5abd1e09f0c1e9295357bb480a643d9dc8e3
2012-04-15 23:42:15 -04:00
Keegan McAllister 85d197346a configure.ac: Check that we can use O_CLOEXEC with pipe2().
Needed for EL5.

Based on:
https://github.com/rurban/mosh/commit/c70c3707e65b42ac9b9da937e9c255211330805e
2012-04-15 23:42:15 -04:00
Keith Winstein 99e8626a01 Tidy check for exception in Network::Connection::send(). 2012-04-15 23:29:05 -04:00
Keith Winstein 7103c5f48b Using fclose() instead of close() means future fprintf() doesn't kill us on Mac. 2012-04-15 23:25:21 -04:00
Keith Winstein f376b80018 Fix protobuf -I lines to build with non-system protobuf 2012-04-15 23:20:10 -04:00
Keith Winstein aca69ef684 Server does not need to raise exception on failed sendto(). Fixes #183. 2012-04-15 23:13:58 -04:00
Keith Winstein 6b6747cda7 Fix valgrind error with 1-col char then 2-col char in a 1x1 terminal 2012-04-15 17:11:40 -04:00
Keegan McAllister cd2d482484 Don't use *_t for our own typedefs
It's reserved by POSIX.

(closes #158 pull request)
2012-04-15 13:50:18 -04:00
Keegan McAllister 937882caff Remove Boost dep for Fedora too 2012-04-15 13:49:15 -04:00
Keegan McAllister 280400152d Replace one find_if with a loop
g++/libstdc++ 4.1.2 is unhappy with this use of bind2nd, possibly because the
argument is a reference.  This is a problem for EL5.
2012-04-15 13:49:15 -04:00
Keegan McAllister 8bcc001b52 Remove Boost entirely 2012-04-15 13:49:15 -04:00
Keegan McAllister 2675f13676 Remove boost::lambda remaining instances from terminaloverlay.cc 2012-04-15 13:49:15 -04:00
Keegan McAllister 06fa8eaedb Remove boost::lambda from PredictionEngine::get_or_make_row 2012-04-15 13:49:15 -04:00
Keegan McAllister 5f1bc88ed8 Remove boost::lambda with for_each in terminaloverlay.cc 2012-04-15 13:49:15 -04:00
Keegan McAllister 8f099cafbb Remove boost::lambda from ConditionalOverlayCell::get_validity 2012-04-15 13:49:15 -04:00
Keegan McAllister 83694977a7 Remove boost::lambda from transportsender.cc 2012-04-15 13:49:15 -04:00
Keegan McAllister 8bc9aa33bf Remove boost::lambda from completeterminal.cc 2012-04-15 13:49:15 -04:00
Keegan McAllister 4152af9c8e Remove BOOST_AUTO from terminaloverlay.cc 2012-04-15 13:49:15 -04:00
Keegan McAllister 5320fbd346 Remove BOOST_AUTO from completeterminal.cc 2012-04-15 13:49:15 -04:00
Keegan McAllister 6e56fd2157 Remove BOOST_AUTO from terminaldisplay.cc 2012-04-15 13:49:15 -04:00
Keegan McAllister 87a5f86794 Remove BOOST_AUTO from terminalframebuffer.cc 2012-04-15 13:49:15 -04:00
Keegan McAllister 5904d4f5e6 Remove BOOST_AUTO from transportsender.cc 2012-04-15 13:49:15 -04:00
Keith Winstein cc8b1f293a Forcibly detach earlier in blind effort to fix #114 (needs testing) 2012-04-15 12:38:48 -04:00
Keith Winstein 8f60f7ab05 Convey locale-related environment variables as backup, and nicer error.
Fixes #74.
2012-04-14 16:56:48 -04:00
Keith Winstein 597756b846 Document new -v (verbose) server switch. 2012-04-14 13:56:46 -04:00
Keith Winstein a4221d17a4 Disable posterization and rely solely on TERM to tell remote end about colors
(should help #155 github issue)
2012-04-14 13:46:38 -04:00
Keith Winstein 0e9be1b471 Close terminal fd's to properly detach on old sshd (e.g. RHEL/CentOS 5.0).
May help some sufferers of #114 github issue.
2012-04-14 12:37:28 -04:00
Keith Winstein 1823f7e860 Provide more helpful error message on lack of -t argument. 2012-04-14 12:29:05 -04:00
Keith Winstein 5c20c8d4be Keep using OSC 0 when possible to preserve compability with older clients.
Re: #137
2012-04-14 02:11:31 -04:00
Keith Winstein d0a818d2e2 Track icon name and window title separately. Implement MOSH_TITLE_NOPREFIX 2012-04-14 01:55:28 -04:00
Keith Winstein 53f79e4261 Fix vttest "Funny scrolling regions" by ignoring some invalid scroll regions
Addresses #155 github issue.
2012-04-14 01:11:57 -04:00
Keith Winstein 45487f6623 Handle crazy cursor more gracefully (closes #168) 2012-04-13 14:03:16 -04:00
Keith Winstein 7be90ae244 Close server-related file descriptors before executing child process
Closes #170 github issue.
2012-04-13 13:48:56 -04:00
Keegan McAllister 0eec0b60f0 Linux: Use our own signalfd wrapper, rather than libstddjb
selfpipe already does a fine job of interfacing to signalfd.  But Debian and
Ubuntu want us to depend on the skalibs-dev package rather than build libstddjb
ourselves.  That would be fine except that skalibs-dev has static libraries
only, and they aren't built with -fPIC.  This interferes with building
mosh-{client,server} as position-independent executables, which is a desirable
security measure.

So we have our own wrapper, which invokes either signalfd or selfpipe.  And we
build it ourselves with our own flags, because it's part of the Mosh project
proper.

(closes #108)
2012-04-13 12:33:21 -04:00
Keegan McAllister 93325d3ef0 Include -fPIE when we check for $LD -pie
configure's linker flag check also compiles a C++ program.  g++ -pie informs
both the compiler and linker, but clang++ -Wl,-pie is only a linker flag, and
the linker will complain that the code hasn't been compiled as
position-independent.
2012-04-13 12:27:27 -04:00
Keegan McAllister 8c16ca8123 Try $LD -Wl,-pie if $LD -pie fails
clang on OS X wants the former.

c.f. http://bugs.ruby-lang.org/issues/5697
2012-04-13 12:27:27 -04:00
Keegan McAllister d2434d1a79 Check compiler support for -fno-default-inline and -pipe
clang was spewing warnings about the unrecognized -fno-default-inline.  (Oddly,
it warns only with -c, not when compiling directly to an executable.)  For
completeness we also check -pipe, even though clang is OK with that one.

It should be fine to omit either flag.  gcc -fno-default-inline drops the
implicit 'inline' annotation on functions defined inside a class scope, but
'inline' is only a hint anyway.  -fno-default-inline does not change linkage.
-pipe is merely a compile speed optimization.
2012-04-13 12:27:27 -04:00
Keegan McAllister 62b6137ff5 Grep for clang warnings when testing compiler flag support
There is no way to make clang's "argument unused" warning fatal.

Ideally the search string would also include 'clang: ' but this output might
depend on clang's argv[0].
2012-04-13 12:27:27 -04:00
Keegan McAllister b5ab0d0736 Document the binary hardening measures 2012-04-13 12:27:25 -04:00
Keegan McAllister 349e2d20c8 Use the hardening flags
Closes #79.
2012-04-13 12:25:09 -04:00
Keegan McAllister ffd7332f8d Detect binary hardening flags supported by the compiler and linker 2012-04-13 12:25:09 -04:00
Keegan McAllister f7fc34e0c7 Add ax_check_{compile,link}_flag.m4 2012-04-13 12:25:09 -04:00
Daniel O'Connor 3d76ec8208 Skip 'new' otherwise BSD getopt will think there are no options.
IMO 'new' should be dropped entirely since it's not optional and 'new' is the only choice.

If it were to change in future then it should go after all the options.

(closes #111)
2012-04-13 12:07:49 -04:00