Timeline

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

298 check-ins using file unix/uxmisc.c version 9467809709

2006-11-28
15:51
Correct an embarrassingly wrong comment. check-in: 3c8ea162b2 user: simon tags: trunk
2006-11-23
08:32
I've just discovered that using the saved sessions menu from Unix PuTTY causes the child process to inherit a lot of socket fds from its parent, which is a pain if one of them then ends up holding open a listening socket which the parent was using for port forwarding after the parent itself is dead. Therefore, this checkin sprinkles FD_CLOEXEC throughout the Unix platform directory wherever there looks like being a long-lived fd. check-in: 1002c29630 user: simon tags: trunk
2006-11-18
09:10
Reinstate as much of the Windows font-linking behaviour as I can easily manage, by adopting a hybrid approach to Unicode text display. The old approach of simply calling ExtTextOutW provided font linking without us having to lift a finger, but didn't do the right thing when it came to bidirectional or Arabic-shaped text. Arabeyes' replacement exact_textout() supported the latter, but turned out to break the former (with no warning from the Windows API documentation, so it's not their fault). So now I've got a second wrapper layer called general_textout(), which splits the input string into substrings based on bidi character class. Any character liable to cause bidi or shaping behaviour if fed straight to ExtTextOutW is instead fed through Arabeyes' exact_textout(), but the rest is fed straight to ExtTextOutW as it used to be. The effect appears to be that font linking is restored for all characters _except_ Arabic and other bidi scripts, which means in particular that we are no longer in a state of regression over 0.57. (0.57 would have done font linking on Arabic as well, but would also have misbidied it, so we've merely exchanged one failure mode for another slightly less harmful one in that situation.) check-in: 76941fa153 user: simon tags: trunk
2006-11-15
17:42
Chris Boucher spotted that after "-nc" was added (r6823), cfg->ssh_nc_host was not always initialised, which could lead to spurious attempts to open a bogus channel (typically refused: "FATAL ERROR: Server refused to open a direct-tcpip channel"). Fixed. check-in: 8472f487a9 user: jacob tags: trunk
17:12
(Config).remote_cmd2[512] was added in r1208, but it wasn't used then and isn't now, so presumably never has been. Remove. check-in: ba05ea5d22 user: jacob tags: trunk
06:56
publickeyfile now an RFC check-in: 81eb81326b user: jacob tags: trunk
05:48
Link to faq-cleanup from faq-settings. check-in: 5174b633ca user: jacob tags: trunk
2006-11-08
15:15
There's been an increase in people posting non-SSH PuTTY-related questions to comp.security.ssh, posting queries that are clearly about PuTTY to newsgroups without actually mentioning PuTTY, and so on. They may have been directed there by this document :( Add a futile attempt to instil a sense of etiquette. check-in: eac1e0cf0e user: jacob tags: trunk
2006-11-07
18:55
Administrivia: most SSH-2 specs are no longer drafts. check-in: a5a1de44c9 user: jacob tags: trunk
2006-10-31
10:59
Tiny comment fix. check-in: 2a8b9e487d user: jacob tags: trunk
2006-10-22
15:19
Spotted by Tim Kosse: we were returning an incorrect path in canonify() when we couldn't get any sense out of the server. check-in: a809c336dd user: jacob tags: trunk
14:51
Minor semantic tweak to bug-compatibility modes: make BUG_NEEDS_SSH1_PLAIN_PASSWORD do exactly what it says on the tin, independent of whether BUG_CHOKES_ON_SSH1_IGNORE is set. This is invisible in the default configuration, as all servers marked as having the second bug have the first one too, but it would allow one to manually configure PuTTY to cope with a SSH-1 server that got upset by ignore messages during authentication, but was fine with their use as keepalives. check-in: d0102515d4 user: jacob tags: trunk
2006-10-03
12:16
Disable a bunch of undesirable termios flags. ICRNL, in particular, is liable to have been set on serial ports previously used as terminal devices, and definitely wants not to be set on serial ports being used for callout. check-in: b632e7b72f user: simon tags: trunk
2006-10-02
15:52
IXON and IXOFF belong in _iflag_, not cflag! While I'm here, be more reliable in clearing of RTS/CTS flags. check-in: 4a236e9e9f user: simon tags: trunk
2006-09-21
06:48
Fix breakage of `Restart Session' in r6802. When restarting the session, we were clearing the new session_closed flag, but failing to clear must_close_session; with that set, the session was being opened but immediately re-closed. check-in: 856b30b874 user: simon tags: trunk
2006-09-15
09:44
Note that the dynamic-tunnel proxy does not support UDP, since we get asked about this quite often. check-in: 83c7b4cc04 user: jacob tags: trunk
2006-09-05
17:08
CSI 3 J now clears the scrollback, as in xterm. check-in: de3c767e85 user: jacob tags: trunk
16:41
I seem to have slightly funted Plink's display of banners etc in r6437, oops. Fixed. check-in: 93bc517218 user: jacob tags: trunk
16:39
Slight change to password expiry UI for the benefit of Cisco servers, which are as usual slightly odd. check-in: 2887f76e0f user: jacob tags: trunk
2006-09-03
09:31
Support for an alternative mechanism for displaying wide characters under X: instead of having two separate fixed-width fonts one of which is twice the width of the other, you can instead have a single font in which some characters are twice as wide as others. This is implemented very simply: if you specify a wide font, it will be used for wide characters, and if you don't then the normal font will be used for wide characters (so they'd better _be_ wide in that font, or there'll be trouble). I got this idea from Jed, whose latest version supports UTF-8 and requires a font of this type. If there are going to be X fonts like that kicking around, there will doubtless be people who want to use them. check-in: 8007266fdc user: simon tags: trunk
07:55
Add a mini-rant to the top comment explaining why threads are required. (I just tried getting rid of them; it worked fine for serial ports, but not for anything else. The Windows I/O API sucks.) check-in: b2cd494085 user: simon tags: trunk
2006-08-29
16:46
Updates for today's changes: - changes to Logging panel - breaks in serial backend (Plus, completely unrelated, an index term entry related to port forwarding which seems to have been sitting around for ages, possibly waiting for me to think about `see also' index terms in Halibut.) check-in: 8f65282e5c user: jacob tags: trunk
14:07
New logging mode, which records the exact bytes sent over the wire in an SSH connection _in addition_ to the decrypted packets. This will hopefully come in useful for debugging wire data corruption issues: you can strace the server, enable this mode in the client, and compare the sent and received data. I'd _like_ to have this mode also log Diffie-Hellman private exponents, session IDs, encryption and MAC keys, so that the resulting log file could be used to independently verify the correctness of all cryptographic operations performed by PuTTY. However, I haven't been able to convince myself that the security implications are acceptable. (It doesn't matter that this information would permit an attacker to decrypt the session, because the _already_ decrypted session is stored alongside it in the log file. And I'm not planning, under any circumstances, to log users' private keys. But gaining access to the log file while the session was still running would permit an attacker to _hijack_ the session, and that's the iffy bit.) check-in: 5b5937160f user: simon tags: trunk
13:50
Explicitly closing logctx on various kinds of error exit means that the log file gets fclosed properly and the critical last few messages might be recoverable from the log file more often... check-in: b802bd4ac5 user: simon tags: trunk
13:32
The Windows HANDLE type, despite being a `void *', does not actually behave like a pointer. In particular, the right thing to set a HANDLE to to indicate that it's invalid is INVALID_HANDLE_VALUE, not NULL. Crack down on sloppy use of NULL HANDLEs across all Windows code. (There is one oddity, which is that {Create,Open}FileMapping are documented to return a NULL HANDLE instead of INVALID_HANDLE_VALUE on failure. Shrug. If MS want to be inconsistent, I suppose I have to live with it.) check-in: 8c6438590b user: simon tags: trunk
13:20
Support for sending serial breaks, in both the Windows and Unix serial backends. check-in: 92fba70907 user: simon tags: trunk
04:18
Inhibit the Serial configuration panel in mid-session if the session isn't a serial one. In particular, this causes pterm not to fail an assertion if you select `Change Settings'. Ahem. check-in: 0f9a8f4bb2 user: simon tags: trunk
2006-08-28
14:09
Apparently MsgWaitForMultipleObjects doesn't always return the values one might expect, which means that GetMessage() was occasionally blocking the process. That appears to be the last of the annoying data loss issues, so I think the Windows serial back end actually looks vaguely reliable now. Phew. check-in: b83e5fdf72 user: simon tags: trunk
13:36
That OVERLAPPED fix seems to have made flow control useful as well (presumably Windows's serial buffer is actually _filling up_, causing an XOFF to be sent, now that my dodgy I/O code isn't causing it to leak). So I think I'll switch the default flow control to XON/XOFF, since it actually seems to do something now. check-in: eca76f8423 user: simon tags: trunk
13:27
Eep! Next bit flag after 1 and 2 is _4_, not 3. Perhaps it's time I stopped coding and went and sat down quietly and tried not to touch anything for a while. check-in: 8e09b64fa5 user: simon tags: trunk
13:26
Reading 4K at a time from a serial port turns out to be a bit unfriendly in an interactive session, because at 19200 baud it takes nearly two seconds to receive that much data, and as long as the data is flowing continuously Windows waits until it has a full buffer. So here's another annoying flag in the winhandl API, which restricts reads to length 1 so that serial output shows up as it appears. (I tried this yesterday, but without the OVERLAPPED fix in r6826 it behaved very erratically. It now seems solid.) check-in: da46d6cd48 user: simon tags: trunk
13:16
Apparently it helps for an OVERLAPPED structure to contain a valid event handle. This seems to have fixed _some_, but not all, of the curious data loss issues in the Windows serial backend. check-in: 51fdd5e6b1 user: simon tags: trunk
12:47
Minor tweaks to -nc: - log host:port in event log - add -nc to Plink usage message check-in: 6310d3d2a4 user: jacob tags: trunk
12:41
Missed a couple of instances of cfg_launchable(). check-in: 451f6c4481 user: simon tags: trunk
10:12
New command-line option in Plink (and PuTTY, though it's less useful there): `plink host -nc host2:port' causes the SSH connection's main channel to be replaced with a direct-tcpip connection to the specified destination. This feature is mainly designed for use as a local proxy: setting your local proxy command to `plink %proxyhost -nc %host:%port' lets you tunnel SSH over SSH with a minimum of fuss. Works on all platforms. check-in: 3171b7e2b9 user: simon tags: trunk
09:29
Serial back end for Unix. Due to hardware limitations (no Linux box I own has both an X display and a working serial port) I have been unable to give this the full testing it deserves; I've managed to demonstrate the basic functionality of Unix Plink talking to a serial port, but I haven't been able to test the GTK front end. I have no reason to think it will fail, but I'll be more comfortable once somebody has actually tested it. check-in: d6cb32325e user: simon tags: trunk
08:08
... and here's the rest of r6820. Ahem. check-in: 7f2ba0608e user: simon tags: trunk
08:08
Because not all OSes will support the same set of serial port options, here's a slight change to the API of ser_setup_config_box() to make it filter its parity and flow control options using platform-supplied bit masks. check-in: 55bede7fcd user: simon tags: trunk
06:33
Fix small event log bug. check-in: 8f84a68c51 user: simon tags: trunk
06:32
Forgot to initialise serial->bufsize to zero. check-in: 13da7f5aa9 user: simon tags: trunk
06:13
Fix line endings (svn:eol-style properties and actual CRs). check-in: a85def1d7c user: simon tags: trunk
05:35
Support for Windows PuTTY connecting straight to a local serial port in place of making a network connection. This has involved a couple of minor infrastructure changes: - New dlg_label_change() function in the dialog.h interface, which alters the label on a control. Only used, at present, to switch the Host Name and Port boxes into Serial Line and Speed, which means that any platform not implementing serial connections (i.e. currently all but Windows) does not need to actually do anything in this function. Yet. - New small piece of infrastructure: cfg_launchable() determines whether a Config structure describes a session ready to be launched. This was previously determined by seeing if it had a non-empty host name, but it has to check the serial line as well so there's a centralised function for it. I haven't gone through all front ends and arranged for this function to be used everywhere it needs to be; so far I've only checked Windows. - Similarly, cfg_dest() returns the destination of a connection (host name or serial line) in a text format suitable for putting into messages such as `Unable to connect to %s'. check-in: d160e39029 user: simon tags: trunk
2006-08-27
06:55
Now that Local proxy type exists on both Unix and Windows, document it and associated stuff. check-in: 7771df9f07 user: jacob tags: trunk
05:00
Grow some nasty warts on the side of winhandl.c, in preparation for a serial port backend: - In order to do simultaneous reading and writing on the same HANDLE, you must enable overlapped access and pass an OVERLAPPED structure to each ReadFile and WriteFile call. This would make sense if it were an optional thing I could do if I wanted to do the reading and writing in the same thread, but making it mandatory even if I'm doing them in _different_ threads is just annoying and arbitrary. - Serial ports occasionally return length 0 from ReadFile, for no particularly good reason. Fortunately serial ports also don't have a real EOF condition to speak of, so ignoring EOFs is actually a viable response in spite of sounding utterly gross. Hence, handle_{input,output}_new() now accept a flags parameter, which includes a flag to enable the OVERLAPPED bureaucracy and a flag to cause EOFs to be ignored on input handles. The current clients of winhandl.c do not use either of these. check-in: 57c8f4b305 user: simon tags: trunk
04:53
Remove spurious #include. check-in: 2510e22900 user: simon tags: trunk
03:34
Call console_provide_logctx _before_ initialising the back end, so that logevent() will go to stderr in -v mode even during the back end init function. check-in: ed9c98fc34 user: simon tags: trunk
03:03
The `socket' function in the backends is only ever checked to see if it's NULL. Since we already have one back end (uxpty) which doesn't in fact talk to a network socket, and may well have more soon, I'm replacing this TCP/IP-centric function with a nice neutral `connected' function returning a boolean. Nothing else about its semantics has currently changed. check-in: 32affe9699 user: simon tags: trunk
2006-08-26
05:59
It's critically important that the local proxy process should not inherit _our_ ends of its I/O pipes! Otherwise, closing our copy of those handles does not cause it to see EOF on its stdin, because it's holding the pipe open itself. check-in: 6f9311ed1e user: simon tags: trunk
05:58
We _can_ have handle_throttle() called on defunct handles after all, so it should just do nothing rather than failing an assertion. check-in: 4c082609c7 user: simon tags: trunk
05:20
ProxyCommand support for Windows, using the new winhandl.c API. Seems a bit clunky when I actually try to use it - not sure why - but I think all the actual functionality is there. check-in: d173edc72d user: simon tags: trunk
05:19
Another bug fix: always set the busy flag when telling a subthread to do something, otherwise handle_get_events will forget to tell the front end to check for that subthread finishing. This applies even when we're only setting `busy' to tell the subthread to terminate! check-in: 1ec96c6c9f user: simon tags: trunk
05:18
Cleanups to reduce dependency on Windows SFTP tools always having a real network socket. check-in: bb3428dea2 user: simon tags: trunk
05:17
On cleanup, PSCP and PSFTP should explicitly check that the back end is still running rather than relying on ssh_sftp_loop_iteration() to return a bogus value. check-in: 3f40f538fa user: simon tags: trunk
05:04
Start using notify_remote_exit() in the Windows front end, in place of the previous ad-hockery which depended on the return value from select_result() and hence which will not adapt sensibly to a world in which the primary session is something local rather than a network connection. check-in: ce96560653 user: simon tags: trunk
04:21
Return a non-zero exit code in the event of a fatal-error SSH session termination. `Close window only on clean exit' was not working properly on Unix in the absence of this: notify_remote_exit() was being called and ssh_return_exitcode was returning zero, causing gtk_main_quit() to be called, _before_ connection_fatal() happened. check-in: da0b093aaa user: simon tags: trunk
03:37
Always initialise the `addresses' field of a SockAddr to NULL, because it gets unconditionally sfree()d in sk_addr_free(). This just bit me when running under the MSVC debugger; not sure how it hasn't bitten anyone until now! check-in: 6d715080f0 user: simon tags: trunk
03:15
Bug fix: since the input thread does not wait for the event object until _after_ its first read, we should not start by signalling that object in order to trigger the first read. Ahem. check-in: bb6d97d9b2 user: simon tags: trunk
02:41
Small tweak to the new handle API: provide a `privdata' field in each handle structure, set on initialisation and readable by an API call. check-in: 620f32c917 user: simon tags: trunk
2006-08-25
17:10
New piece of Windows infrastructure: winhandl.c takes Plink's thread-based approach to stdin and stdout, wraps it in a halfway sensible API, and makes it a globally available service across all network tools. There is no direct functionality enhancement from this checkin: winplink.c now talks to the new API instead of doing it all internally, but does nothing different as a result. However, this should lay the groundwork for several diverse pieces of work in future: pipe-based ProxyCommand on Windows, a serial port back end, and (hopefully) a pipe-based means of communicating with Pageant, which should have sensible blocking behaviour and hence permit asynchronous agent requests and decrypt-on-demand. check-in: 2156c9bb4b user: simon tags: trunk
2006-08-15
17:48
Er, ahem. Other half of r6788. :-/ check-in: 0544b4b30e user: simon tags: trunk
15:29
Shifts left and right by 32 were tripping a gcc warning (fatal with -Werror, of course) about shifting by more than the range of a data type. They only appeared in `if' statements testing sizeof(off_t), but gcc warns even when the code is unreachable. I've removed the conditional code (the general case should still work even on 32-bit machines), and hacked each shift by 32 into a pair of shifts by 16. Note that the gcc warning is not just a helpful indication that you may be using the wrong data type; it's actually pointing out ANSI- undefined behaviour in shifting a signed integer beyond the size of its type. check-in: 3771100200 user: simon tags: trunk
07:45
Aha! At long last I've managed to reproduce the intermittent problem I've been having with the cursor sometimes restoring to the wrong place when screen(1) terminates. The offending sequence of escape sequences goes ESC 7 (save cursor), ESC [?47h (switch to alternate screen), ESC 7 (save cursor _again_), do some stuff, ESC 8 (restore cursor), run screen session for a bit, ESC [?47l (return to main screen), ESC 8 (restore cursor). The final ESC 8 is expected to restore the cursor to where it was saved by the initial ESC 7. Translation: the ESC 7 saved cursor state is part of the state we must swap out when switching to the alternate screen. In other words, we need to track _four_ cursor positions: active and saved, on each of main and alternate screen. Previously we were tracking only three. check-in: b6448111db user: simon tags: trunk
2006-08-12
10:20
Large file support for psftp and pscp on both Windows and Unix. On Unix we set _FILE_OFFSET_BITS to 64 on the compiler command line (via mkfiles.pl), and on Windows we use SetFilePointer and GetFileSize to cope with 64-bit sizes where possible. Not tested on Win9x. check-in: ec84bb61b9 user: owen tags: trunk
2006-08-05
08:48
Some extra int64 functions. check-in: 7655cbbe4f user: owen tags: trunk
2006-07-07
15:56
Spell out more explicitly what needs to be done with vanilla VC6, since it seems to be becoming a FAQ. check-in: 704a813ad8 user: jacob tags: trunk
09:18
Random Unix puttygen improvements highlighted by a post to comp.security.ssh: - fix diagnostic if keyfile and '-t' both specified - add diagnostic for generating a key but discarding the private part - document '-q' option check-in: 7eabb3b6ff user: jacob tags: trunk
2006-06-20
16:10
In the config dialog, clip RGB values to [0..255] rather than reducing them mod 256. Document that the RGB values can be edited, and their range. check-in: c17530c621 user: jacob tags: trunk
2006-06-17
08:01
When Unix PuTTYgen gives brief usage information, it should mention "--help"! check-in: b9a8213d57 user: jacob tags: trunk
07:02
Robert Evans spotted that bignum_decimal() failed to cope with being given a zero input. This shouldn't matter for PuTTY, as these routines are only used in PuTTYgen, to output SSH-1 format public key exponents/moduli, which should be nonzero. check-in: fced7ed12c user: jacob tags: trunk
2006-06-16
08:09
Update status of our PocketPC port. check-in: 4f52be62ba user: jacob tags: trunk
2006-06-11
07:56
Do not send raw mouse events in the middle of a selection operation, even if we otherwise would (for instance, if Shift is released before the mouse button being used for selection). check-in: 2e768838ff user: jacob tags: trunk
2006-06-02
03:46
Lionel Fourquaux offers this very simple patch to speed up SFTP, simply by upping the packet sizes and maximum in-flight packet count. Got to be worth a try, I think! check-in: 2cb25a46b3 user: simon tags: trunk
2006-05-26
07:45
Make it clearer that `psftp -b' doesn't return to the interactive prompt if the script doesn't end with an explicit `quit'. check-in: 1bc1435899 user: simon tags: trunk
2006-05-21
07:20
Port r6710 from puzzles: Patch from Ben Hutchings to prevent an ugly special case in &splitline in which a line is `split' into a line ending in a backslash followed by a completely blank line. check-in: d90992e39c user: jacob tags: trunk
2006-05-17
07:06
Link to new `key-formats-natively' wishlist item from appropriate FAQ. check-in: 95c74259f2 user: jacob tags: trunk
2006-05-12
06:02
pty_init should put _something_ into realhost check-in: d92da8d7b9 user: owen tags: trunk
2006-04-26
18:01
sbcsgen.pl was giving different results on different machines in the case where two SBCS code points mapped to a single Unicode point. Changed so that by default it favours the lower SBCS code point. On ixion, this highlighted ambiguities in CS_MAC_THAI, CS_MAC_SYMBOL, and CS_VISCII. Guessed at a preference for the first two and added "sortpriority" directives. (No idea about VISCII.) check-in: 471812fd14 user: jacob tags: trunk
2006-04-23
13:26
Sprinkle some header comments in various files in an attempt to explain what they're for. check-in: 7932188e51 user: jacob tags: trunk
2006-04-16
06:15
PocketPuTTY website moved. check-in: fba210a48f user: jacob tags: trunk
2006-04-13
16:18
Everywhere we print an fxp_error(), try to make it clear what we were trying to do at the time. (A lot of these say just "canonify:". This isn't a nice thing to show to a user, but I don't believe canonify() will ever return failure due to a server error, so users shouldn't actually see it, and it means we have a chance of tracing it if reported.) check-in: 5196811374 user: jacob tags: trunk
2006-04-07
16:42
Remove login name prompt from PSFTP. ssh.c will prompt for a login name as required, and doing so in psftp.c before we've even made a connection is incorrect wrt `bypass-ssh2-userauth'. check-in: daea38aac5 user: jacob tags: trunk
2006-03-31
03:26
ECCN / FIPS - we can't be arsed. check-in: f7fda73b4a user: owen tags: trunk
2006-03-29
11:55
Update size when going from maximised to full screen. check-in: 23a1c6f75e user: owen tags: trunk
2006-03-15
08:31
Explicitly add linking to our website to the "asking permission for things" section. Replace the FAQ text with a summary + link to feedback.but. check-in: f4f5824aac user: jacob tags: trunk
2006-03-14
16:01
Fix minor memory leak. check-in: c92727f499 user: jacob tags: trunk
05:21
Pageant docs didn't mention that you could load keys into an existing Pageant from the command line. check-in: b338eb7806 user: jacob tags: trunk
2006-03-12
16:17
Equivalent of r6583 window-border palette-change fix for Gtk. check-in: 06ec31208c user: jacob tags: trunk
13:24
Dimitry Andric spotted that DH gex with SHA-256 was overflowing a buffer. Fixed, and added paranoia so that this shouldn't happen again. check-in: ff7555e2cd user: jacob tags: trunk
09:39
Log the hash used for DH kex (now there's a choice). check-in: 160e173d94 user: jacob tags: trunk
08:53
Fix inadvertent O(N^2) loop within do_paint() which I just discovered when profiling IPBT. check-in: e368f18c9a user: simon tags: trunk
2006-03-08
17:16
Flesh out `-m' caveats slightly. check-in: 309de1336c user: jacob tags: trunk
12:15
Oh, and update the docs for NetHack keypad mode too. check-in: 91b0027b9e user: simon tags: trunk
12:10
David Damerell tells me I should be using Ctrl-hjklyubn rather than Shift-hjklyubn for batch movement in NetHack, because they have subtly different behaviour within the game and the Ctrl-moves are more useful. Unfortunately, PuTTY's NetHack keypad mode doesn't support Ctrl-moves. Therefore, it does now :-) check-in: 396c775fc5 user: simon tags: trunk
2006-02-27
17:55
Fix a memory leak in key generation. check-in: 898c8db8c4 user: jacob tags: trunk
16:30
Change XXX-REMOVE-BEFORE-RELEASE to XXX-REVIEW-BEFORE-RELEASE to allow more general changes to be queued up. check-in: 8e223dda48 user: jacob tags: trunk
16:27
Batch of miscellaneous tweaks to the Windows installer: - Now we've fixed `win-versioninfo', choose some sensible outcomes from the installer's comparisons of binary version numbers. Also, give the installer _itself_ a matching binary version. In particular, without this change, it would not have been possible to downgrade PuTTY -- it would have silently left the "newer" files in place. Now it will make some fuss, but permit it. - Also remove descriptions from shortcuts, on the grounds that the binaries have embedded descriptions now. (Although I've not checked whether those are actually visible in the Start Menu.) - At the request of various people (e.g., PJB), add flags so that if files are in use at the time the (un)installer is run, replacement is deferred to the next restart. (The user may be prompted to restart, which isn't ideal; see comments). This is supposed to make centrally-pushed silent upgrades more robust. - Note some limitations of the installer. check-in: ae70784090 user: jacob tags: trunk
2006-02-25
08:13
Alain Guibert points out that palette changes weren't causing the space between the text area and the window border to be refreshed. Fixed on Windows. Gtk still has a similar problem. check-in: e9756c0bd4 user: jacob tags: trunk
2006-02-23
07:38
Do proper select-for-write on ptys. Currently, pasting a sufficiently large string into pterm in any circumstances in which it's echoed back to the terminal will cause a deadlock once the pty's write buffer fills up. check-in: f7782e75bd user: simon tags: trunk
2006-02-20
13:54
Alain Guibert points out that ESC]P sequences were erroneously accepting 'G' as a hex digit. (The _first_ digit of the sequence intentionally goes up further than F, but the remaining ones shouldn't have.) check-in: 14247e5d72 user: simon tags: trunk
2006-02-19
16:37
Daniel Meidlinger points out a redundant test :-) check-in: f643efedb0 user: simon tags: trunk
08:59
Fix `restart-reset-terminal': terminal now restored to a sensible state when reusing a window to restart a session. check-in: a9fe99c1ad user: jacob tags: trunk
08:10
Add/tweak a couple of comments. check-in: 4c1dee7ad6 user: jacob tags: trunk
06:52
Fix up documentation/usage messages for r6572. check-in: 82ba29d738 user: jacob tags: trunk
06:05
Introduce a new checkbox and command-line option to inhibit use of Pageant for local authentication. (This is a `don't use Pageant for authentication at session startup' button rather than a `pretend Pageant doesn't exist' button: that is, agent forwarding is independent of this option.) check-in: 312df617cd user: simon tags: trunk
2006-02-18
19:37
At last, a fix for `large-clipboard-crash'. A growable buffer was only being grown for actual text, not for newlines or trailing NULs. A large run of empty lines could lead to newlines overflowing the buffer (> 100 should be enough to guarantee this on all platforms, after the initial 5k size of the buffer). Also fix some valgrind in the same area (was probably harmless), and a memory leak introduced by the RTF attribute pasting. check-in: 8c998698f4 user: jacob tags: trunk
16:30
Pointer type correction in term_clrsb(). (Harmless, as it happens.) check-in: d02651ccc3 user: jacob tags: trunk
2006-02-14
07:14
Typo in r6555 spotted by Daniel Meidlinger. check-in: 43fb61a310 user: jacob tags: trunk
2006-02-13
16:25
RTF pasting now includes colours and style. Say so. check-in: a6e9490e62 user: owen tags: trunk
16:18
Preserve more attributes of text copied as RTF. Thanks to Stephen Balousek. check-in: e24538d25e user: owen tags: trunk
2006-02-11
13:10
Don Heap spotted that our heuristics for dealing with IPv6 literal addresses in the PSCP command line were bogus, giving "remote to remote not supported" errors with filenames like '[].txt'. Made the heuristic less bogus. check-in: 5f8792b0e9 user: jacob tags: trunk
12:29
Failure to connect to a Unix-domain socket could cause a segfault. Fixed. check-in: 54ac07652e user: jacob tags: trunk
12:00
A zero-length return from platform_get_x_display() (for instance, a zero-length DISPLAY variable in the environment) caused an assertion failure when X11 forwarding was attempted. Fixed (now treated the same as a NULL return, e.g., a non-existent DISPLAY variable). check-in: 2c5a04569e user: jacob tags: trunk
2006-02-10
14:57
Oops. Since r6546, old "Special Commands" menus weren't being deleted from the context menu, and they tended to pile up. check-in: 963c5c5a87 user: jacob tags: trunk
2006-02-09
17:06
Users of Virtual Dimension are reporting that the "Close" menu item and button tend to get disabled on login. After a suggestion by "Tkil", change the way we handle the specials menu to be robust against the window menu being externally modified. check-in: a7b8c32f79 user: jacob tags: trunk
2006-01-27
14:49
Somewhat gruesome tweak to use SetClassLongPtr where available and degrade nicely elsewhere, which should fix `win64' _properly_. Tested on recent-ish MinGW (with GetWindowLongPtr but not GetClassLongPtr), and VC++ 6.0 with a recent SDK, but not with vanilla VC++. check-in: 13b73ead40 user: jacob tags: trunk
2006-01-25
16:46
Don't explicitly open the logfile on startup; it'll automatically be opened by logwrite() as necessary. Should fix win-askappend-multi. check-in: 5f02ab2b2a user: owen tags: trunk
2006-01-24
05:08
s/PuTTY/PuTTYgen/ in two places. check-in: 571d5eb05b user: jacob tags: trunk
2006-01-11
17:43
VC6 doesn't define LONG_PTR check-in: 9a3790cdaa user: owen tags: trunk
17:42
Configurable font quality on Windows. (Together with a little bit of macro stuff to cope with the inadequacy of VC++ 6 headers.) check-in: 051f4cfea4 user: owen tags: trunk
2006-01-10
14:02
Fix zero-rows-cols-crash check-in: 04df52bdb7 user: owen tags: trunk
2006-01-08
12:18
It's a new year. check-in: f65373bcc5 user: jacob tags: trunk
2005-12-18
11:05
Update status of this library wrt other variants. check-in: ba7f6a48ca user: jacob tags: trunk
10:57
CP866 is popular and small. Add it to both the general and PuTTY implementations of libcharset, since we've had at least one request for it in PuTTY. check-in: 20a3f339c5 user: jacob tags: trunk
2005-12-16
10:43
Mention compile-time directives and where they're documented. check-in: 196244c2fc user: jacob tags: trunk
2005-12-09
14:04
A few small changes to make the PuTTY source base more usable as a basis for other terminal-involving applications: a stub implementation of the printing interface, an additional function in notiming.c, and also I've renamed the front-end function beep() to do_beep() so as not to clash with beep() in lib[n]curses. check-in: bc74216dab user: simon tags: trunk
2005-12-07
12:01
Apparently some SSH servers object to our claiming port-forwarded connections to be from IP "client-side-connection". Claiming "0.0.0.0" instead seems to work. Spotted by Brant Thomsen. check-in: 0cf3aea3e9 user: jacob tags: trunk
2005-12-06
18:24
Institutional failure to memset() things pointed at rather than pointers. Things should now be zeroed and memory not leaked. Spotted by Brant Thomsen. check-in: 2a7f73d55f user: jacob tags: trunk
17:18
Improvements from Spyros Blanas to the MSVC optimisations of r6469: don't do a function call for each divmod, and don't rely on details of the calling convention. (This didn't actually make any measurable difference to runtime in any of my tests, but we may as well keep it as it's neater.) Also document some general caveats of the divmod macro. check-in: f970409cb9 user: jacob tags: trunk
2005-12-01
10:41
SSH-2 rekey bug compatibility setting wasn't being saved (but _was_ being loaded). check-in: 5af5c8f9a9 user: jacob tags: trunk
2005-11-23
15:26
An MSVC version of the 16->32-bit bignum optimisation, derived from part of a patch by Lionel Fourquaux. Seems to be about a factor of four improvement (see wishlist item for details). I don't claim to understand this in detail, so I can't vouch for its correctness, but it didn't fall over immediately. It also produces some compiler warnings, unfortunately. check-in: eefc5f979e user: jacob tags: trunk
2005-11-14
03:41
Missing close parenthesis. check-in: 61c0f1e69b user: jacob tags: trunk
2005-11-13
10:06
r6437 broke the case where Pageant is running but contains no SSH-2 keys that the SSH-2 server is happy with. Fixed, and since I'm here, fix `pubkeyfile-and-pageant' as well (for SSH-1 and SSH-2). Also, in SSH-2, we now reexamine "methods that can continue" for every Pageant key offer, which is technically more correct although it seems unlikely that it was causing any real problems. (It's not entirely pretty, but neither was the old code. We could probably do with some sort of abstraction for public/private keys to avoid carting lots of fiddly bits of data around.) check-in: 5ecfcce6b6 user: jacob tags: trunk
06:13
Oops, used \I where I meant \i. I think this is the only instance. check-in: 6c6d33724f user: jacob tags: trunk
2005-11-09
17:19
I broke the ability to cope with multiple consecutive k-i INFO_REQUESTS in r6437. This ought to be better (but I can't test that case). check-in: eefac6dd49 user: jacob tags: trunk
2005-11-04
17:31
Fix minor hiccup in SSH-1 p-k auth. check-in: b965b38836 user: jacob tags: trunk
17:21
Placate a compiler warning introduced in r6437. (I forgot we usually compile with -Werror on Unix, oops.) check-in: 992b547918 user: jacob tags: trunk
08:49
Fix for `ssh2-password-expiry'. Success case tested. (Much easier since r6437, and actually works to boot.) check-in: 5033091888 user: jacob tags: trunk
2005-11-02
17:15
When a userpass interaction has finished, make sure the 'prompts' structure is safe for re-use. check-in: be2be716fa user: jacob tags: trunk
2005-10-31
16:43
(do_ssh2_authconn_state).method is redundant since r6437; remove. Remove FIXMEs from .type assignments, as they look fine. check-in: ad1b2a4de9 user: jacob tags: trunk
2005-10-30
14:24
Revamp SSH authentication code so that user interaction is more abstracted out; replace loops structured around a single interaction per loop with less tortuous code (fixes: `ki-multiprompt-crash', `ssh1-bad-passphrase-crash'; makes `ssh2-password-expiry' and `proxy-password-prompt' easier). The new interaction abstraction has a lot of fields that are unused in the current code (things like window captions); this is groundwork for `gui-auth'. However, ssh.c still writes directly to stderr; that may want to be fixed. In the GUI apps, user interaction is moved to terminal.c. This should make it easier to fix things like UTF-8 username entry, although I haven't attempted to do so. Also, control character filtering can be tailored to be appropriate for individual front-ends; so far I don't promise anything other than not having made it any worse. I've tried to test this fairly exhaustively (although Mac stuff is untested, as usual). It all seems to basically work, but I bet there are new bugs. (One I know about is that you can no longer make the PuTTY window go away with a ^D at the password prompt; this should be fixed.) check-in: fa1347493a user: jacob tags: trunk
13:13
In Unix PuTTYgen, existing SSH-1 key comments were coming out as "(null)" for operations not performing decryption (e.g., "puttygen rsa1.ppk -L") (A use for r6434 -- wasn't expecting that.) check-in: 58ea3b5986 user: jacob tags: trunk
10:28
Fixes to make r6434 actually useful. check-in: 406df7aa52 user: jacob tags: trunk
09:16
Allow rsakey_pubblob() to return the key comment. (like r6433 but for SSH-1) check-in: 4c5674dd5b user: jacob tags: trunk
07:42
Add ability for ssh2_userkey_loadpub() to return the key comment. (Not actually used currently, but it makes life easier for a patch I'm working on.) check-in: d7d7b6fd7d user: jacob tags: trunk
2005-10-26
17:18
Fix an error I introduced into SSH packet logging in r5642: some outgoing packets over about 256 bytes would be logged with 12 bytes of preceding garbage. (But the rest of the packet was logged in its entirety. This holds for packets where (int(len/256)%2)==1, with an appropriate fudge factor applied to `len'.) Ahem. check-in: b982e695f5 user: jacob tags: trunk
15:58
Comment explaining back->sendok() semantics from Simon. check-in: b4c7e4df9c user: jacob tags: trunk
2005-10-13
17:51
Tweak to r6392: spell "MAC" thus. check-in: bdcb94cf82 user: jacob tags: trunk
16:56
Fix 256-colours-match-xterm, based on 256colres.pl from xterm-205. Largely untested -- may not even compile on Windows. check-in: a232015fce user: ben tags: trunk
16:51
Make SSH_MSG_DISCONNECT reasons less scary (without removing useful content). check-in: 9ad31acae5 user: ben tags: trunk
2005-10-08
04:09
Failed to call set_erase_char() after processing SCO colour sequences. check-in: adc8ae5a8d user: simon tags: trunk
2005-10-04
09:13
`win-versioninfo': all builds of all Windows binaries now contain a VERSIONINFO resource. The versioning scheme is described in windows/version.rc2. Some .rc files are now #included in others. In order to keep MSVC project files working, these have been renamed to .rc2; there may exist a better solution. (This checkin also includes the documentation tweak missing from r6367.) Testing performed: - MinGW (cross-compiler): works - VC nmake: works (tested with VC6) - VC project files: builds with VERSIONINFO resource (no VER variable though) - Borland: an old version of this patch was tested with it and more or less worked, except that some of the VERSIONINFO strings were apparently not terminated properly. Not attempted to work around this. - LCC: not tested. Some fixes are in there from the last time we tried this, but then the build ultimately failed and I haven't tried this since that was fixed. - Dev-C++: untested. (Haven't done anything special.) - Unix Gtk/autoconf Makefiles work as before. check-in: 5532c18e9c user: jacob tags: trunk
2005-10-03
06:38
UTF-8 processing was discarding a valid character which interrupted an otherwise legal sequence, if that valid character was the last thing in a term_out() run. Spotted by Egmont Koblinger. check-in: 39c08b8213 user: simon tags: trunk
05:24
thinko check-in: d91314ba65 user: jacob tags: trunk
2005-10-01
07:36
Split out SVN_REV from SNAPSHOT define. This is to support `win-versioninfo', but since Simon's made the corresponding change to the build process, this bit needs checking in now (it should be harmless). (The documentation in Recipe is slightly out of date; with luck I'll be checking in `win-versioninfo' changes soon, and I can't be bothered to disentangle the relevant changes in the meantime.) check-in: dcf7ae3503 user: jacob tags: trunk
06:40
A swathe of new FAQ questions, along the general theme of `will you sign something for us / give us assurances / give us indemnity'. check-in: 9777e6fa6a user: simon tags: trunk
2005-09-30
09:54
Mention SSH-2 rekeys in the keepalive section. check-in: 0d7e423c6b user: jacob tags: trunk
2005-09-24
13:33
A first stab at guidance for those lost souls who email us asking for login names and/or passwords. Feel free to hack. (NB, renumbers a section of the FAQ.) check-in: 7038b14bd0 user: jacob tags: trunk
11:17
Add DEVCPP to svn:ignore. check-in: b710d22e3a user: jacob tags: trunk
2005-09-21
12:09
dlg_listbox_select() now scrolls the list box to ensure that the item it's just selected is visible. check-in: 720b8943c1 user: simon tags: trunk
09:53
Platform-independent support for zooming around session list by typing in the session name box. Thwarted on Unix by GTK not automatically scrolling the listbox to the selected item, but we can fix that in the platform-specific side later. check-in: 4cda7c3ac3 user: owen tags: trunk
2005-09-19
09:34
Mention that sessions can be saved from "Change Settings" in using.but. check-in: 3cf3850e9e user: jacob tags: trunk
2005-09-14
06:00
AIX 5.1 has <utmpx.h> but no updwtmpx(). Treat the latter as a reason to OMIT_UTMP. Reported by Mike Protts. check-in: 3a73862242 user: ben tags: trunk
05:53
Some systems (HP-UX) don't yet have <sys/select.h>, putting select() in <sys/time.h>. Cope with this. Where <sys/select.h> _is_ available, though, use it (since it's where POSIX puts select()). Problem reported by Mike Protts. check-in: 36d43f446e user: ben tags: trunk
2005-09-13
15:17
When asked to malloc zero bytes, malloc one byte instead. This ensures that we get a unique pointer rather than NULL (which ANSI C otherwise permits). Problem pointed out by Mike Protts. check-in: b6d6e37138 user: ben tags: trunk
15:08
The ANSI-C constant FILENAME_MAX is ludicrously small on some systems. Use the POSIX PATH_MAX if it exists, and fall back to 1024 otherwise. We should really allocate filenames dynamically if PATH_MAX isn't defined. check-in: fb2701ef6e user: ben tags: trunk
14:57
Some hosts don't have TIOCSCTTY. Don't try to use it on them. Patch from Mike Protts. check-in: 6da243c989 user: ben tags: trunk
14:54
A couple of places in sk_newlistener were using AF_INET6 even with NO_IPV6. Correct them. check-in: 42d139827f user: ben tags: trunk
14:24
Nothing seems to use the "int64" type, and it apparently causes conflicts on some platform, so remove it. Thanks to Mike Protts for spotting this. check-in: e2a5a2ad4f user: ben tags: trunk
09:12
Apparently the OS X port is stalled. check-in: 4aa5e07e85 user: jacob tags: trunk
2005-09-12
10:45
When the first element in a preference list was unrecognised, PuTTY would hang when reading it because strtok() kept getting the full list passed in. Fix this, and add an assert() for an assumption documented in a comment while I'm in the area. check-in: 28904047ca user: ben tags: trunk
2005-09-10
12:36
Mention relationship between terminal types, keyboard sequences, and termcap/terminfo. Suggested by Joachim Durchholz. check-in: 219982d46f user: ben tags: trunk
11:19
Implement hmac-sha1-96. It's RECOMMENDED in the current transport draft, and we don't have any strong reason not to implement it, for all that it's rather pointless. check-in: 07e74def32 user: ben tags: trunk
2005-09-04
09:53
Add support for diffie-hellman-group-exchange-sha256. Tested against a patched OpenSSH server. This is controlled by the same user settings as diffie-hellman-group-exchange-sha1, which may not be optimal, especially given that they're both referred to as dh-gex-sha1 in saved sessions. check-in: fac0751ecf user: ben tags: trunk
2005-09-03
12:29
Mention xp-wont-run. check-in: 38dc422cce user: ben tags: trunk
12:03
Now that my arcfour-fixes draft has been approved by the IESG, use the IANA-assigned names for its modes. check-in: 2269771ab3 user: ben tags: trunk
08:41
Restructure things so that a single entry in the KEX preference list can correspond to multiple SSH-2 KEX algorithms. We already do the equivalent for cipher algorithms. check-in: 45f5ec7b5a user: ben tags: trunk
2005-09-02
05:51
Check ssh->v2_session_id_len _after_ assigning to it. check-in: 2b3bb67839 user: jacob tags: trunk
2005-08-31
17:32
Don't bother compiling SHA-256 for now -- I need to think a bit before I use it. check-in: 0677815069 user: ben tags: trunk
16:48
SHA-256 implementation, for use in future KEX algorithms, in particular diffie-hellman-group-exchange-sha256, which the last DHGEX draft defined. Code lifted from Simon's "crypto" directory, with changes to make it look more like sshsh512.c. check-in: b428aa5211 user: ben tags: trunk
15:43
Add infrastructure for supporting multiple hashes in key exchange. Nothing very surprising here. check-in: 5e476e7efc user: ben tags: trunk
14:11
Rename ssh_md5 and ssh_sha1 to ssh_hmac_md5 and ssh_hmac_sha1 respectively. This is to make room for a hash abstraction that's likely to want to use ssh_sha1, at least. check-in: 9afc7f5e94 user: ben tags: trunk
11:14
Explicitly note that "remote command" semantics typically involve the server closing the connection after the command has executed. check-in: 91d028877b user: jacob tags: trunk
2005-08-30
17:39
Further progress in the direction of variable exchange hashes -- stash the outgoing KEXINIT, and only start generating the exchange hash once we know which KEX method we're using. check-in: d49b79d098 user: ben tags: trunk
15:38
Beginnings of support for multiple exchange hashes in SSH-2: rather than storing a SHA-1 hash of the client and server version strings, store the strings themselves so we can feed them through the appropriate hash when we know what it is. check-in: 9636ea0134 user: ben tags: trunk
2005-08-28
19:34
More versions of WeOnlyDo have the rekey bug (but they've fixed it now). check-in: fb8ffeb494 user: jacob tags: trunk
2005-08-26
16:17
I think this should fix various problems with queued incoming data not being processed and incoming data being processed out of order, which I suspect is the cause of `ssh1-fwd-trouble' as noted by Gevan Dutton. I'm not able to test the failure case, but it doesn't seem to have obviously broken anything in the cases I have tested, anyway. check-in: 8579417a41 user: jacob tags: trunk
2005-08-22
15:37
Add support for generating project files for use with Dev-C++, contributed by Florian Gaab. check-in: 493c4ae935 user: ben tags: trunk
15:07
Florian Gaab reports that freeSSHd 1.0.7, which claims a "softwareversion" of "WeOnlyDo-1.2.6", mishandles repeat key exchange. Add it to the list. check-in: 6c5b1e2063 user: ben tags: trunk
2005-08-10
13:31
Ben Rudiak-Gould points out that we should be using WM_APP as the base for our app-private window messages, which is considerably higher than the WM_XUSER we arbitrarily chose. (This isn't known to be causing any actual problems. The fix seems not to have obviously broken anything.) check-in: 8b2c50dec0 user: jacob tags: trunk
2005-07-24
08:46
draft-ietf-secsh-transport-24 says that only "SSH-" at the start of a line marks a version string. It's a bit vague about the definition of a line, but I think it's reasonable to assume that they'll end with LF. Change do_ssh_init() to ignore "SSH-" anywhere else. This makes the existing state machine overkill, so replace it with something a little more readable. check-in: 4a58cc8686 user: ben tags: trunk
2005-07-17
08:37
This is getting silly; nearly 25% of our mirrors are now in the US. Discourage more strongly mirrors in well-served areas in the Feedback section. Also, duplicate that text on the Mirrors page, along with a request to tell us the country (since lots of people still don't). check-in: e1741520c4 user: jacob tags: trunk
2005-07-15
06:47
Patch from Colin Watson: we were sometimes passing stack storage to putenv(), which is Bad (in his case, it caused TERM to end up unset). Use malloc()'d storage instead. check-in: d0c607099f user: jacob tags: trunk
2005-07-06
13:26
Missing argument in MALLOC_LOG version of snrealloc() macro. check-in: 1d9695328f user: jacob tags: trunk
2005-07-05
16:15
Piers Finlayson reports that "DigiSSH_2.0" chokes (in a new and exciting manner) on rekeys. Add it to the list. check-in: 1ccaca97e2 user: ben tags: trunk
2005-06-29
13:20
Try to make it slightly clearer that TIS/CryptoCard are generic, since SSH:TDGv2 seems to think that TIS is only relevant to its original application (whose name eludes me at the moment). check-in: 8e13e4c6c5 user: jacob tags: trunk
2005-06-25
16:43
In local-to-remote copies, abort if fxp_init() fails, rather than ploughing on and trying to transfer files, which caused a null-pointer deference. Thanks to Fernando Najera for reporting the bug. check-in: 632f55a867 user: ben tags: trunk
14:22
Quote session name in command line example for robustness. check-in: 9aacb09159 user: ben tags: trunk
2005-06-22
05:00
Improve IPA representation of "PuTTY", as suggested by John Lunney. My rationale (as mailed to him): I think you're right. I got the pronunciation there from the second edition of the OED and my Collins dictionary at home, both of which believe that "pretty" is pronounced /'prItI/, but, at least to me, those two vowels are different. Both of them think that /i/ doesn't occur in English words, the vowel in "beat" being /i:/. The third edition of the OED, though, adds /i/ as an English vowel in its pronunciation guide, with "happy" as an example of its use. I'll update the FAQ following your suggestion. check-in: e7afd4150b user: ben tags: trunk
2005-06-21
15:13
Fix an apparently-harmless error spotted by Ben Rudiak-Gould: do_ssh2_transport() was returning the wrong value for rekeys after the first. This apparent error was introduced in r4901, but we can't see any reason for the change to have been made. If it turns out to be a mistake to revert it, I'm sure we'll find out. Here for posterity is Simon's analysis: | A lot of the return values from do_ssh2_transport appear to be vestigial: it | used to be that a zero return from do_ssh2_transport meant it had handled the | packet internally, and a 1 return meant the packet wasn't a transport-layer | one and needed to pass on to do_ssh2_authconn. Since r4901, however, the | layer discrimination is done based on the message type ranges, and the only | remaining dependency on the return value from do_ssh2_transport is a special | case in ssh2_protocol which detects the first 1 return and makes the | initialisation call to do_ssh2_authconn. | | Therefore, the gratuitous 1 return on every key exchange as a result of the | confusing if statement is simply ignored in ssh2_protocol (because | ssh->protocol_initial_phase_done is already TRUE). So the remaining question | was, why does the _lack_ of that 1 return not cause a problem, if the if's | sense is indeed reversed? | | The answer is that 1 is still returned, just not by the crReturn inside the | if statement. It's returned by the next crReturn, just after | wait_for_rekey(). Which suggests that in fact, the if statement has the | correct sense, but the crReturn inside it has the wrong value - it should be | returning _zero_, to indicate that every NEWKEYS after the first one is | uninteresting to the authconn code, and on the very first run through that | doesn't happen and the NEWKEYS gets all the way to the crReturn(1) later on. check-in: d4dea14f10 user: jacob tags: trunk
2005-06-20
08:56
Make the sanity-checks on the size of incoming packets much stricter. We now enforce the following: * Packet must have at least one byte of payload and four bytes of padding. * Total packet length must not exceed 35000 bytes compressed. * Total packet length including length field must be a multiple of cipher block size (or eight bytes). The feebleness of our old checks was noticed by Ben Rudiak-Gould. check-in: be45b43e16 user: ben tags: trunk
2005-06-19
09:17
A major purpose of PuTTY's memory-allocation functions is to succeed or die trying, so there's no need to check their return values for NULL. Spotted by Ben Rudiak-Gould. check-in: 3e02f6edcc user: ben tags: trunk
08:57
Move comment about ECHO and LINE input modes to a more sensible position. Spotted by Ben Rudiak-Gould. check-in: da08d99cd3 user: ben tags: trunk
2005-06-14
18:20
Detection of "auth-agent@openssh.com" was too liberal. Spotted by Ben Rudiak-Gould. check-in: a3dc59e09b user: jacob tags: trunk
09:48
We should wait until the Rlogin server indicates that it's happy to receive window-size notifications before we send them. This clears up a problem where the first password entry always failed. check-in: c05a45ef27 user: jacob tags: trunk
2005-06-09
05:05
"SanskritFritz" points out that digits at the start of RTF pastes were being eaten by the trailing "\f0" on the RTF preamble. The RTF spec (1.0 and 1.6) suggests that adding a space should defuse this situation and be otherwise harmless, and it works for me (Win98). check-in: 072eafc3e1 user: jacob tags: trunk
2005-06-08
10:14
Double-free on mkdir error, spotted by Brian Hartsock. check-in: 9021e82fe5 user: jacob tags: trunk
2005-05-28
08:46
Remove a couple of mistaken references to Telnet in comments. check-in: 28407185fe user: jacob tags: trunk
2005-05-23
07:41
Miscellaneous updates: - note Visual Foo version requirements - note which things are done for you in our source snapshots - other tweaks check-in: 2dbc3b7826 user: jacob tags: trunk
2005-05-21
11:49
Factor out all local SSH disconnections into a new function ssh_disconnect(), and add the ability to treat a local disconnection as "unclean" -- notably, if we can't agree any authentication methods to even try; someone was complaining that the PuTTY window by default just disappears for no apparent reason in this circumstance. Also, use appropriate disconnect codes for those SSH2_MSG_DISCONNECT messages that we do send. I don't think I've seriously broken any user-visible behaviour, but the way that connection-close distinctions are transmitted to the front-end is shaky (or so it seems to me), so there may be non-ideal changes on some platforms. check-in: e6f29ea107 user: jacob tags: trunk
10:09
Fix documentation of NO_MANIFESTS (oops). check-in: 35009b643f user: jacob tags: trunk
09:35
Add NO_MANIFESTS option to Windows build, as the manifests apparently cause trouble for 64-bit Windows builds. Also flag the build flags that only apply to Windows. check-in: aa0be5f249 user: jacob tags: trunk
09:16
Use {Get,Set}WindowLongPtr() instead of {Get,Set}WindowLong() for compatibility with 64-bit Windows. Untested on 64-bit, but it doesn't appear to have broken anything on 32-bit. check-in: 15d9ec22cf user: jacob tags: trunk
2005-05-20
16:52
Minor memory leak spotted by Mikhail Kruk. check-in: 5209b23aff user: jacob tags: trunk
2005-05-16
09:41
connection_fatal() should be called after ssh_closing() and other accesses to `ssh', since it potentially frees it and potentially doesn't return. Only affected a couple of rare circumstances. check-in: cd4cc612f7 user: jacob tags: trunk
03:31
Don't try and set up reconfigured port-forwardings if the connection isn't yet ready for them. Spotted by Martin Dushkov. check-in: 669d063475 user: jacob tags: trunk
2005-05-14
17:01
Add experimental support for detecting BREAK on input and propagating it as TS_BRK on output. This is tested to the extent that other data survive the escaping performed by PARMRK, at least on my system. Actual passing on of BREAK is as-yet untested. check-in: 31fdd0bdc3 user: ben tags: trunk
2005-05-12
10:09
Use the packet dispatch table to handle USERAUTH_BANNER messages, which should hopefully solve `drop-banner'. I haven't been able to test the failure case, but the behaviour with OpenSSH appears no worse. check-in: c9089df91e user: jacob tags: trunk
2005-05-09
16:01
s/public/private/ spotted by Walter Cleverly. check-in: df8d67a25f user: jacob tags: trunk
08:27
Make Makefile.gtk build again on Linux (assume <utmpx.h>). check-in: 298c44bd3c user: jacob tags: trunk
2005-05-08
06:47
Fix what looks like a cut-and-paste error which was stopping Unix Plink building on MacOS X. check-in: dc62c29d04 user: simon tags: trunk
2005-05-06
05:19
Add `install-sh' to svn:ignore check-in: fca1b751a6 user: jacob tags: trunk
2005-05-05
17:47
Correct apparent misspelling of `SIOCATMARK'. check-in: 67721ff97e user: jacob tags: trunk
17:37
Implement `bypass-ssh2-userauth', since from correspondence it sounds like there are servers which could in principle operate in this mode, although I don't know if any do in practice. (Hence, I haven't been able to test it.) check-in: a2682d011b user: jacob tags: trunk
2005-04-30
12:08
Also blank X authentication data when using SSH-1, and add a comment explaining why this may not be sufficient to hide it. check-in: 56037102d7 user: ben tags: trunk
11:13
X11 authentication data are generally sensitive, so blank them from packet logs by default. check-in: 8f27c860e7 user: ben tags: trunk
09:30
Unlike the AES and Blowfish code, our implementations of the various DES modes of operation all took separate source and destination pointers. They were never called with those pointers different, though, so reduce them to a single pointer like everything else uses. check-in: 4b8dc4839b user: ben tags: trunk
09:26
Fix stupid typo that probably utterly broke SSH-1 support, and caused compiles with GCC to fail. Not sure how it survived long enough to test, really. check-in: 4e40e32ee3 user: ben tags: trunk
2005-04-28
04:03
Minimally document 3des-ctr and blowfish-ctr. check-in: 1e5ba103b5 user: ben tags: trunk
04:00
Remove comment explaining why 3des-ctr is disabled, since it isn't. check-in: 74d9dcaee0 user: ben tags: trunk
03:56
Enable blowfish-ctr by default. It's been tested and found working. Thanks to der Mouse for help with the testing. check-in: e62ce290e8 user: ben tags: trunk
03:24
In blowfish-ctr mode, increment the counter in the correct order. Thanks to der Mouse for spotting the same error in my 3des-ctr implementation. check-in: c78d18dbc7 user: ben tags: trunk
03:21
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. 3des-ctr is now enabled by default. check-in: 7b4c6bab9d user: ben tags: trunk
2005-04-27
16:42
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. check-in: 58f5d476a6 user: ben tags: trunk
16:22
Tiny manual CSE of previous commit. check-in: aa5d4730d1 user: ben tags: trunk
16:09
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. check-in: cda1056254 user: ben tags: trunk
15:30
Make palette changes use "best match" colours too. check-in: 462bcba811 user: ben tags: trunk
10:42
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. check-in: 50cf1a835f user: ben tags: trunk
07:39
Use the correct key order for 3des-ctr. check-in: 7e9c015fce user: ben tags: trunk
06:10
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. check-in: d33118fd29 user: ben tags: trunk
03:09
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.) check-in: cfbe481de8 user: simon tags: trunk
2005-04-25
19:03
According to the termio(7I) on Solaris, OLCUC is overridden by OPOST, so we should send it with the SSH terminal modes too. check-in: 44c192333d user: ben tags: trunk
18:57
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. check-in: 58f646b407 user: ben tags: trunk
18:28
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. check-in: abb9ed30fb user: ben tags: trunk
17:46
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. check-in: dfe65fbf2d user: ben tags: trunk
13:51
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. check-in: 373ac11e25 user: ben tags: trunk
12:21
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. check-in: 43bdc0d3b5 user: ben tags: trunk
11:36
Move generation of the "configure" script into its own script so that people who check the code out of Subversion can get it to go. check-in: e6535f2a9e user: ben tags: trunk
10:55
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. check-in: f4e8b20c96 user: ben tags: trunk
2005-04-24
09:43
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. check-in: 99e52e867d user: ben tags: trunk
2005-04-23
11:22
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. check-in: 98cafbbe9b user: ben tags: trunk
2005-04-22
10:47
Stir in process ID at start. check-in: 24f22a29b4 user: jacob tags: trunk
2005-04-21
19:00
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). check-in: 2767d1c080 user: jacob tags: trunk
08:57
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). check-in: 533d29650c user: jacob tags: trunk
2005-04-20
17:52
Ifdef out the actual code supporting 3des-ctr and blowfish-ctr, since GCC now notices that it isn't used. check-in: b9f8f8776e user: ben tags: trunk
17:47
Simon (accidentally, I think) enabled 3des-ctr and blowfish-ctr. Turn them back off again since they're still untested. check-in: 045da486d1 user: ben tags: trunk
16:29
Minimally document our support of aes*-ctr. check-in: e9f761c95c user: ben tags: trunk
15:57
Enable arcfour256-draft-00@putty.projects.tartarus.org, since I've now tested it against an independent implementation. check-in: e1e36d0b66 user: ben tags: trunk
2005-04-19
14:18
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.) check-in: d75014453b user: jacob tags: trunk
13:58
Pull out parsing of ^C style strings from the terminal answerback code to its own function, since I'll be wanting it for `terminal-modes'. check-in: 8baaaf38f8 user: jacob tags: trunk
08:27
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). check-in: 40843350e9 user: jacob tags: trunk
2005-04-18
16:09
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. check-in: 6ce70c5c20 user: jacob tags: trunk
07:21
Add a comment describing `dummyitem' in prefslist and associated problems. check-in: 4556c394db user: jacob tags: trunk
05:01
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. check-in: 3833248e32 user: simon tags: trunk
2005-04-15
08:11
Index "Event Log", "system menu", and "context menu" better. check-in: b833d0f66d user: ben tags: trunk
2005-04-14
17:58
Implement my experimental arcfour modes. The 256-bit version is disabled until I can test it against someone else's implementation. check-in: 3782733aa1 user: ben tags: trunk
2005-04-12
15:04
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... check-in: a434996c3e user: jacob tags: trunk
2005-04-11
12:37
Comment: change "window.c" to "the front end" check-in: b50106acc1 user: jacob tags: trunk
11:24
Factor out the code to read and write the Environment and PortForwardings mappings into two new functions. check-in: 6f46b8e06b user: jacob tags: trunk
11:23
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. check-in: 5b60777159 user: jacob tags: trunk
2005-04-09
18:02
Add WS_VSCROLL style to drop-down non-combo boxes, to add a scroll bar if needed. (Doesn't affect the appearance of any existing controls.) check-in: 1fdf9bd382 user: jacob tags: trunk
2005-04-07
17:33
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. check-in: 3cce74bf22 user: jacob tags: trunk
07:38
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. check-in: 91d83f7b9a user: simon tags: trunk
07:00
Oops, forgot to credit Ahmad Khalifa of arabeyes.org for the bidi/shaping work. check-in: 91dfa430a2 user: jacob tags: trunk
2005-04-06
20:42
Add keyboard accelerators for IPv4/IPv6 selections options. (Also for `window_border'.) check-in: 71eb9cf248 user: jacob tags: trunk
20:36
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.) check-in: 11a4164f51 user: jacob tags: trunk
20:32
In get_sesslist(), when freeing, set freed members to NULL on general principles. check-in: 249f1326fc user: jacob tags: trunk
18:40
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. check-in: 7ee3abdcf4 user: ben tags: trunk
18:27
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. check-in: d3f3f9c216 user: ben tags: trunk
17:16
`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. check-in: 5370dde63c user: jacob tags: trunk
2005-04-05
14:36
Version number and other tweakings prior to the 0.58 release. check-in: 49ffff2389 user: simon tags: trunk
13:38
tweak wording in "pscp -ls" check-in: 151bf3ba13 user: jacob tags: trunk
13:15
add XXX-REMOVE-BEFORE-RELEASE re uninstaller check-in: 233f1d558d user: jacob tags: trunk
13:11
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. check-in: 94ca16030a user: jacob tags: trunk
13:03
Add versionid for index. Also plumb in pgpkeys.but versionid. check-in: c03e6a193d user: jacob tags: trunk
13:01
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 check-in: d3a077fa53 user: jacob tags: trunk
2005-04-04
08:44
NULL needs to be cast to void * when passed to a variadic function like execl(). Spotted by Damien Miller. check-in: eb7b985525 user: ben tags: trunk
2005-04-01
07:25
#ifdef out expensive combining-character/scrollback diagnostics (for now). check-in: e1292dcaea user: jacob tags: trunk
02:46
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. check-in: 904f28216b user: simon tags: trunk
2005-03-31
12:52
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. check-in: 045dd26b66 user: simon tags: trunk
07:45
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. check-in: 13f6a8ffb8 user: simon tags: trunk
06:25
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. check-in: 654cd509e1 user: simon tags: trunk
03:02
XXX-REMOVE-BEFORE-RELEASE: check docs too check-in: d7303869d2 user: jacob tags: trunk
2005-03-30
13:33
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. check-in: 77e295b6c2 user: simon tags: trunk
04:20
faq-timeout: update for XP check-in: 17dff8e65f user: jacob tags: trunk
02:27
<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. check-in: a38745f290 user: simon tags: trunk
2005-03-29
08:24
Small markup fixes I just noticed, mostly use of literal double quotes where \q{} would be better. check-in: 4fd797a1e1 user: simon tags: trunk
07:10
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. check-in: b8c79bfc5c user: simon tags: trunk
2005-03-28
11:48
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. check-in: 19b26a1cc7 user: simon tags: trunk