1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-01-09 17:38:00 +00:00
Go to file
Simon Tatham 395c228bee Adopt a new universal implementation of smemclr().
This new implementation uses the same optimisation-barrier technique
that I used in various places in testsc: have a no-op function, and a
volatile function pointer pointing at it, and then call through the
function pointer, so that nothing actually happens (apart from the
physical call and return) but the compiler has to assume that
_anything_ might have happened.

Doing this just after a memset enforces that the compiler can't have
thrown away the memset, because the called function might (for
example) check that all the memory really is zero and abort if not.

I've been turning this over in my mind ever since coming up with the
technique for testsc. I think it's far more robust than the previous
smemclr technique: so much so that I'm switching to using it
_everywhere_, and no longer using platform alternatives like Windows's
SecureZeroMemory().
2021-04-18 08:30:44 +01:00
charset Replace mkfiles.pl with a CMake build system. 2021-04-17 13:53:02 +01:00
cmake Adopt a new universal implementation of smemclr(). 2021-04-18 08:30:44 +01:00
contrib New script contrib/plinkfs. 2020-08-04 18:56:47 +01:00
doc Replace mkfiles.pl with a CMake build system. 2021-04-17 13:53:02 +01:00
icons Migrate all Python scripts to Python 3. 2020-03-04 21:23:49 +00:00
test Introduce OpenSSH-compatible SHA256 key fingerprinting. 2021-03-13 11:01:35 +00:00
unix Adopt a new universal implementation of smemclr(). 2021-04-18 08:30:44 +01:00
utils Adopt a new universal implementation of smemclr(). 2021-04-18 08:30:44 +01:00
windows Adopt a new universal implementation of smemclr(). 2021-04-18 08:30:44 +01:00
.gitignore Replace mkfiles.pl with a CMake build system. 2021-04-17 13:53:02 +01:00
agentf.c Change vtable defs to use C99 designated initialisers. 2020-03-10 21:06:29 +00:00
aqsync.c Build outgoing SSH agent requests in a strbuf. 2018-05-25 14:36:16 +01:00
be_all_s.c New GUI for protocol selection. 2021-04-10 09:51:29 +01:00
be_all.c New GUI for protocol selection. 2021-04-10 09:51:29 +01:00
be_misc.c Formatting change to braces around one case of a switch. 2020-02-16 11:26:21 +00:00
be_none.c New GUI for protocol selection. 2021-04-10 09:51:29 +01:00
be_nos_s.c New GUI for protocol selection. 2021-04-10 09:51:29 +01:00
be_nossh.c New GUI for protocol selection. 2021-04-10 09:51:29 +01:00
be_ssh.c New GUI for protocol selection. 2021-04-10 09:51:29 +01:00
Buildscr Replace mkfiles.pl with a CMake build system. 2021-04-17 13:53:02 +01:00
Buildscr.cv Replace mkfiles.pl with a CMake build system. 2021-04-17 13:53:02 +01:00
callback.c Add lots of missing 'static' keywords. 2020-01-29 06:44:18 +00:00
cgtest.c cmdgen: support configurable key fingerprint type. 2021-03-13 11:01:35 +00:00
CHECKLST.txt Fix build failure at -DNOT_X_WINDOWS. 2021-01-26 18:12:48 +00:00
clicons.c Change vtable defs to use C99 designated initialisers. 2020-03-10 21:06:29 +00:00
CMakeLists.txt Adopt a new universal implementation of smemclr(). 2021-04-18 08:30:44 +01:00
cmdgen.c cmdgen: have --dump output private parts of PPKs. 2021-04-07 22:59:54 +01:00
cmdline.c Document new backend command-line options. 2021-02-21 16:44:51 +00:00
config.c Bring SUPDUP config pane title in line with others. 2021-04-10 15:30:19 +01:00
console.c Console host key prompts: add 'more info' action. 2021-03-13 13:54:59 +00:00
console.h Factor out some common code in {ux,win}cons.c. 2021-03-13 11:01:35 +00:00
cproxy.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
defs.h Adopt a new universal implementation of smemclr(). 2021-04-18 08:30:44 +01:00
dialog.c dialog system: add a side-by-side alignment feature. 2021-04-10 09:43:25 +01:00
dialog.h dialog system: add a side-by-side alignment feature. 2021-04-10 09:43:25 +01:00
ecc.c New query function ecc_montgomery_is_identity. 2020-02-28 20:40:08 +00:00
ecc.h New query function ecc_montgomery_is_identity. 2020-02-28 20:40:08 +00:00
errsock.c Change vtable defs to use C99 designated initialisers. 2020-03-10 21:06:29 +00:00
fuzzterm.c Remove stub functions that are no longer needed. 2021-04-18 08:30:44 +01:00
import.c Merge the 0.74 release branch back to master. 2020-06-27 08:11:22 +01:00
LATEST.VER Update version number for 0.74 release. 2020-06-21 16:39:47 +01:00
ldisc.c Remove assertion that len != 0 in ldisc_send. 2020-06-14 15:49:36 +01:00
ldisc.h New array-growing macros: sgrowarray and sgrowarrayn. 2019-02-28 20:15:38 +00:00
LICENCE It's a new year. 2021-01-11 21:37:51 +00:00
licence.pl Separate the functions of licence.pl. 2021-04-17 13:52:27 +01:00
logging.c New wrapper macro for printf("%zu"), for old VS compat. 2020-02-09 08:51:37 +00:00
mainchan.c Relax criteria for accepting agent-forwarding channel-opens. 2020-12-23 22:26:44 +00:00
marshal.h Add BinarySource_REWIND_TO. 2020-02-09 08:21:21 +00:00
millerrabin.c Factor out Miller-Rabin checking into its own file. 2020-02-29 16:53:34 +00:00
minibidi.c Formatting change to braces around one case of a switch. 2020-02-16 11:26:21 +00:00
misc.h Break up x11fwd.c. 2021-04-18 08:18:27 +01:00
mksrcarc.sh Replace mkfiles.pl with a CMake build system. 2021-04-17 13:53:02 +01:00
mkunxarc.sh Replace mkfiles.pl with a CMake build system. 2021-04-17 13:53:02 +01:00
mpint_i.h Start a file of 'unsafe' mp_int functions. 2020-02-23 14:49:54 +00:00
mpint.c Fix a few warnings reported by Visual Studio. 2021-04-10 11:51:08 +01:00
mpint.h Add mp_copy_integer_into function. 2020-03-01 20:09:01 +00:00
mpunsafe.c Start a file of 'unsafe' mp_int functions. 2020-02-23 14:49:54 +00:00
mpunsafe.h Start a file of 'unsafe' mp_int functions. 2020-02-23 14:49:54 +00:00
network.h Greatly improve printf format-string checking. 2020-02-09 08:51:37 +00:00
nocmdline.c Make cmdline_tooltype a const int. 2020-01-30 06:40:22 +00:00
nocproxy.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
nogss.c Rewrite gprefs() in settings.c so that its input mapping includes 2011-06-25 17:37:31 +00:00
noprint.c noprint.c: fix compile failure. 2021-02-10 21:07:57 +00:00
noproxy.c Introduce noproxy.c. 2020-09-13 09:11:31 +01:00
norand.c Centralise 'no random numbers' stubs into norand.c. 2020-02-07 19:17:19 +00:00
noshare.c Fix type error in noshare.c. 2020-11-14 21:39:14 +00:00
noterm.c Make calling term_nopaste() a cross-platform feature. 2013-08-17 16:06:40 +00:00
notiming.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
nullplug.c Change vtable defs to use C99 designated initialisers. 2020-03-10 21:06:29 +00:00
pageant.c pageant_get_keylist: add missing init of kl->broken. 2021-04-10 10:55:53 +01:00
pageant.h winpgnt: menu options to delete/reencrypt everything. 2021-04-04 10:02:24 +01:00
pgssapi.c Fix a missing } in a GSSAPI-related comment. 2018-04-26 07:11:09 +01:00
pgssapi.h Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
pinger.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
pockle.c Fix false negative in Pockle discriminant check. 2020-03-13 08:02:27 +00:00
portfwd.c Change vtable defs to use C99 designated initialisers. 2020-03-10 21:06:29 +00:00
pproxy.c Get rid of lots of implicit pointer types. 2018-10-04 19:10:23 +01:00
primecandidate.c PrimeCandidateSource: add one-shot mode. 2020-03-07 11:24:12 +00:00
proxy.c Fix downright weird line breaking. 2021-02-13 10:11:30 +00:00
proxy.h Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
pscp.c Remove MD5 fingerprints from usage messages. 2021-03-27 18:39:16 +00:00
psftp.c Remove MD5 fingerprints from usage messages. 2021-03-27 18:39:16 +00:00
psftp.h Remove FLAG_VERBOSE. 2020-01-30 06:40:21 +00:00
psftpcommon.c Fall back to not sorting large dirs in pscp -ls or psftp 'ls'. 2019-07-10 20:47:09 +01:00
psocks.c psocks: remove print_c_string(). 2021-04-08 01:45:03 +01:00
psocks.h Auxiliary application: 'psocks', a simple SOCKS server. 2020-02-23 16:36:27 +00:00
putty.h Break up x11fwd.c. 2021-04-18 08:18:27 +01:00
puttymem.h Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
puttyps.h Delete the old 'macosx' directory completely. 2016-03-25 09:06:03 +00:00
raw.c Remove NULL initialisers in BackendVtables. 2021-02-21 22:40:09 +00:00
README Replace mkfiles.pl with a CMake build system. 2021-04-17 13:53:02 +01:00
release.pl Replace mkfiles.pl with a CMake build system. 2021-04-17 13:53:02 +01:00
rlogin.c Remove NULL initialisers in BackendVtables. 2021-02-21 22:40:09 +00:00
scpserver.c Change vtable defs to use C99 designated initialisers. 2020-03-10 21:06:29 +00:00
sesschan.c Uppity: add stunt for unauthorised agent forwarding attempts. 2020-12-23 22:26:44 +00:00
settings.c Merge the 0.74 release branch back to master. 2020-06-27 08:11:22 +01:00
sftp.c Impose an upper bound on incoming SFTP packet length. 2021-04-10 09:00:49 +01:00
sftp.h Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
sftpcommon.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
sftpserver.c Change vtable defs to use C99 designated initialisers. 2020-03-10 21:06:29 +00:00
sign.sh Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
smallprimes.c Move init_primes_array out into its own file. 2020-02-23 14:12:21 +00:00
ssh1bpp.c Change vtable defs to use C99 designated initialisers. 2020-03-10 21:06:29 +00:00
ssh1censor.c Add and use BinarySource_*INIT_PL. 2019-02-06 21:46:10 +00:00
ssh1connection-client.c Relax criteria for accepting agent-forwarding channel-opens. 2020-12-23 22:26:44 +00:00
ssh1connection-server.c Change vtable defs to use C99 designated initialisers. 2020-03-10 21:06:29 +00:00
ssh1connection.c Relax criteria for accepting agent-forwarding channel-opens. 2020-12-23 22:26:44 +00:00
ssh1connection.h Relax criteria for accepting agent-forwarding channel-opens. 2020-12-23 22:26:44 +00:00
ssh1login-server.c Merge the 0.74 release branch back to master. 2020-06-27 08:11:22 +01:00
ssh1login.c Pass more information to interactive host key check. 2021-03-13 13:54:59 +00:00
ssh2bpp-bare.c Support receiving RFC 8308 SSH2_MSG_EXT_INFO. 2020-11-21 15:09:41 +00:00
ssh2bpp.c Support receiving RFC 8308 SSH2_MSG_EXT_INFO. 2020-11-21 15:09:41 +00:00
ssh2censor.c Add and use BinarySource_*INIT_PL. 2019-02-06 21:46:10 +00:00
ssh2connection-client.c Relax criteria for accepting agent-forwarding channel-opens. 2020-12-23 22:26:44 +00:00
ssh2connection-server.c Pass SshServerConfig through to sesschan.c. 2019-03-31 10:35:10 +01:00
ssh2connection.c Fix premature exit if 'plink -shareexists' happens early. 2021-02-21 10:53:31 +00:00
ssh2connection.h Fix premature exit if 'plink -shareexists' happens early. 2021-02-21 10:53:31 +00:00
ssh2kex-client.c Pass more information to interactive host key check. 2021-03-13 13:54:59 +00:00
ssh2kex-server.c Support rsa-sha2-* host keys in Uppity. 2020-11-22 08:13:21 +00:00
ssh2transhk.c Add missing del234 in ssh_transient_hostkey_cache_add. 2019-06-15 21:37:36 +01:00
ssh2transport.c ssh2kex-client.c: get rid of s->fingerprint. 2021-03-13 11:01:35 +00:00
ssh2transport.h ssh2kex-client.c: get rid of s->fingerprint. 2021-03-13 11:01:35 +00:00
ssh2userauth-server.c Merge the 0.74 release branch back to master. 2020-06-27 08:11:22 +01:00
ssh2userauth.c Fix minor memory leak in rsa-sha2-256 userauth. 2020-11-25 16:25:21 +00:00
ssh.c Mention any extant downstreams in close warning. 2021-02-21 14:32:51 +00:00
ssh.h Break up x11fwd.c. 2021-04-18 08:18:27 +01:00
sshaes.c Change vtable defs to use C99 designated initialisers. 2020-03-10 21:06:29 +00:00
ssharcf.c Change vtable defs to use C99 designated initialisers. 2020-03-10 21:06:29 +00:00
sshargon2.c Argon2 hprime: remove pointless bounds check. 2021-04-10 08:54:43 +01:00
sshauxcrypt.c Add an IV argument to aes_{en,de}crypt_pubkey. 2021-02-20 16:49:52 +00:00
sshbcrypt.c Access all hashes and MACs through the standard API. 2019-01-20 17:09:24 +00:00
sshblake2.c Add an implementation of BLAKE2b. 2021-02-20 16:49:52 +00:00
sshblowf.c Change vtable defs to use C99 designated initialisers. 2020-03-10 21:06:29 +00:00
sshblowf.h Turn SSH-2 ciphers into a classoid. 2018-09-19 23:08:07 +01:00
sshbpp.h Support receiving RFC 8308 SSH2_MSG_EXT_INFO. 2020-11-21 15:09:41 +00:00
sshccp.c Change vtable defs to use C99 designated initialisers. 2020-03-10 21:06:29 +00:00
sshchan.h Change vtable defs to use C99 designated initialisers. 2020-03-10 21:06:29 +00:00
sshcommon.c Allow pre-storing host key fingerprints of all types. 2021-03-13 13:54:59 +00:00
sshcr.h Assorted benign warning fixes. 2020-01-29 06:44:18 +00:00
sshcrc.c Rewrite CRC implementation to be constant-time. 2019-01-16 06:22:49 +00:00
sshcrcda.c Add lots of missing 'static' keywords. 2020-01-29 06:44:18 +00:00
sshdes.c Change vtable defs to use C99 designated initialisers. 2020-03-10 21:06:29 +00:00
sshdh.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
sshdss.c Merge the 0.74 release branch back to master. 2020-06-27 08:11:22 +01:00
sshdssg.c PrimeCandidateSource: remember prime factors of n-1. 2020-03-01 20:09:01 +00:00
sshecc.c Change vtable defs to use C99 designated initialisers. 2020-03-10 21:06:29 +00:00
sshecdsag.c New vtable API for keygen progress reporting. 2020-02-29 16:53:34 +00:00
sshgss.h Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
sshgssc.c Make dupcat() into a variadic macro. 2019-10-14 19:42:37 +01:00
sshgssc.h Support GSS key exchange, for Kerberos 5 only. 2018-04-26 07:21:16 +01:00
sshhmac.c Change vtable defs to use C99 designated initialisers. 2020-03-10 21:06:29 +00:00
sshkeygen.h RSA generation: option to generate strong primes. 2020-03-07 11:37:31 +00:00
sshmac.c sshmac.c: remove excessive return statement 2019-01-02 22:50:08 +00:00
sshmd5.c Rewrite MD5 implementation in my modern style. 2020-12-24 17:30:23 +00:00
sshnogss.c Post-release destabilisation! Completely remove the struct type 2011-07-14 18:52:21 +00:00
sshppl.h Change vtable defs to use C99 designated initialisers. 2020-03-10 21:06:29 +00:00
sshprime.c Change vtable defs to use C99 designated initialisers. 2020-03-10 21:06:29 +00:00
sshprng.c Stop using mp_int in sshprng.c. 2020-09-13 09:11:31 +01:00
sshpubk.c Fix failure handling when loading a PPK file. 2021-04-10 09:13:49 +01:00
sshrand.c Remove dependency of sshrand.c on SHA-512. 2020-09-13 09:11:31 +01:00
sshrsa.c Add API for getting all of a key's fingerprints. 2021-03-13 11:01:35 +00:00
sshrsag.c RSA generation: option to generate strong primes. 2020-03-07 11:37:31 +00:00
sshserver.c Uppity: add stunt for unauthorised agent forwarding attempts. 2020-12-23 22:26:44 +00:00
sshserver.h Uppity: add stunt for unauthorised agent forwarding attempts. 2020-12-23 22:26:44 +00:00
sshsh256.c Change vtable defs to use C99 designated initialisers. 2020-03-10 21:06:29 +00:00
sshsh512.c Fix buffer overflow in NEON SHA-384 output. 2020-12-24 17:39:54 +00:00
sshsha3.c Change vtable defs to use C99 designated initialisers. 2020-03-10 21:06:29 +00:00
sshsha.c Change vtable defs to use C99 designated initialisers. 2020-03-10 21:06:29 +00:00
sshshare.c Change vtable defs to use C99 designated initialisers. 2020-03-10 21:06:29 +00:00
sshsignals.h New system for handling SSH signals. 2018-10-21 10:02:10 +01:00
sshttymodes.h New system for handling SSH terminal modes. 2018-10-21 10:02:10 +01:00
sshverstring.c Change vtable defs to use C99 designated initialisers. 2020-03-10 21:06:29 +00:00
sshzlib.c Fix a few warnings reported by Visual Studio. 2021-04-10 11:51:08 +01:00
storage.h Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
supdup.c Make the backend_init error message dynamic. (NFC) 2020-04-18 13:33:51 +01:00
telnet.c Make the backend_init error message dynamic. (NFC) 2020-04-18 13:33:51 +01:00
terminal.c Make pterm's default window title more sensible. 2021-03-08 06:59:26 +00:00
terminal.h Apply UPDATE_DELAY in arrears, not in advance. 2021-02-07 19:59:21 +00:00
testback.c Make the backend_init error message dynamic. (NFC) 2020-04-18 13:33:51 +01:00
testcrypt.c Remove stub functions that are no longer needed. 2021-04-18 08:30:44 +01:00
testcrypt.h Introduce OpenSSH-compatible SHA256 key fingerprinting. 2021-03-13 11:01:35 +00:00
testsc.c Remove stub functions that are no longer needed. 2021-04-18 08:30:44 +01:00
testzlib.c Ensure test programs have a dputs(). 2020-11-28 17:44:27 +00:00
timing.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
tree234.h Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
version.h Replace mkfiles.pl with a CMake build system. 2021-04-17 13:53:02 +01:00
x11disp.c Break up x11fwd.c. 2021-04-18 08:18:27 +01:00
x11fwd.c Break up x11fwd.c. 2021-04-18 08:18:27 +01:00

This is the README for PuTTY, a free Windows and Unix Telnet and SSH
client.

PuTTY is built using CMake <https://cmake.org/>. To compile in the
simplest way (on any of Linux, Windows or Mac), run these commands in
the source directory:

  cmake .
  cmake --build .

Documentation (in various formats including Windows Help and Unix
`man' pages) is built from the Halibut (`.but') files in the `doc'
subdirectory using `doc/Makefile'. If you aren't using one of our
source snapshots, you'll need to do this yourself. Halibut can be
found at <https://www.chiark.greenend.org.uk/~sgtatham/halibut/>.

The PuTTY home web site is

    https://www.chiark.greenend.org.uk/~sgtatham/putty/

If you want to send bug reports or feature requests, please read the
Feedback section of the web site before doing so. Sending one-line
reports saying `it doesn't work' will waste your time as much as
ours.

See the file LICENCE for the licence conditions.