1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-01-09 01:18:00 +00:00
Go to file
Simon Tatham 2fd2f4715d Squash shift warnings in ssh2_bpp_check_unimplemented.
I did a horrible thing with a list macro which builds up a 256-bit
bitmap of known SSH-2 message types at compile time, by means of
evaluating a conditional expression per known message type and per
bitmap word which boils down to (in pseudocode)

  (shift count in range ? 1 << shift count : 0)

I think this is perfectly valid C. If the shift count is out of range,
then the use of the << operator in the true branch of the ?: would
have undefined behaviour if it were executed - but that's OK, because
in that situation, the safe false branch is executed instead.

But when the whole thing is a compile-time evaluated constant
expression, the compiler can prove statically that the << in the true
branch is an out-of-range shift, and at least some compilers will warn
about it verbosely. The same compiler *could* also prove statically
that that branch isn't taken, and use that to suppress the warning -
but at least clang does not.

The solution is the same one I used in shift_right_by_one_word and
shift_left_by_one_word in mpint.c: inside the true branch, nest a
second conditional expression which coerces the shift count to always
be in range, by setting it to 0 if it's not. This doesn't affect the
output, because the only cases in which the output of the true branch
is altered by this transformation are the ones in which the true
branch wasn't taken anyway.

So this change should make no difference to the output of this macro
construction, but it suppresses about 350 pointless warnings from
clang.
2021-09-14 11:23:20 +01:00
charset Add missing dependencies on generated source files. 2021-04-18 17:01:50 +01:00
cmake Don't #include <utmp.h> if it doesn't exist. 2021-05-13 18:40:47 +01:00
contrib New script contrib/proveprime.py. 2021-06-12 13:50:51 +01:00
crypto Add references for the Diffie-Hellman fixed primes. 2021-08-28 10:25:09 +01:00
doc Docs: insert missing 'inline' in a code example. 2021-09-07 13:38:14 +01:00
icons Make Windows versions of the pterm icons. 2021-05-08 17:33:25 +01:00
keygen Make pcs_set_oneshot even more one-shot. 2021-08-27 18:04:49 +01:00
otherbackends Rlogin: handle user abort at the username prompt. 2021-09-14 08:49:08 +01:00
ssh Squash shift warnings in ssh2_bpp_check_unimplemented. 2021-09-14 11:23:20 +01:00
test primegen.py: add a --probabilistic option. 2021-08-28 10:17:16 +01:00
unix Allow new_connection to take an optional Seat. (NFC) 2021-09-13 17:24:47 +01:00
utils Allow new_connection to take an optional Seat. (NFC) 2021-09-13 17:24:47 +01:00
windows FdSocket, HandleSocket: store a notional peer address. 2021-09-13 14:38:44 +01:00
.gitignore Add .gitignore rules for in-tree builds. 2021-04-19 18:26:56 +01: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 Send PLUGLOG_CONNECT_SUCCESS in proxied socket types. 2021-09-13 14:38:44 +01: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 Merge tag '0.76' into main 2021-07-17 11:49:44 +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 Spelling errors in the release checklist. 2021-05-03 17:01:55 +01:00
clicons.c Change vtable defs to use C99 designated initialisers. 2020-03-10 21:06:29 +00:00
CMakeLists.txt Initial support for in-process proxy SSH connections. 2021-05-22 14:13:52 +01:00
cmdgen.c cmdgen: add missing null pointer check in --dump mode. 2021-06-12 14:08:10 +01:00
cmdline.c New option to reject 'trivial' success of userauth. 2021-06-23 21:01:50 +01:00
config.c Bug workaround to delay sending our SSH greeting. 2021-08-14 11:46:21 +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 Make cmake.h available everywhere. 2021-04-19 18:26:56 +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
errsock.c Change vtable defs to use C99 designated initialisers. 2020-03-10 21:06:29 +00:00
fuzzterm.c Make TermWin's palette_get_overrides() take a Terminal *. 2021-06-12 14:08:10 +01:00
import.c Spelling: standardise on "DSA", not "DSS". 2021-04-22 18:34:47 +01:00
LATEST.VER Update version number for 0.76 release. 2021-07-10 10:39:20 +01:00
ldisc.c Remove ldisc.h. 2021-09-13 12:06:45 +01: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 sshproxy: share the caller's LogPolicy. 2021-09-13 17:18:31 +01:00
marshal.h Add some more marshalling functions, for file parsing. 2020-01-09 19:57:35 +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 Integrate the 'doc' subdir into the CMake system. 2021-05-03 17:01:55 +01:00
mpint.h Make mp_unsafe_mod_integer not be unsafe. 2021-08-27 17:43:40 +01:00
network.h sshproxy: borrow a Seat for host key and crypto dialogs. 2021-09-13 17:27:08 +01: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 Allow new_connection to take an optional Seat. (NFC) 2021-09-13 17:24:47 +01:00
norand.c Centralise 'no random numbers' stubs into norand.c. 2020-02-07 19:17:19 +00:00
nosshproxy.c sshproxy: borrow a Seat for host key and crypto dialogs. 2021-09-13 17:27:08 +01: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
pinger.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
pproxy.c Get rid of lots of implicit pointer types. 2018-10-04 19:10:23 +01:00
proxy.c sshproxy: borrow a Seat for host key and crypto dialogs. 2021-09-13 17:27:08 +01:00
proxy.h Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
pscp.c New Seat method, notify_session_started(). 2021-09-12 11:55:55 +01:00
psftp.c New Seat method, notify_session_started(). 2021-09-12 11:55:55 +01:00
psftp.h Remove FLAG_VERBOSE. 2020-01-30 06:40:21 +00:00
psftpcommon.c Move the SSH implementation into its own subdirectory. 2021-04-22 18:09:13 +01:00
psocks.c Move the SSH implementation into its own subdirectory. 2021-04-22 18:09:13 +01:00
psocks.h Auxiliary application: 'psocks', a simple SOCKS server. 2020-02-23 16:36:27 +00:00
putty.h Allow new_connection to take an optional Seat. (NFC) 2021-09-13 17:24:47 +01:00
puttymem.h Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01: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
settings.c Bug workaround to delay sending our SSH greeting. 2021-08-14 11:46:21 +01:00
sign.sh GPG key rollover. 2021-08-14 08:02:27 +01:00
ssh.h New Seat callback, seat_sent(). 2021-06-27 13:52:48 +01:00
sshcr.h Assorted benign warning fixes. 2020-01-29 06:44:18 +00:00
sshkeygen.h Side-channel-safe rewrite of the Miller-Rabin test. 2021-08-27 18:04:49 +01:00
sshproxy.c sshproxy: borrow a Seat for host key and crypto dialogs. 2021-09-13 17:27:08 +01:00
sshpubk.c Fix tight loop on reading truncated key files. 2021-06-12 14:08:10 +01:00
sshrand.c Remove dependency of sshrand.c on SHA-512. 2020-09-13 09:11:31 +01:00
storage.h Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
terminal.c Fix terminal redraw slowdown in presence of true colour. 2021-07-15 20:16:49 +01:00
terminal.h Apply UPDATE_DELAY in arrears, not in advance. 2021-02-07 19:59:21 +00:00
testcrypt.c Add some tests of Miller-Rabin to cryptsuite. 2021-08-27 17:43:40 +01:00
testcrypt.h Add some tests of Miller-Rabin to cryptsuite. 2021-08-27 17:43:40 +01:00
testsc.c testsc: remove log_discard(). 2021-09-07 13:46:37 +01:00
testzlib.c Move the SSH implementation into its own subdirectory. 2021-04-22 18:09:13 +01: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 Move the SSH implementation into its own subdirectory. 2021-04-22 18:09:13 +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.