Ben Harris [Thu, 28 Apr 2005 08:21:04 +0000 (08:21 +0000)]
Fix two more stupid bugs in 3des-ctr:
- We were using the first word of each block of keystream block twice and the
second not at all.
- We were incrementing the high-order word of the counter after every block
rather than the low-order one.
With those fixed, our 3des-ctr implementation interoperates with the one in
Moussh. Thanks to der Mouse for his help with the testing.
Ben Harris [Wed, 27 Apr 2005 21:42:51 +0000 (21:42 +0000)]
On monochrome displays, display the cursor in reverse video so that it's
visible on reversed out text. This only applies to active block cursors for
now.
Ben Harris [Wed, 27 Apr 2005 21:09:45 +0000 (21:09 +0000)]
On 1bpp displays, ignore colour attributes. This makes pterm minimally useful
there, though (e.g.) switching to using reverse video for the cursor would
probably also help. Displays with other silly depths (e.g. 2bpp) aren't
catered for, but I suspect they're rare in the X world.
Ben Harris [Wed, 27 Apr 2005 15:42:10 +0000 (15:42 +0000)]
Rather than checking for <sys/sockio.h>, just include it if our other
attempts at finding SIOCATMARK have failed. This removes one of our
Autoconf tests, which is always nice.
Ben Harris [Wed, 27 Apr 2005 11:10:54 +0000 (11:10 +0000)]
In SSH-2 mode, PuTTY wasn't sending KEXINIT until it had received one from the
server, which led to stalemate if the server did the same. PuTTY now sends
KEXINIT proactively as soon as it's worked out that it's talking SSH-2.
Simon Tatham [Wed, 27 Apr 2005 08:09:32 +0000 (08:09 +0000)]
mkunxarc.sh is supposed to be silent, so I'm having it discard the
stderr output from mkauto.sh. (I debated discarding it within
mkauto.sh itself, but decided against it.)
Ben Harris [Mon, 25 Apr 2005 23:57:45 +0000 (23:57 +0000)]
Squash OPOST locally when we're not in line-editing mode, and propagate
the other output flags with SSH. This means that when I log into a remote
system using Plink and then run "stty -onlcr" I get the expected
stair-stepping.
Ben Harris [Mon, 25 Apr 2005 23:28:25 +0000 (23:28 +0000)]
Use pututxline() in place of pututline(), since the former is standardised by
X/Open and actually seems to be more common (NetBSD has it). Also use
updwtmpx() rather than directly writing to the wtmpx file, though more for
reasons of aesthetics than anything practical.
Ben Harris [Mon, 25 Apr 2005 22:46:08 +0000 (22:46 +0000)]
Ask GDK to give us reasonable approximations if it can't get precisely the
colours we asked it for. This means that I can run pterm on an 8-bit
PseudoColor display even if I have another program running.
Ben Harris [Mon, 25 Apr 2005 18:51:15 +0000 (18:51 +0000)]
Check for <sys/sockio.h> and include it in uxnet.c if we find it. It's
necessary on Solaris if we want to use SIOCATMARK. Using sockatmark() might
be preferable, but despite being notionally standard it's missing on
Solaris 9 and Mac OS X 10.3.9, whereas everyone seems to have SIOCATMARK
somewhere.
Ben Harris [Mon, 25 Apr 2005 17:21:08 +0000 (17:21 +0000)]
uxpty.c uses non-X/Open facilities (notably strsignal()), so don't define
_XOPEN_SOURCE. We do still need _GNU_SOURCE in order to get grantpt()
on GNU systems. This allows uxpty.c to compile on NetBSD.
Ben Harris [Mon, 25 Apr 2005 15:55:06 +0000 (15:55 +0000)]
Add a mechanism for using autoconf to detect the quirks of Unix systems
rather than relying on the user to edit the Makefile. Makefile.gtk
still works as well as it ever did, but now we get a Makefile.in alongside
it. mkunxarc.sh now relies on autoconf and friends to build the configure
script for the Unix source distribution.
Ben Harris [Sun, 24 Apr 2005 14:43:00 +0000 (14:43 +0000)]
On some systems (NetBSD 1.6 and Solaris 9, at least), GCC doesn't understand
the semantics of assert(0) and believes it can return. Add a gratuitous
exit(1) to convince it that this won't happen, and hence quell a couple of
warnings about variables' being used uninitialised.
Ben Harris [Sat, 23 Apr 2005 16:22:51 +0000 (16:22 +0000)]
Now that we've got at least some SDCTR modes working (and aes256-ctr is our
default preferred cipher), add code to inject SSH_MSG_IGNOREs to randomise
the IV when using CBC-mode ciphers. Each cipher has a flag to indicate
whether it needs this workaround, and the SSH packet output maze has gained
some extra complexity to implement it.
Jacob Nevins [Fri, 22 Apr 2005 00:00:49 +0000 (00:00 +0000)]
Change proxy-dns `Auto' default for SOCKS5 from local DNS to remote DNS.
SOCKS5 should always be able to do this, and I suspect our not doing so
dates from when the SOCKS proxy types were under a single configuration
option (pre-r3168).
Jacob Nevins [Thu, 21 Apr 2005 13:57:08 +0000 (13:57 +0000)]
First crack at `terminal-modes' in SSH. PuTTY now sends ERASE by default,
Unix Plink sends everything sensible it can find, and it's fully configurable
from the GUI.
I'm not entirely sure about the precise set of modes that Unix Plink should
look at; informed tweaks are welcome.
Also the Mac bits are guesses (but trivial).
[originally from svn r5653]
[this svn revision also touched putty-wishlist]
Jacob Nevins [Tue, 19 Apr 2005 19:18:14 +0000 (19:18 +0000)]
Invent a way of specifying control characters numerically in ctrlparse():
^<27>, ^<0x1B>, ^<033>. (This doesn't tread on any syntax that already had a
non-null behaviour.)
Jacob Nevins [Tue, 19 Apr 2005 13:27:21 +0000 (13:27 +0000)]
Remove "none" from the MACs we offer to support in SSH-2. (It was at the
end, after the REQUIRED "hmac-sha1".) This has been present since SSH-2
support was introduced (r569).
Jacob Nevins [Mon, 18 Apr 2005 21:09:58 +0000 (21:09 +0000)]
Add ability to construct SSH-1 packets incrementally (not used yet).
I've added this to support `terminal-modes', but since this unifies some
SSH-1 and SSH-2 packet construction code, it saves a few hundred bytes.
Bonus.
Simon Tatham [Mon, 18 Apr 2005 10:01:57 +0000 (10:01 +0000)]
Recent CTR mode changes stopped OS X PuTTY from compiling, because
-Werror objects at various static data items being defined but not
used. Ifdef some things out to restore warning-free compilability.
Jacob Nevins [Tue, 12 Apr 2005 20:04:56 +0000 (20:04 +0000)]
Unify GET_32BIT()/PUT_32BIT() et al from numerous source files into misc.h.
I've done a bit of testing (not exhaustive), and I don't _think_ I've broken
anything...
Jacob Nevins [Mon, 11 Apr 2005 16:23:35 +0000 (16:23 +0000)]
Retire winctrls.c:multiedit() in favour of a new simpler function for a
single full-width edit box. multiedit()'s extra functionality has been
superseded by the "columns" mechanism, and it didn't allow an edit box to
be created with no label.
Also add no-label capability to a couple of other controls.
Jacob Nevins [Thu, 7 Apr 2005 22:33:42 +0000 (22:33 +0000)]
Tone down canonical-name resolution when using getaddrinfo(). Previously
we were doing a forward+reverse lookup, which seems above and beyond the
call of duty, especially given that getaddrinfo() can be persuaded to
return a canonical name (this is what unix/uxnet.c does).
Unfortunately, I'm unable to test this at all as Win98 doesn't have
getaddrinfo(); hopefully I'll be able to find a mug with a modern version
of Windows to check it's not completely broken.
I think the effects of this are mostly cosmetic -- the canonical name is
used for window titles (and some people have been annoyed at the new
behaviour), other displays, and probably also for proxy exclusions.
Simon Tatham [Thu, 7 Apr 2005 12:38:17 +0000 (12:38 +0000)]
I always get a lot of personal mail about PuTTY when I send out a
release announcement, because people reply directly to the
putty-announce mail. I should remember to set a Reply-To header next
time.
Jacob Nevins [Thu, 7 Apr 2005 01:36:28 +0000 (01:36 +0000)]
If a new session was saved from Change Settings, a side-effect on Windows was
that the global `sesslist' got out of sync with the saved-sessions submenu,
causing the latter to launch the wrong sessions.
Also, Change Settings wasn't getting a fresh session list, so if the set of
sessions had changed since session startup it wouldn't reflect that (at least
until a session was saved). Fixed (on all platforms).
Therefore, since the global sesslist didn't seem to be useful, I've got rid
of it; config.c creates one as needed, as do the frontends. (Not tried
compiling Mac changes.)
Also, we now build the saved-sessions submenu on demand on Windows and Unix.
(This should probably also be done on the Mac.)
Ben Harris [Wed, 6 Apr 2005 23:40:30 +0000 (23:40 +0000)]
Remove support for the "rijndael256-cbc", "rijndael192-cbc", and
"rijndael128-cbc" names for AES. These are in the IANA namespace, but
never appeared in any secsh-transport draft, and no version of OpenSSH
has supported them without also supporting the aes*-cbc names.
"rijndael-cbc@lysator.liu.se" gets to live because it's in the private
namespace.
Ben Harris [Wed, 6 Apr 2005 23:27:08 +0000 (23:27 +0000)]
Implement SDCTR modes, as defined in the newmodes draft. This adds
aes128-ctr, aes192-ctr, and aes256-ctr. blowfish-ctr and 3des-ctr are
present but disabled, since I haven't tested them yet.
In addition, change the user-visible names of ciphers (as displayed in the
Event Log) to include the mode name and, in Blowfish's case, the key size.
Jacob Nevins [Wed, 6 Apr 2005 22:16:42 +0000 (22:16 +0000)]
`xp-wont-run': Apparently my application-manifest trims of r5534 aren't
acceptable on all versions of XP. Bah. Revert to pre-r5534 format (but
keep version number as 0.0.0.0). People who've had this problem have
reported putty.mft to make it go away.
NB, putting these updated manifests alongside the executable (e.g. as
`putty.exe.manifest') is also reported to work.
Jacob Nevins [Tue, 5 Apr 2005 18:11:31 +0000 (18:11 +0000)]
Add target to build `info' file.
We probably already require a new enough version of Halibut that this isn't
a problem; nevertheless, I've put it in a separate target for now.
Jacob Nevins [Tue, 5 Apr 2005 18:01:32 +0000 (18:01 +0000)]
Index the complete PuTTY manual.
This was a bit rushed, and could doubtless be improved.
Also fix a couple of things I noted on the way, including:
- "pscp -ls" wasn't documented
- Windows XP wasn't mentioned enough
Simon Tatham [Fri, 1 Apr 2005 08:46:26 +0000 (08:46 +0000)]
sk_address_is_local() was ignoring the possibility that a SockAddr
might have an IPv4 address in `ai' rather than in `addresses'.
Thanks to Martin Prikryl for pointing this out.
Simon Tatham [Thu, 31 Mar 2005 18:52:21 +0000 (18:52 +0000)]
Add text to the troubleshooting chapter about the errors that can be
caused when an active connection times out due to outgoing data
exceeding its maximum number of retries, and mention that this can
occur even when you didn't think you'd sent anything due to rekeys
and/or keepalives.
Unix generates ETIMEDOUT in this situation. Windows, it turns out
after doing an actual experiment by disabling my firewall, generates
ECONNABORTED! So _that's_ what it means under Windows. I wish I'd
done this experiment years ago now.
Simon Tatham [Thu, 31 Mar 2005 13:45:41 +0000 (13:45 +0000)]
FAQ entry on rekeys: Jacob would like to pre-emptively try to avoid
the possibility of people falling back to SSH-1 just because it gets
rid of the irritating delays.
Simon Tatham [Thu, 31 Mar 2005 12:25:48 +0000 (12:25 +0000)]
Beef up the `unfinished and experimental' warnings for the two Mac
ports, mentioning in particular that even if you downloaded a
_release_ source archive these particular ports are not considered
to be of release quality.
Simon Tatham [Wed, 30 Mar 2005 19:33:24 +0000 (19:33 +0000)]
Further fix for lcc-win32. The PuTTY suite now compiles fine for me
using lcc-win32 v3.8 (compilation date Mar 2 2005 18:40:17) provided
I pass COMPAT="-DNO_IPV6 -DNO_MULTIMON" on the command line.
Simon Tatham [Wed, 30 Mar 2005 08:27:54 +0000 (08:27 +0000)]
<1112163342.018492.101240@f14g2000cwb.googlegroups.com> on
comp.security.ssh contains a Dr Watson log which looks to me as if
`unclean-close-crash' occurred due to a rekey timer going off after
the session had closed. Hence, ssh2_timer() now avoids doing
anything if the session is already closed, and also ssh_do_close()
proactively calls expire_timer_context(). Between those I think they
ought to solve the problem.
Simon Tatham [Tue, 29 Mar 2005 13:10:33 +0000 (13:10 +0000)]
After we receive EOF on stdin, we should clear ssh->send_ok so that
we stop trying to read anything further from stdin. Otherwise we
send a continuous stream of SSH2_MSG_CHANNEL_EOF.
Simon Tatham [Mon, 28 Mar 2005 17:48:24 +0000 (17:48 +0000)]
Render timing.c robust in the face of strangeness. The strangenesses
in question vary per OS: on Windows the problem is that WM_TIMER
sometimes goes off too early, so that GetTickCount() is right and
the callback time is wrong, whereas on Unix the problem is that my
GETTICKCOUNT implementation comes from the system clock which means
it can change suddenly and non-monotonically if the sysadmin is
messing about (meaning that the timing of callbacks from GTK or
select timeouts is _more_ likely to be right than GETTICKCOUNT).
This checkin provides band-aid workarounds for both problems, which
aren't pretty but ought to at least prevent catastrophic assertion
failure.
Jacob Nevins [Wed, 23 Mar 2005 20:04:08 +0000 (20:04 +0000)]
`wcwidth-upgrade': upgrade to latest wcwidth.c from Markus Kuhn
<http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c>.
This is identified both internally and in HTTP headers as 2003-05-20,
for Unicode 4.0.
Only changes from upstream are to make mk_wcwidth_cjk() non-static and to
#include "putty.h" for prototypes.
The status of some code points has changed; see the wishlist item. We've
had some feedback from the CJK and Arabic communities that upgrading is
probably the right thing to do.
[originally from svn r5547]
[this svn revision also touched putty-wishlist]
Jacob Nevins [Wed, 23 Mar 2005 01:08:18 +0000 (01:08 +0000)]
Another fix from Hung-Te Lin; apparently in some IMEs (such as
"MS NewPhonetics"), move events (arrow keys) were being doubled up,
apparently because we turned both KEYDOWN and KEYUP events into new
KEYDOWN events.
I don't claim to understand the precise effect of this patch :( but
I'm reasonably confident that it only affects IME users, and experimentally
it doesn't seem to break anything obvious, so if piaip says it makes
things better that's good enough for me :)
Jacob Nevins [Mon, 21 Mar 2005 22:20:22 +0000 (22:20 +0000)]
Hung-Te Lin spotted that the `multi-changesettings-crash' workaround for Windows
would prevent a user opening Change Settings if they'd cancelled a previous
Change Settings.
Jacob Nevins [Mon, 21 Mar 2005 01:51:22 +0000 (01:51 +0000)]
Trim application manifests as much as MS' documentation and Owen's experiments
on XP allow while still having the desired effect -- this allows removal of
some fibs.
Also, change version number to 0.0.0.0 in preparation for `win-versioninfo'
(not that we found anything that took any notice of the version number
declared here).
Jacob Nevins [Mon, 21 Mar 2005 01:05:38 +0000 (01:05 +0000)]
Improvement for IME font display from Hung-Te Lin.
Not tested, but it appears only to affect Glenn Maynard's r1406 code from
<20011006170741.A23470@zewt.org> and nothing else, so seems harmless enough.
Ben Harris [Sat, 19 Mar 2005 19:23:49 +0000 (19:23 +0000)]
Revert last change: Some versions of the GNU C Library (notably SUSE
glibc-2.3.3-118 and Debian libc6 2.3.2.ds1-20) have clock_gettime() and
CLOCK_MONOTONIC in their headers, but not in libc itself, which we can't
detect easily.
Ben Harris [Sat, 19 Mar 2005 19:02:53 +0000 (19:02 +0000)]
If it's available, try to use clock_gettime(CLOCK_MONOTONIC) rather than
gettimeofday(), since the former shouldn't warp when the user resets the clock.
Simon Tatham [Sat, 19 Mar 2005 16:34:58 +0000 (16:34 +0000)]
Work around lcc's annoying (but, even more annoyingly, legitimate)
refusal to allow comparison of function pointers. Unfortunately this
still doesn't cause PuTTY to compile on my lcc installation, because
the GetCharacterPlacement stuff in exact_textout() is missing from
its header files. This may have been fixed in a future version (I'm
using lcc-win32 version 3.8 from December 2003), but I haven't
checked.
Jacob Nevins [Sat, 19 Mar 2005 02:26:58 +0000 (02:26 +0000)]
Try to make our PGP signing more useful:
* All the PuTTY tools for Windows and Unix now contain the fingerprints of
the Master Keys. The method for accessing them is crude but universal:
a new "-pgpfp" command-line option. (Except Unix PuTTYgen, which takes
"--pgpfp" just to be awkward.)
* Move the key policy discussion from putty-website/keys.html to
putty/doc/pgpkeys.but, and autogenerate the former from the latter.
Also tweak the text somewhat and include the fingerprints of the
Master Keys themselves.
(I've merged the existing autogeneration scripts into a single new
one; I've left the old scripts and keys.html around until such time
as the webmonster reviews the changes and plumbs in the new script;
he should remove the old files then.)
[originally from svn r5524]
[this svn revision also touched putty-website]
Simon Tatham [Thu, 17 Mar 2005 19:49:51 +0000 (19:49 +0000)]
The structural reorganisation of ssh.c (r4909) caused
ssh2_try_send() to no longer be run after receiving WINDOW_ADJUSTs.
I believe this is likely to have been the cause of recent PSCP
hanging issues.
Simon Tatham [Wed, 16 Mar 2005 13:20:02 +0000 (13:20 +0000)]
Fix `telnet-option-loop', I think. (Untested except to check it
compiles, since I don't have a suitably awkward server to run it
against; but Ben reviewed the patch before checkin so we can share
the blame if it doesn't work.)
[originally from svn r5512]
[this svn revision also touched putty-wishlist]
Jacob Nevins [Fri, 11 Mar 2005 15:52:59 +0000 (15:52 +0000)]
Retire MINGW32_FIX. It was a fix for a blatant bug in MinGW's windres, which
was fixed in CVS in 2000 (I think); and we now depend on MinGW much more
recent than that for various other reasons. I've tested with my current
MinGW (around 2.0.0 vintage) and the original symptoms (dodgy characters in
edit boxes) don't appear to show up.