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

121 Commits

Author SHA1 Message Date
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
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
4bddcc2b5d Workarounds for compiling with -D_FORTIFY_SOURCE=2 (as Ubuntu does), which
doesn't like you to ignore the return value from read()/write()/etc (and
apparently can't be shut up with a cast to void).

[originally from svn r8614]
2009-08-07 00:19:04 +00:00
Simon Tatham
c7ac5745ab When giving authorisation errors from the proxy code in x11fwd.c,
name the proxy using the global 'appname' variable, instead of
statically calling it PuTTY.

(Knock-on effect is that PSCP and PSFTP have to declare that
variable, though of course they shouldn't ever actually _use_ the X
forwarding code. Probably I ought to replace it with a stub
nox11fwd.c for those applications.)

[originally from svn r8501]
2009-04-23 17:39:36 +00:00
Jacob Nevins
a6cbfd974d Treat lines starting with '#' as comments in PSFTP.
[originally from svn r8325]
2008-11-24 18:19:55 +00:00
Simon Tatham
2a0cf16c33 Tim Kosse points out that xfer_upload_gotpkt can return a negative
value on error, so the check at the call site shouldn't test for
exactly zero.

[originally from svn r8183]
2008-09-16 12:48:38 +00:00
Simon Tatham
e01df1da9f Patch from Tim Kosse: check back->exitcode() in both loops on
ssh_sftp_loop_iteration(), not just one. Fixes exiting on a negative
response to the host key confirmation prompt on Windows (because
winsftp.c doesn't have the equivalent of uxsftp.c's no_fds_ok); on
Unix it worked already but gave a suboptimal error message, which is
fixed too by this patch.

[originally from svn r8110]
2008-07-06 12:24:56 +00:00
Simon Tatham
7edbe42d12 Patch from Tim Kosse to make PSFTP remember to close files on
various error conditions.

[originally from svn r8109]
2008-07-06 12:11:34 +00:00
Ben Harris
a3ea90c0e8 In the file-transfer applications, which only ever use the main
channel, arrange to set the SSH-2 window size to something very
large.  This prevents the connection stalling when the window fills
up, and means that PSCP receives data _much_ faster.

[originally from svn r7672]
2007-08-04 22:14:19 +00:00
Ben Harris
7df108f2fd When we get an error writing to a local file, stop the download rather than
pretending we just got -1 bytes.  Not actually tested, but it looks pretty
obvious.
Bug reported by dking wang.

[originally from svn r7459]
2007-04-10 21:46:44 +00:00
Simon Tatham
0a3c07d15e When the comments say `if we're in restart mode', the code in
question should actually be conditional on restart mode!

[originally from svn r7438]
2007-04-02 08:44:00 +00:00
Jacob Nevins
cc28093380 Spotted by Tim Kosse: we were returning an incorrect path in canonify() when
we couldn't get any sense out of the server.

[originally from svn r6877]
2006-10-22 20:19:55 +00:00
Simon Tatham
c353c3cc97 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.

[originally from svn r6810]
2006-08-27 08:03:19 +00:00
Simon Tatham
5765f8ceb9 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.

[originally from svn r6803]
2006-08-26 10:17:39 +00:00
Owen Dunn
33b7caa590 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.

[originally from svn r6783]
2006-08-12 15:20:19 +00:00
Jacob Nevins
f3be6ab7ab 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.)

[originally from svn r6636]
2006-04-13 21:18:09 +00:00
Jacob Nevins
1d6f8ae824 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'.

[originally from svn r6634]
2006-04-07 21:42:30 +00:00
Jacob Nevins
5e59d81947 Fix up documentation/usage messages for r6572.
[originally from svn r6574]
[r6572 == c2b2d9c539]
2006-02-19 12:52:28 +00:00
Jacob Nevins
8719f92c14 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.)

[originally from svn r6437]
[this svn revision also touched putty-wishlist]
2005-10-30 20:24:09 +00:00
Jacob Nevins
9565f4f550 Double-free on mkdir error, spotted by Brian Hartsock.
[originally from svn r5929]
2005-06-08 15:14:47 +00:00
Jacob Nevins
36fc6c0a76 Try to make our PGP signing more useful:
* All the PuTTY tools for Windows and Unix now contain the fingerprints of
   the Master Keys. The method for accessing them is crude but universal:
   a new "-pgpfp" command-line option. (Except Unix PuTTYgen, which takes
   "--pgpfp" just to be awkward.)

 * Move the key policy discussion from putty-website/keys.html to
   putty/doc/pgpkeys.but, and autogenerate the former from the latter.
   Also tweak the text somewhat and include the fingerprints of the
   Master Keys themselves.
   (I've merged the existing autogeneration scripts into a single new
   one; I've left the old scripts and keys.html around until such time
   as the webmonster reviews the changes and plumbs in the new script;
   he should remove the old files then.)

[originally from svn r5524]
[this svn revision also touched putty-website]
2005-03-19 02:26:58 +00:00
Jacob Nevins
5aa719d16e Consistently use a single notation to refer to SSH protocol versions, as
discussed. Use Barrett and Silverman's convention of "SSH-1" for SSH protocol
version 1 and "SSH-2" for protocol 2 ("SSH1"/"SSH2" refer to ssh.com
implementations in this scheme). <http://www.snailbook.com/terms.html>

[originally from svn r5480]
2005-03-10 16:36:05 +00:00
Jacob Nevins
a00b7e746f Localise "not connected to a host" messages.
[originally from svn r5060]
2005-01-01 16:43:19 +00:00
Jacob Nevins
e5f13ceee5 Now that rm, mkdir, and rmdir can operate on lots of files, make them more
chatty like the other multiple-file commands.

[originally from svn r5059]
2005-01-01 16:35:57 +00:00
Jacob Nevins
5c952ce64e Document recent changes to PSFTP (and other documentation tweaks).
[originally from svn r5058]
2005-01-01 16:16:13 +00:00
Jacob Nevins
549dd239c3 Remove rogue sfree()s inside new wildcard action functions -- were causing
segfaults in failure cases.

[originally from svn r5057]
2005-01-01 14:06:12 +00:00
Simon Tatham
714e7eeb0d There's always one: fix small memory leak introduced in last revision.
[originally from svn r5056]
2005-01-01 13:01:13 +00:00
Simon Tatham
27530d8d15 "Nirwana Nirwana" points out that mget, mput and ls are not the only
PSFTP commands that can make good use of wildcards! Now implemented
wildcard support in rmdir, rm, mv and chmod.

[originally from svn r5055]
2005-01-01 12:34:32 +00:00
Simon Tatham
6daf6faede Integrate unfix.org's IPv6 patches up to level 10, with rather a lot
of polishing to bring them to what I think should in principle be
release quality. Unlike the unfix.org patches themselves, this
checkin enables IPv6 by default; if you want to leave it out, you
have to build with COMPAT=-DNO_IPV6.

I have tested that this compiles on Visual C 7 (so the nightlies
_should_ acquire IPv6 support without missing a beat), but since I
don't have IPv6 set up myself I haven't actually tested that it
_works_. It still seems to make correct IPv4 connections, but that's
all I've been able to verify for myself. Further testing is needed.

[originally from svn r5047]
[this svn revision also touched putty-wishlist]
2004-12-30 16:45:11 +00:00
Simon Tatham
bf94aecd95 I've decided that trying to do wildcards in PSFTP as a special case
of directory recursion was a strategic error: it obfuscates
sftp_{get,put}_file(), and also it makes it very hard to handle
subdirectory wildcards such as `foo/*'. Accordingly, here's a
completely different approach, in which sftp_{get,put}_file() are
still responsible for directory recursion, but wildcards are
expanded in sftp_general_{get,put}() before being passed thereto.
Subdirectory wildcards are now handled consistently across Unix,
Windows and the remote server.

[originally from svn r5045]
2004-12-30 13:51:37 +00:00
Jacob Nevins
eceacef0f0 Missed options off mput help
[originally from svn r5010]
2004-12-18 10:46:21 +00:00
Simon Tatham
d649075539 The xfer mechanism wasn't gracefully terminating when an error was
encountered part way through transfer. In particular, this caused
psftp to hang (waiting for FXP_READ replies which had already
arrived) if you try `get' (without -r) on a remote directory.

[originally from svn r5005]
2004-12-17 13:39:41 +00:00
Jacob Nevins
cf44c428e3 Update online help for "-r" and "--" options to get/put commands.
Use command name in error messages rather than hardcoded "get:"/"put:".

[originally from svn r5002]
2004-12-17 12:15:17 +00:00
Simon Tatham
6c81ee6706 General mechanism for ensuring a dodgy SFTP server can't return
malicious filenames via FXP_READDIR.

[originally from svn r4995]
2004-12-16 19:36:47 +00:00
Simon Tatham
5ea746b15d Implement the `close' command, which terminates an SFTP session but
does not quit PSFTP, so you can then issue another `open' to connect
to somewhere else. This has apparently been trivial for some time,
for exactly the same reasons that `reuse-windows' was so easy, but
it hadn't occurred to me to actually do it until now.

[originally from svn r4994]
2004-12-16 19:19:59 +00:00
Simon Tatham
f1585f8f46 Jacob points out that I introduced a bug in PSFTP when I did the
timing shakeup: just running `psftp' caused the net/stdin select
loop (on both Unix and Windows) to get confused at the lack of any
network connection and give up immediately. Should now be fixed.

[originally from svn r4993]
2004-12-16 19:15:38 +00:00
Simon Tatham
69303f2d3e Wildcards in ls'. I think that completes psftp-multi'. Woo!
[originally from svn r4992]
[this svn revision also touched putty-wishlist]
2004-12-16 17:45:29 +00:00
Simon Tatham
a4fe439184 Implement mget and mput in PSFTP, supporting wildcards.
[originally from svn r4991]
[this svn revision also touched putty-wishlist]
2004-12-16 17:35:20 +00:00
Simon Tatham
bee5812a49 Support for recursive file transfer in PSFTP.
[originally from svn r4990]
[this svn revision also touched putty-wishlist]
2004-12-16 16:37:37 +00:00
Simon Tatham
7ecf13564a New timing infrastructure. There's a new function schedule_timer()
which pretty much any module can call to request a call-back in the
future. So terminal.c can do its own handling of blinking, visual
bells and deferred screen updates, without having to rely on
term_update() being called 50 times a second (fixes: pterm-timer);
and ssh.c and telnet.c both invoke a new module pinger.c which takes
care of sending keepalives, so they get sent uniformly in all front
ends (fixes: plink-keepalives, unix-keepalives).

[originally from svn r4906]
[this svn revision also touched putty-wishlist]
2004-11-27 13:20:21 +00:00
Jacob Nevins
da1dfe64bf Make PSFTP use console_get_line() to fetch username, so that that prompt is
affected by `-batch'.

[originally from svn r4833]
2004-11-19 21:24:47 +00:00
Jacob Nevins
43c4ff62d7 ampersat-in-username': tweak strchr' to `strrchr' where necessary to
consistently support usernames containing `@'.

[originally from svn r4563]
2004-09-21 16:49:51 +00:00
Jacob Nevins
c57951cc7d Another wart in the command-line processing: if the user just specifies
`-load sessname', and that mentions a hostname, that should be sufficient
to start a connection.

[originally from svn r4369]
2004-07-28 11:04:22 +00:00
Jacob Nevins
55119c2167 PSFTP was ignoring -1' and -2' and always using SSH-2 with fallback to
SSH-1. It also ignored any settings forbidding fallback to SSH-1.

Ignoring `-1' and `-2' is hardly the end of the world, as it'd be difficult
to think of a realistic situation where fallback didn't do the right thing
and PSFTP was still useful. However, ignoring a user's `SSH-2 only' setting
was a bit rude.

[originally from svn r4357]
2004-07-25 16:10:48 +00:00
Jacob Nevins
c2914f2191 Fix for `psftp-pscp-ignore-load': Default Settings is now loaded
before "-load" is processed so that it doesn't clobber it.

I've also changed the semantics of "-load" slightly for PSCP, PSFTP,
and Plink: if it's specified at all, it overrides (disables) the
implicit loading of session details based on a supplied hostname
elsewhere (on the grounds that the user is more likely to want the
"-load" session than the implicit session). (PuTTY itself doesn't do
implicit loading at all, so I haven't changed it.)

This means that all the PuTTY tools' behaviour is now consistent iff
"-load" is specified (otherwise, some tools have implicit-session, and
others don't).

However, I've not documented this behaviour, as there's a good chance
it will be swept away if and when we get round to sorting out how we
deal with settings from multiple sources. It's intended as a "do
something sensible" change.

[originally from svn r4352]
2004-07-25 14:00:26 +00:00
Jacob Nevins
20f433efac Add a configuration option for TCP keepalives (SO_KEEPALIVE), default off.
No very good reason, but I've occasionally wanted to frob it to see if it
makes any difference to problems I'm having, and it was easy.

Tested that it does actually cause keepalives on Windows (with tcpdump);
should also work on Unix. Not implemented on Mac (does nothing), but then
neither is TCP_NODELAY.

Quite a big checkin, much of which is adding `keepalive' alongside `nodelay'
in network function calls.

[originally from svn r4309]
2004-06-20 17:07:38 +00:00
Jacob Nevins
bdfd70375b Various tweaks to header comments to remind me which bits are meant to be
platform-independent, etc.

[originally from svn r4148]
2004-04-27 12:31:57 +00:00
Owen Dunn
6863377b72 Add -V for version information to plink, pscp, and psftp.
[originally from svn r4092]
2004-04-17 20:25:09 +00:00
Jacob Nevins
325a0bb915 Correct slightly misleading usage
[originally from svn r3889]
2004-02-22 14:57:40 +00:00
Simon Tatham
2379e69619 Darryl L. Miles's patch to support an optional port number argument
on the PSFTP `open' command; it was arguably a bug that this command
couldn't do such an obvious thing that could be done from the main
command line. Also had to fix a NULL-dereference in do_sftp_cleanup
in the process.

[originally from svn r3754]
2004-01-21 19:56:08 +00:00