Commit Graph

164 Commits

Author SHA1 Message Date
Keith Winstein 1508d40b4c Chdir to homedir (closes #193) and honor .hushlogin (closes #216). 2012-04-19 01:03:25 -04:00
Keith Winstein 9cf87d224e Verbose server now turns on verbose transport layer (much more output)
Relevant to #217.
2012-04-18 10:47:18 -04:00
Keegan McAllister a289a2319e Preserve RLIMIT_CORE hard limit, and restore soft limit before exec
Closes #196.
2012-04-16 20:03:04 -04:00
Keith Winstein 3ed9c0fb77 Only print motd for login shells, not when command is specified. 2012-04-16 18:34:53 -04:00
Keith Winstein 68825dccde Print /etc/motd before login shell. Closes #190. 2012-04-16 18:19:45 -04:00
Keith Winstein b4263b354e Check for paths.h and make sure we have _PATH_BSHELL 2012-04-16 17:51:52 -04:00
Jay Freeman (saurik) 2462434390 Use _PATH_BSHELL for "/bin/sh" and fix argv[0].
The previous code had the following issues:

1) hardcoded the path of /bin/sh (should use paths.h)
2) threw away the variable with the fallback shell
3) prepended - to the path rather than the shell name
4) added a - before explicit chosen non-shell commands

Closes #199.
2012-04-16 17:40:30 -04:00
Keith Winstein bcb96d9337 Change some asserts flagging runtime errors to fatal_asserts (Anders Kaseorg) 2012-04-16 06:27:14 -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
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 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 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 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
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
Keith Winstein 4d9483bc83 Fix build when libutil.h exists but is deprecated 2012-04-07 20:23:59 -04:00
Benjamin Kaduk 29539516e5 FreeBSD needs libutil.h for forkpty()
The header is not available everywhere, so only include it if it
is present.  (The extra include should be harmless on Linux by
inspection.)
2012-04-05 18:19:37 -04:00
Keegan McAllister ba6387f36c Allow CryptoExceptions to be fatal 2012-03-31 16:19:33 -04:00
Keegan McAllister ba9b16aafa Fully initialize the argument to TIOCSWINSZ
struct winsize contains fields other than ws_col and ws_row.  To avoid passing
uninitialized data to TIOCSWINSZ, initialize it first using TIOCGWINSZ.

Found by Valgrind.

(closes #85 github issue)
2012-03-31 15:41:34 -04:00
Keith Winstein 9a7f3ad33d Print warnings when IUTF8 missing 2012-03-31 15:20:30 -04:00
Quentin Smith 44ab7360bc Fix poll.h location 2012-03-28 14:32:32 +02:00
Keegan McAllister 7ed5174aa7 Move some locale handling into one place 2012-03-26 20:08:55 -04:00
Keith Winstein 26fc88634d Update documentation to version 1.1 2012-03-22 19:09:40 -04:00
Keith Winstein ab94397726 Fix copy-paste error in port argument check 2012-03-21 22:45:58 -04:00
Keegan McAllister 9f38c76699 Explicitly disable dumping core (closes #72)
This is a precaution to avoid saving sensitive data to disk, e.g. session keys.
We expect that corefiles are not world readable, but they're still sitting on
the physical disk and it's safer just to disable creating them.

GitHub issue #71 deals with a similar concern.
2012-03-21 18:41:51 -04:00
Keith Winstein ec0c8c8984 Allow immediate return on initial spins 2012-03-21 18:00:36 -04:00
Keith Winstein ad3877626d Use _exit() for hygiene (per Anders Kaseorg) 2012-03-21 17:32:46 -04:00
Keith Winstein 6842dbf066 Startup script quoting cleanups per Anders Kaseorg 2012-03-21 17:19:12 -04:00
Keith Winstein 9d7d47c57d Count colors locally. Server advertises xterm-256color only when necessary. 2012-03-18 05:47:26 -04:00
Keith Winstein cbeda2d2fe Don't die immediately on broken command 2012-03-18 03:53:01 -04:00
Keith Winstein 89d1c88bcf More robust option parsing and redo wrapper 2012-03-18 03:23:58 -04:00
Keith Winstein 0e5fd920b1 New option-parsing for mosh-server 2012-03-18 03:13:50 -04:00
Keith Winstein cf017cd99c Don't try to parse single -- as IP address 2012-03-18 02:38:45 -04:00
Keith Winstein 452ff9f992 Require at least one element of command 2012-03-18 02:31:40 -04:00
Keith Winstein e582b27b83 Allow arguments to command (after --) 2012-03-18 01:35:31 -04:00
Keith Winstein b497cf42ef mosh-server now takes command argument 2012-03-17 15:21:33 -04:00
Keith Winstein a07fb0d542 Fix build on Mac OS X 2012-03-16 18:03:17 -04:00
Keith Winstein 0f011b030c Start login shell (fixes #59 github issue) (per Austin Clements) 2012-03-16 15:36:13 -04:00
Keith Winstein 57d97209c0 Support 256color (and assume 256color terminal). Closes #3 github issue. 2012-03-16 13:46:55 -04:00
Keegan McAllister 2d58630d0d Only define saved_addr if HAVE_UTEMPTER
Otherwise the variable is unused, causing a compiler warning
2012-03-14 03:12:30 -04:00
Keith Winstein ef0bf90221 Rearrange mosh-server startup message 2012-03-12 05:15:41 -04:00
Keith Winstein 4f8f938369 Add versions and no-warranty msg to mosh, mosh-client, mosh-server 2012-03-12 04:49:00 -04:00
Keith Winstein df3eec1397 Allow explicit UDP port option, confine ports to range 60000..61000 2012-03-10 03:34:47 -05:00
Keith Winstein df5d163f9c Fix asserts with side-effects (per Keegan McAllister) 2012-03-08 10:50:19 -05:00
Keegan McAllister 4a29ab9d70 Fix comments, formatting, error message around use of selfpipe 2012-03-07 18:38:18 -08:00
Keith Winstein 4e158a22e5 Fix bug affecting clean shutdown on OS X 2012-03-07 03:21:33 -05:00
Keith Winstein 875e17e966 skalibs without HAS_SIGNALFD will not work if we block these signals 2012-03-07 03:10:19 -05:00