Simon Tatham [Sat, 27 Sep 2003 17:52:34 +0000 (17:52 +0000)]
First cut at speeding up SFTP. Generic download-management code in
sftp.c, and psftp.c now uses that instead of going it alone. Should
in principle be easily installed in PSCP as well, but I haven't done
it yet; also it only handles downloads, not uploads, and finally it
doesn't yet properly calculate the correct number of parallel
requests to queue. Still, it's a start, and in my own tests it
seemed to perform as expected (download speed suddenly became
roughly what you'd expect from the available bandwidth, and
decreased by roughly the expected number of round-trip times).
Jacob Nevins [Tue, 2 Sep 2003 19:00:17 +0000 (19:00 +0000)]
When loading SSH-2 key, ignore passphrase argument if key is unencrypted.
This should get rid of a problem that three or four people reported where
PuTTY intermittently reports "Unable to load private key" (MAC failed).
(ssh.c:do_ssh2_authconn() should also initialise its passphrase so it's not
passing garbage passphrases around, of course, but I haven't yet worked out
where the best place in the auth loop to do that would be.)
Jacob Nevins [Fri, 29 Aug 2003 22:52:57 +0000 (22:52 +0000)]
Work towards wish `keyfile-diagnostic'. Many sshpubk.c keyfile-loading
functions have sprouted `**errorstr' arguments, which if non-NULL can
return a textual error message. The interface additions are patchy and
ad-hoc since this seemed to suit the style of the existing interfaces.
I've since realised that most of this is masked by sanity-checking that
gets done before these functions are called, but it will at least report
MAC failures and the like (tested on Unix), which was the original point
of the exercise.
Note that not everyone who could be using this information is at the
moment.
Simon Tatham [Mon, 25 Aug 2003 13:53:41 +0000 (13:53 +0000)]
Windows PSCP now links against winsftp.c, and scp.c is now a
platform-independent source file. Haven't yet added the extra
abstraction routines to uxsftp.c to create a Unix PSCP port, but it
shouldn't take long.
Also in this checkin, a change of semantics in platform_default_s():
now strings returned from it are expected to be dynamically allocated.
Simon Tatham [Sun, 24 Aug 2003 13:22:17 +0000 (13:22 +0000)]
And just to prove that psftp.c really is now platform-independent
... here's a Unix port of PSFTP. Woo. (Oddly PSCP looks to be
somewhat harder; there's more Windows code interleaved than there
was in PSFTP.)
Jacob Nevins [Thu, 21 Aug 2003 19:48:45 +0000 (19:48 +0000)]
Fix for `slow-startup-printer': use PRINTER_INFO_4 on NT-class systems, which
apparently tries less hard to find printers so won't slow the system down.
Tested on 2000 and 98; in both cases printer enumeration and printing worked
as well as they did in 2003-08-21.
Made a single shared copy of osVersion in winmisc.c so that printing.c can
find it. Made other users (window.c, pageant.c) use this copy.
Simon Tatham [Thu, 21 Aug 2003 18:39:17 +0000 (18:39 +0000)]
Richard B's patch to enable users to explicitly request shadow bold
by disabling bold-font-name guessing (if their bold fonts are ugly).
I've turned the UI inside out, but the meat is pretty much the same.
Simon Tatham [Thu, 21 Aug 2003 18:07:27 +0000 (18:07 +0000)]
Richard B's patch to support X cut buffers as well as ordinary
selections, meaning that (a) a pterm can leave copied text in the
cut buffer after it terminates so that applications can pick it up
even though it isn't still around to deliver the selection in
person, and (b) pterm can pick up things left in this way by other
apps.
Downside is that all of this only happens in ISO8859-1, because X is
weird like that.
Simon Tatham [Thu, 21 Aug 2003 18:03:06 +0000 (18:03 +0000)]
Richard Boulton's patch for improved correctness in selection
handling (generally, selection request timestamps should be set to
the timestamp on the event that caused them).
Jacob Nevins [Thu, 7 Aug 2003 16:04:33 +0000 (16:04 +0000)]
Control of 'addr' is now handed over to {platform_,}new_connection() and
sk_new() on invocation; these functions become responsible for (eventually)
freeing it. The caller must not do anything with 'addr' after it's been passed
in. (Ick.)
Why:
A SOCKS5 crash appears to have been caused by overzealous freeing of
a SockAddr (ssh.c:1.257 [r2492]), which for proxied connections is
squirreled away long-term (and this can't easily be avoided).
It would have been nice to make a copy of the SockAddr, in case the caller has
a use for it, but one of the implementations (uxnet.c) hides a "struct
addrinfo" in there, and we have no defined way to duplicate those. (None of the
current callers _do_ have a further use for the SockAddr.)
As far as I can tell, everything _except_ proxying only needs addr for the
duration of the call, so sk_addr_free()s immediately. If I'm mistaken, it
should at least be easier to find the offending free()...
Jacob Nevins [Sat, 12 Jul 2003 13:45:21 +0000 (13:45 +0000)]
Add SSH-1 password camouflage bug detection for version OSU_1.4alpha3 of the
OSU VMS SSH server <http://kcgl1.eng.ohio-state.edu/~jonesd/ssh/>.
The changelog appears to indicate that the server was fixed for pwplain1 at
1.5alpha4, and for IGNORE and DEBUG messages at 1.5alpha6. However I'm going
to go on the reports we've had as I haven't tested this; and they indicate
only that 1.5alpha6 is known not to require any bug compatibility modes.
(I wasn't sure whether to add this at all, given that upgrading to version
OSU_1.5alpha6 is an easy way to fix the problem. However, there is precedent
for adding detection for old versions of servers which have since been fixed.)
Simon Tatham [Sun, 29 Jun 2003 14:26:09 +0000 (14:26 +0000)]
First phase of SFTP re-engineering. Each base-level fxp_* function
has been split into a send half and a receive half, so that callers
can set several requests in motion at a time and deal with the
responses in whatever order they arrive.
Simon Tatham [Sat, 28 Jun 2003 14:11:28 +0000 (14:11 +0000)]
Failure to set multipliers[NPRIMES] was rendering the input-modulus
feature (make sure your prime is not congruent to Foo mod Bar)
largely ineffective. As a result, RSA keys were being generated
every so often with at least one prime congruent to 1 mod 37,
causing modinv(37, phi(n)) to divide by zero, and rightly so. I
believe this fixes `puttygen-zero-div'.
Simon Tatham [Sat, 28 Jun 2003 14:10:06 +0000 (14:10 +0000)]
bignum_mod_short shouldn't be depending on a fixed place value in
the bignum data! This wasn't actually causing puttygen-zero-div (its
unwarranted assumption was still correct under Windows) but it would
have caused the same symptoms under Unix when I got round to porting
PuTTYgen.
Simon Tatham [Thu, 26 Jun 2003 13:41:30 +0000 (13:41 +0000)]
Fix a segfault (non-security-critical - null dereference for
reading) in the zlib code when fed certain kinds of invalid data. As
a result, ssh.c now needs to be prepared for zlib_decompress_block
to return failure.
Jacob Nevins [Wed, 25 Jun 2003 15:52:29 +0000 (15:52 +0000)]
Incorporate Brad Clarke's suggestion to use "REGEDIT /EA" rather than
"REGEDIT /E". On newer versions of Windows (verified on 2K), this will cause
the .REG file to be saved in REGEDIT4 format (ASCII) which can be read by
older Windows, rather than REGEDIT5 (Unicode). On older Windows, the extra "A"
is harmless (verified on Win98).
Ben Harris [Sat, 21 Jun 2003 22:40:42 +0000 (22:40 +0000)]
Improve SCOANSI emulation: The colours that SGR 0 returns to are now changed
by the SCO SNF and SNB sequences, which seems to be what the SCO console does
(at least in the new mode documented for OpenServer 5.0.6).
Ben Harris [Sat, 21 Jun 2003 19:38:56 +0000 (19:38 +0000)]
Add comments to case statements containing the mnemonics for the various
escape and control sequences. This should make it easier to find the
implementation of the one you're interested in.
Simon Tatham [Tue, 27 May 2003 09:43:14 +0000 (09:43 +0000)]
Experimental change in the behaviour of `disable alternate terminal
screen'. Now it also disables the save-and-restore-cursor behaviour
of ESC[?1048h and ESC[?1049h, since these sequences seem to be
output by software trying to switch to the alternate screen, and it
looks very odd to have the cursor position restored to where it was
before `less' when the garbage `less' wrote all over the screen is
still around. The `traditional' ESC 7 and ESC 8 still function as
normal, on the basis that they aren't usually used in conjunction
with the alternate screen. I'm not sure whether this will be the
right decision; I'm prepared to change it back if a sufficiently
serious counterexample shows up.
Jacob Nevins [Sat, 24 May 2003 19:03:34 +0000 (19:03 +0000)]
Add exceptions for "VShell" to the ssh.com bug compatibility modes (which are
just numbers) in an attempt to fix `vshell-no-bug-compat'.
Not even tested a little bit.
Simon Tatham [Sat, 24 May 2003 12:31:32 +0000 (12:31 +0000)]
Modified form of Jim Lucas's PC speaker patch. I don't like
discriminating on the Windows version in order to decide whether to
call MessageBeep(-1) or Beep() - I'd prefer to directly test the
specific OS property in any given case - but it looks as if this is
the best available option.
Jacob Nevins [Sat, 24 May 2003 10:57:53 +0000 (10:57 +0000)]
Incorporate matthew.gabeler-lee's suggested fix for badness with multiple
exact hostnames in the proxy exclusion list.
<OF63043512.26ABC6B9-ON85256D21.006C33C6-85256D21.006C4B81@EU.novartis.net>
Simon Tatham [Tue, 13 May 2003 19:57:17 +0000 (19:57 +0000)]
Real COMPOUND_TEXT support! I was expecting to have to read the spec
and implement the required subset of ISO-2022 in libcharset, but it
turns out that Xlib provides conversion functions between UTF-8 and
compound text, which are just about ideal for us. So now we can
paste multilingual stuff both to and from emacs21. Rock on.
Simon Tatham [Tue, 13 May 2003 18:43:30 +0000 (18:43 +0000)]
Allow pterm to receive selections in compound text format. Doesn't
actually _understand_ compound text yet - anything with
non-ASCII-or-8859-1 characters will fail miserably - but it will at
least successfully receive plain text if the pasting application
doesn't see fit to give it out in any other format.
Simon Tatham [Tue, 13 May 2003 18:23:43 +0000 (18:23 +0000)]
Rename crc32() to crc32_compute(), to avoid clashing catastrophically
with the crc32() function in the zlib interface. (Not that PuTTY
itself _uses_ zlib, but on Unix it's linked against libgtk which
uses libpng which uses zlib. And zlib has poor namespace management
so it defines this ridiculously intrusive function name. Arrrrgh.)
Simon Tatham [Tue, 13 May 2003 18:14:14 +0000 (18:14 +0000)]
Debian bug #193013 points out that the (default-)one-pixel border is
not redrawn when the window background colour is reconfigured mid-
session. In addition, the Official Window Background is not reset,
meaning that opaque resizes etc will flicker in the old background
colour. This checkin should fix both.
Simon Tatham [Sun, 11 May 2003 12:28:53 +0000 (12:28 +0000)]
I think I've just fixed Debian bug #166396. The +ut option was
causing pty_utmp_helper_pipe to be closed, but its fd was kept
around even when stale, and closed again when the main child process
terminated - by which time the fd number had been reused for a
rather more vital fd, which GTK didn't appreciate having closed
under its feet. Hence, spin on POLLNVAL. Should now be sorted.
Ben Harris [Sat, 10 May 2003 20:23:23 +0000 (20:23 +0000)]
Change the way that panel-switching works so that we only hide the panel
we're switching from and show the panel we're switching to, rather than
iterating over all the panels, hiding and showing them as appropriate.
This has that consequence that all controls have to be created invisible,
since they no longer get hidden after creation. As usual, the scroll
bars on list boxes have a special hack of their own.
Simon Tatham [Sat, 10 May 2003 10:15:00 +0000 (10:15 +0000)]
pterm will now attempt to guess suitable names for any missing fonts
from the ones given; so it'll ask for a font twice as wide as your
base one if you don't specify a wide font, it'll ask for a bolded
version of your base font if you don't specify a bold font, and
similarly for a wide/bold font. Should solve Debian bug #187389; at
least it works for me.
Simon Tatham [Sat, 10 May 2003 09:05:41 +0000 (09:05 +0000)]
Stupid braino in get_window_title (thanks Colin): window and icon
titles were being reported the wrong way round. Should fix half of
Debian bug #191751.
Simon Tatham [Sat, 10 May 2003 08:35:54 +0000 (08:35 +0000)]
Fixes for Debian bug #192701 (64-bit gccs warn about casts between
ptrs and ints of different size and -Werror makes this serious).
The GTK bits are done by Colin's patch to use GINT_TO_POINTER
(thanks); the uxnet bits are done by cleaning up the rest of the
code. In particular, network.h now typedefs `OSSocket' to be a type
capable of holding whatever the OS's socket data type is that
underlies our socket abstraction. Individual platforms can make this
typedef themselves if they define OSSOCKET_DEFINED to prevent
network.h redoing it; so the Unix OSSocket is now int. Default is
still void *, so other platforms should be unaffected.
Simon Tatham [Wed, 7 May 2003 13:14:48 +0000 (13:14 +0000)]
Bah. Stop the Proxy panel appearing empty in Change Settings. One
day I'll make a reasonably big checkin and _not_ have six tiny mop-
up issues after it...
Simon Tatham [Wed, 7 May 2003 12:07:23 +0000 (12:07 +0000)]
Yesterday's proxy enhancements also slightly nadgered the config
box, in that it started to expand under the weight of proxy options.
Now fixed, by folding the SOCKS version selector into the general
proxy type selector so there's one single 5- or 6-way radio button
set split over two lines. settings.c has of course grown a backwards
compatibility wart to deal with legacy config data.
Simon Tatham [Wed, 7 May 2003 08:49:57 +0000 (08:49 +0000)]
Ahem. Well, the complicated Unix implementation of
platform_new_connection() worked fine, but the really simple stub
version for the other ports fell over horribly because I got its
name wrong. NEVER ASSUME YOU'VE DONE THE EASY BIT RIGHT.
Simon Tatham [Tue, 6 May 2003 19:52:31 +0000 (19:52 +0000)]
Support, on Unix only (so far), for OpenSSH-style generic proxying
(running a local command in a pair of pipes and proxying through
that, for example `ssh proxyhost nc -q0 %host %port').
Simon Tatham [Mon, 28 Apr 2003 13:59:32 +0000 (13:59 +0000)]
Asynchronous agent requests on Windows. Actually, I've kept the
ability to do synchronous ones as well, because PSCP and PSFTP don't
really need async ones and it would have been a serious pain to
implement them. Also, Pageant itself when run as a client of its
primary instance doesn't benefit noticeably from async agent
requests.
Simon Tatham [Mon, 28 Apr 2003 11:41:39 +0000 (11:41 +0000)]
First half of `pageant-async' work. agent_query() is now passed a
callback function; it may return 0 to indicate that it doesn't have
an answer _yet_, in which case it will call the callback later on
when it does, or it may return 1 to indicate that it's got an answer
right now. The Windows agent_query() implementation is functionally
unchanged and still synchronous, but the Unix one is async (since
that one was really easy to do via uxsel). ssh.c copes cheerfully
with either return value, so other ports are at liberty to be sync
or async as they choose.
Simon Tatham [Sun, 27 Apr 2003 11:10:48 +0000 (11:10 +0000)]
Support for non-ISO-8859-1 X keysyms. So in particular, pterm in a
Euro-supporting font with a Euro-enabled X key map will now actually
generate a Euro character rather than shrugging and doing nothing.