1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-01-10 18:07:59 +00:00
Commit Graph

3741 Commits

Author SHA1 Message Date
Simon Tatham
ef099150a6 Fix 'Duplicate Session' on Windows, broken during the config revamp.
(In an embarrassingly silly way, too. No end of difficult stuff about
Conf serialisation done with great care and working just fine, and
then a trivial goof in using sscanf lets the whole lot down.)

[originally from svn r9237]
2011-07-20 15:55:07 +00:00
Simon Tatham
d690920710 Trivial fix for assertion failure introduced by the config revamp.
Spotted by Leonid Lisovskiy.

[originally from svn r9236]
2011-07-19 17:06:43 +00:00
Simon Tatham
363f57396f Minor amendment to r9226: don't log GSSAPI failure in the Event Log
twice. (Once in the GSSAPI code, once at the top of the main auth
loop. Removed the latter.)

[originally from svn r9232]
[r9226 == 0b79fe0bcb]
2011-07-18 18:09:36 +00:00
Simon Tatham
c33c02fb84 Reinstate a missing invocation of the FONT_QUALITY macro which I
accidentally removed in the big config revamp.

[originally from svn r9231]
2011-07-18 18:04:39 +00:00
Jacob Nevins
fadbd546fc Fix a typo in r9214 that plausibly explains a resizing weirdness I had with
today's snapshot on Windows.

[originally from svn r9230]
[r9214 == a1f3b7a358]
2011-07-17 22:35:08 +00:00
Simon Tatham
bd60f2fc5b Fix version reporting in Unix builds versioned by a specific svn
revision ('Custom build r1234'). Those builds were passing
'-DSVN_REV=r1234' to version.c, instead of -DSVN_REV=1234 as they
should have, leading to silly run-time version messages such as
'plink: Custom build rr9226'.

To chop the r off the front of the revision string passed in, I've
used a bashism in mkunxarc.sh. I think this is an acceptable extra
dependency.

[originally from svn r9229]
2011-07-17 22:17:53 +00:00
Simon Tatham
5cb0fb2927 --with-gtk-version option to configure, so you can explicitly tell it
which GTK version you want to build with if both are installed. Based
on a patch by Malcolm Smith, though somewhat modified.

[originally from svn r9228]
2011-07-17 22:17:40 +00:00
Simon Tatham
8aea84e894 Support for re-running autoconf in the absence of the autoconf macro
files which provide auto-detection of GTK 1 and GTK 2. This makes it
easier for casual PuTTY developers to rerun autoconf for their own
purposes without having to install obscure extra packages. Obviously
the resulting configure script will not know how to detect whichever
version of GTK they didn't have support for, so it won't be product-
quality by my standards, but it should be good enough that they can
prepare unrelated patches to send to us.

[originally from svn r9227]
2011-07-17 22:17:30 +00:00
Simon Tatham
0b79fe0bcb Reorganise the logging and display of messages about SSH
authentication. We should now produce an Event Log entry for every
authentication attempted and every authentication failure; meanwhile,
messages in the PuTTY window will not be generated for the failure of
auth types unless we also announced in the PuTTY window that we were
trying them. (GSSAPI was getting the latter wrong, leading to spurious
'Access denied' for many users of 0.61.)

[originally from svn r9226]
2011-07-16 12:06:32 +00:00
Simon Tatham
8cd720d608 Mostly cosmetic change: don't claim to have found an SSH agent if
SSH_AUTH_SOCK is defined to the empty string. (Because a common way to
'unset' it is to run commands like 'SSH_AUTH_SOCK= putty -load thing'.)

[originally from svn r9225]
2011-07-16 12:03:14 +00:00
Simon Tatham
4fd112e15d Fix display of VT100 vertically-offset horizontal line characters
(o,p,r,s). They are displayed in Windows by actually writing the
centred one (q) with a vertical offset, in case fonts don't have the
offset versions; this requires terminal.c to separate those characters
into distinct calls to do_text(). Unfortunately, it was only breaking
up a text-drawing call _before_ one of those characters, not after
one. Spotted by Robert de Bath.

[originally from svn r9221]
2011-07-16 11:13:00 +00:00
Simon Tatham
a474a598b5 Don't delete everything under a string-subkeyed primary key by using a
loop that fetches the next item using conf_get_str_strs and passing
the previous key as a parameter, because the previous key will have
been freed by the intervening conf_del_str_str. Instead, use the
technique of repeatedly using conf_get_str_nthstrkey with index 0 and
deleting what comes back, as PSCP and PSFTP do.

Spotted by Minefield with the aid of Jacob, or possibly vice versa.

[originally from svn r9220]
2011-07-15 18:30:47 +00:00
Simon Tatham
31fd55edf1 Missing free.
[originally from svn r9219]
2011-07-15 18:21:30 +00:00
Simon Tatham
1aeaff47a9 conf_copy_into must empty the entire target conf before filling it
with the entries from the source one, otherwise add234 will keep
failing ("this key already exists"). Completely broke Plink, ahem.

[originally from svn r9218]
2011-07-15 18:18:28 +00:00
Jacob Nevins
086764f5f4 When doing manual underlining, underline the text in question rather than a box
to the right of it. Probably introduced sometime around r9063.

[originally from svn r9217]
[r9063 == 00b32eda3c]
2011-07-15 16:03:06 +00:00
Simon Tatham
a1f3b7a358 Post-release destabilisation! Completely remove the struct type
'Config' in putty.h, which stores all PuTTY's settings and includes an
arbitrary length limit on every single one of those settings which is
stored in string form. In place of it is 'Conf', an opaque data type
everywhere outside the new file conf.c, which stores a list of (key,
value) pairs in which every key contains an integer identifying a
configuration setting, and for some of those integers the key also
contains extra parts (so that, for instance, CONF_environmt is a
string-to-string mapping). Everywhere that a Config was previously
used, a Conf is now; everywhere there was a Config structure copy,
conf_copy() is called; every lookup, adjustment, load and save
operation on a Config has been rewritten; and there's a mechanism for
serialising a Conf into a binary blob and back for use with Duplicate
Session.

User-visible effects of this change _should_ be minimal, though I
don't doubt I've introduced one or two bugs here and there which will
eventually be found. The _intended_ visible effects of this change are
that all arbitrary limits on configuration strings and lists (e.g.
limit on number of port forwardings) should now disappear; that list
boxes in the configuration will now be displayed in a sorted order
rather than the arbitrary order in which they were added to the list
(since the underlying data structure is now a sorted tree234 rather
than an ad-hoc comma-separated string); and one more specific change,
which is that local and dynamic port forwardings on the same port
number are now mutually exclusive in the configuration (putting 'D' in
the key rather than the value was a mistake in the first place).

One other reorganisation as a result of this is that I've moved all
the dialog.c standard handlers (dlg_stdeditbox_handler and friends)
out into config.c, because I can't really justify calling them generic
any more. When they took a pointer to an arbitrary structure type and
the offset of a field within that structure, they were independent of
whether that structure was a Config or something completely different,
but now they really do expect to talk to a Conf, which can _only_ be
used for PuTTY configuration, so I've renamed them all things like
conf_editbox_handler and moved them out of the nominally independent
dialog-box management module into the PuTTY-specific config.c.

[originally from svn r9214]
2011-07-14 18:52:21 +00:00
Simon Tatham
7aba365ca9 Readjust checklist, because actually the section on updating the
website _wasn't_ missing - I just looked straight past it somehow.
Fold the two versions together into one more complete than either.

[originally from svn r9206]
2011-07-12 19:59:15 +00:00
Simon Tatham
0efa9febca Various updates to the release checklist:
- for 'ixion' read 'atreus' throughout
 - the signature-checking commands needed minor modifications to cope
   with more *sums files
 - stated a few things explicitly which were previously implied, in
   case the next inter-release gap is also long enough for me to
   forget them.

[originally from svn r9205]
2011-07-12 19:56:00 +00:00
Simon Tatham
e869c58963 Bump version number prior to tagging 0.61 release.
[originally from svn r9202]
2011-07-12 18:26:18 +00:00
Simon Tatham
f1aadeed67 Fix the _rest_ of the Windows compile warnings. (ahem)
[originally from svn r9201]
2011-07-12 18:13:33 +00:00
Simon Tatham
1fda4423e0 Fix Windows compile warnings by adding explicit casts.
[originally from svn r9200]
2011-07-12 18:09:46 +00:00
Simon Tatham
b642aa086a Add a directory 'contrib/cygtermd', containing the source code for my
hacky helper program to let PuTTY act as a local pterm-oid on
Cygwin-enabled Windows systems.

[originally from svn r9191]
2011-07-10 14:22:32 +00:00
Simon Tatham
c8f2b65d16 Generate some checksum files with more up-to-date hash functions than
MD5. Shipped (and signed) alongside the existing 'md5sums' file.

[originally from svn r9189]
2011-07-10 11:45:52 +00:00
Jacob Nevins
3a649ed4ed Fix 'winadj-success': since at least one server (boks_sshd) blithely responds
to "winadj@putty.projects.tartarus.org" with SSH_MSG_CHANNEL_SUCCESS despite
probably having no idea what it means, treat this just the same as
SSH_MSG_CHANNEL_FAILURE instead of killing the connection.
Tested only as far as making sure that winadj/FAILURE with a normal server
isn't _completely_ broken.

[originally from svn r9185]
[this svn revision also touched putty-wishlist]
2011-07-01 21:53:41 +00:00
Simon Tatham
d764872e9e Rewrite gprefs() in settings.c so that its input mapping includes
information about where to put items that aren't mentioned in the
saved configuration. So far the only nontrivial use I've made of this
facility is to default to placing KEX_RSA just above KEX_WARN in the
absence of any other information, which should fix
'ssh2-rsa-kex-pref'.

While I'm here I've rewritten wprefs() on general principles to remove
the needless length limit, since I was touching it anyway. The length
limit is still in gprefs (but I've lengthened it just in case).

[originally from svn r9181]
2011-06-25 17:37:31 +00:00
Simon Tatham
af78191a9c Make Pageant use the same SID-selection logic as the Pageant client
code (as introduced in r9043), so that it uses the user SID rather
than the default SID.

This does change the access-control model, in that a Pageant running
with administrator privilege will now serve keys to an unprivileged
PuTTY running as the same user who started Pageant. Owen and I think
this isn't a problem (in particular, it will still not serve keys to a
_different_ user).

More importantly, making the Pageant client and server code work the
same way means that PuTTY and Pageant can still talk to each other
when UAC is turned off, which we've had several reports of r9043
having broken.

[originally from svn r9178]
[r9043 == 05f22632eb]
2011-06-08 20:47:07 +00:00
Simon Tatham
6e40a0db57 When we fail to get a response from Pageant, we should log the fact.
Currently, if the IPC exchange goes wrong, the Event Log just prints
"Pageant is running. Requesting keys." and then goes on to the next
step without ever saying what happened.

[originally from svn r9177]
2011-06-08 20:39:06 +00:00
Simon Tatham
934a5ad6b2 Fixes (mostly from Colin Watson, a couple redone by me) to make Unix
PuTTY compile cleanly under gcc 4.6.0 without triggering any of its
new warnings.

[originally from svn r9169]
2011-05-07 10:57:19 +00:00
Jacob Nevins
e70878bd3a The documentation was still claiming that we don't support x11-auth.
[originally from svn r9149]
2011-04-08 15:52:02 +00:00
Jacob Nevins
fbee8c409c Note the possibility of a pause due to /dev/random blocking.
[originally from svn r9125]
2011-03-09 18:10:47 +00:00
Jacob Nevins
74c5f7dda9 Implement zlib@openssh.com, using the rekey-after-userauth method suggested in
the wishlist entry.

[originally from svn r9120]
[this svn revision also touched putty-website,putty-wishlist]
2011-03-04 22:34:47 +00:00
Simon Tatham
d0b99ccee3 Colin Watson reports that gnome-session has been known to leave
SIGPIPE ignored in its child processes, leading to unexpected
behaviour inside pterms. (The gnome-session I'm sitting in front of
doesn't seem to do this as far as I can tell, but I don't doubt there
are some that do.) Add SIGPIPE to the list of signals we reset to
default behaviour before launching pterm's child process.

[originally from svn r9117]
2011-03-02 19:12:42 +00:00
Simon Tatham
09080057ca Set the 'must_close_session' flag at the end of close_session(), so
that we won't keep calling close_session() again the next time we go
round the message loop. Should fix unclean-close-hang. Thanks to Simon
Coleman for debugging.

[originally from svn r9115]
2011-03-02 18:52:03 +00:00
Jacob Nevins
91131fd197 Fix probably-harmless type mismatch in nogss.c (and #include "putty.h" to stop
it happening again; this was spotted by GCC's "-flto" option).

[originally from svn r9114]
2011-03-02 00:18:03 +00:00
Jacob Nevins
767778cf1b Add some extra validation to zlib decompression (primarily to shut up a GCC 4.6
warning).

[originally from svn r9113]
2011-03-01 23:44:06 +00:00
Jacob Nevins
d5790e1e72 Add some "#ifdef OPTIMISE_SCROLL" scar tissue to placate GCC 4.6
-Wunused-but-set-variable.

[originally from svn r9112]
2011-03-01 23:10:16 +00:00
Jacob Nevins
5eb70af8b1 Remove an unused variable (should shut up a warning from GCC 4.6).
[originally from svn r9111]
2011-03-01 23:04:37 +00:00
Jacob Nevins
1c28be2056 Use pid_t more consistently. Should shut up a warning from GCC 4.6, and may
conceivably help on platforms where int and pid_t aren't sufficiently similar.

[originally from svn r9110]
2011-03-01 23:00:32 +00:00
Simon Tatham
7957ca1153 Rejig the bottom-level loops in internal_mul_* to use pointers instead
of array indices. You'd hope that compilers could automatically turn
the one representation into the other if it was faster to do so, but
apparently not: even on gcc -O3, this source transformation gains over
15% performance.

[originally from svn r9105]
2011-02-22 19:09:27 +00:00
Simon Tatham
9d4005e5c1 Make bignum.py self-contained, by importing versions of the two
functions I was depending on from my personal Python maths utility
module.

[originally from svn r9104]
2011-02-22 00:06:12 +00:00
Simon Tatham
77180221bd Move the malloc and free of scratch space out of the internal_mul
routines into their callers, where they'll be done once for a whole
modpow rather than many times within each multiply. Doesn't save much
time as far as I can see - perhaps a couple of percent, one second in
the minute it takes to run the new bignum test suite - but seems like
a sensible idea anyway on general principles.

[originally from svn r9103]
2011-02-21 19:47:28 +00:00
Simon Tatham
7a0bd8247c A few more modpow tests, exercising the fallback option. This is
mostly so I can valgrind both and make sure they free all their
workspace - a memory leak in this code would be not merely an
inconvenience but a security hazard.

[originally from svn r9101]
2011-02-20 15:42:44 +00:00
Simon Tatham
15d7f8bb3e Add tests of modpow.
[originally from svn r9100]
2011-02-20 15:27:48 +00:00
Simon Tatham
1b47322c3b Nearly forgot. Reinstate the original unoptimised modpow, as a
fallback for when Montgomery is inapplicable.

(I may also at some point switch to using it for small exponents, if
speed testing should reveal that there's a noticeable threshold beyond
which preparing the Montgomery setup is uneconomical.)

[originally from svn r9099]
2011-02-20 15:14:02 +00:00
Simon Tatham
260cee498e Fix bug in Karatsuba multiplication, which affected propagation of a
carry by more than one word. Now the current set of test cases all
pass again.

[originally from svn r9098]
2011-02-20 15:06:39 +00:00
Simon Tatham
01d365b626 Beginnings of a test suite for the bignum code. The output of
testdata/bignum.py is twice the size of the rest of the PuTTY source
put together, so I'm not checking it in.

This reveals bugs in the new multiplication code, which I have yet to
fix.

[originally from svn r9097]
2011-02-20 14:59:00 +00:00
Simon Tatham
b22bdb2b0d Prompt for a remote username in rlogin connections, if one wasn't
specified in the configuration. Jacob's userpass abstraction proves
its worth in making this a trivial job.

(Actually reported by a user - somebody's still using rlogin!)

[originally from svn r9096]
2011-02-18 19:12:20 +00:00
Simon Tatham
fa85085640 Implement the Chinese Remainder Theorem optimisation for speeding up
RSA private key operations by making use of the fact that we know the
factors of the modulus.

[originally from svn r9095]
2011-02-18 08:25:39 +00:00
Simon Tatham
61875b87e3 Implement the Montgomery technique for speeding up modular
exponentiation by replacing the modulo operation by a cleverly chosen
multiplication. This was not worth doing in the previous state of the
code (because my multiply was about as slow as my modulo), but now
that multiplication has been sped up by the Karatsuba optimisation,
Montgomery becomes worthwhile.

[originally from svn r9094]
2011-02-18 08:25:38 +00:00
Simon Tatham
d9c3353176 Implement the Karatsuba technique for recursive divide-and-conquer
optimisation of large multiplies.

[originally from svn r9093]
2011-02-18 08:25:37 +00:00