annotate SMALL @ 1306:34e6127ef02e

merge fixes from PuTTY import.c toint() from misc.c (revids are from hggit conversion) changeset: 4620:60a336a6c85c user: Simon Tatham <[email protected]> date: Thu Feb 25 20:26:33 2016 +0000 files: import.c description: Fix potential segfaults in reading OpenSSH's ASN.1 key format. The length coming back from ber_read_id_len might have overflowed, so treat it as potentially negative. Also, while I'm here, accumulate it inside ber_read_id_len as an unsigned, so as to avoid undefined behaviour on integer overflow, and toint() it before return. Thanks to Hanno Böck for spotting this, with the aid of AFL. (cherry picked from commit 5b7833cd474a24ec098654dcba8cb9509f3bf2c1) Conflicts: import.c (cherry-picker's note: resolving the conflict involved removing an entire section of the original commit which fixed ECDSA code not present on this branch) changeset: 4619:9c6c638d98d8 user: Simon Tatham <[email protected]> date: Sun Jul 14 10:45:54 2013 +0000 files: import.c ssh.c sshdss.c sshpubk.c sshrsa.c description: Tighten up a lot of casts from unsigned to int which are read by one of the GET_32BIT macros and then used as length fields. Missing bounds checks against zero have been added, and also I've introduced a helper function toint() which casts from unsigned to int in such a way as to avoid C undefined behaviour, since I'm not sure I trust compilers any more to do the obviously sensible thing. [originally from svn r9918] changeset: 4618:3957829f24d3 user: Simon Tatham <[email protected]> date: Mon Jul 08 22:36:04 2013 +0000 files: import.c sshdss.c sshrsa.c description: Add an assortment of extra safety checks. [originally from svn r9896] changeset: 4617:2cddee0bce12 user: Jacob Nevins <[email protected]> date: Wed Dec 07 00:24:45 2005 +0000 files: import.c description: Institutional failure to memset() things pointed at rather than pointers. Things should now be zeroed and memory not leaked. Spotted by Brant Thomsen. [originally from svn r6476] changeset: 4616:24ac78a9c71d user: Simon Tatham <[email protected]> date: Wed Feb 11 13:58:27 2004 +0000 files: import.c description: Jacob's last-minute testing found a couple of trivial bugs in import.c, and my attempts to reproduce them in cmdgen found another one there :-) [originally from svn r3847] changeset: 4615:088d39a73db0 user: Simon Tatham <[email protected]> date: Thu Jan 22 18:52:49 2004 +0000 files: import.c description: Placate some gcc warnings. [originally from svn r3761] changeset: 4614:e4288bad4d93 parent: 1758:108b8924593d user: Simon Tatham <[email protected]> date: Fri Oct 03 21:21:23 2003 +0000 files: import.c description: My ASN.1 decoder returned wrong IDs for anything above 0x1E! Good job it's never had to yet. Ahem. [originally from svn r3479]
author Matt Johnston <matt@ucc.asn.au>
date Tue, 12 Jul 2016 23:00:01 +0800
parents b9d3f725e00b
children 13cb8cc1b0e4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
1 Tips for a small system:
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
2
161
b9d3f725e00b 0.44 release changes
Matt Johnston <matt@ucc.asn.au>
parents: 4
diff changeset
3 If you only want server functionality (for example), compile with
b9d3f725e00b 0.44 release changes
Matt Johnston <matt@ucc.asn.au>
parents: 4
diff changeset
4 make PROGRAMS=dropbear
b9d3f725e00b 0.44 release changes
Matt Johnston <matt@ucc.asn.au>
parents: 4
diff changeset
5 rather than just
b9d3f725e00b 0.44 release changes
Matt Johnston <matt@ucc.asn.au>
parents: 4
diff changeset
6 make dropbear
b9d3f725e00b 0.44 release changes
Matt Johnston <matt@ucc.asn.au>
parents: 4
diff changeset
7 so that client functionality in shared portions of Dropbear won't be included.
b9d3f725e00b 0.44 release changes
Matt Johnston <matt@ucc.asn.au>
parents: 4
diff changeset
8 The same applies if you are compiling just a client.
4
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
9
161
b9d3f725e00b 0.44 release changes
Matt Johnston <matt@ucc.asn.au>
parents: 4
diff changeset
10 ---
b9d3f725e00b 0.44 release changes
Matt Johnston <matt@ucc.asn.au>
parents: 4
diff changeset
11
b9d3f725e00b 0.44 release changes
Matt Johnston <matt@ucc.asn.au>
parents: 4
diff changeset
12 The following are set in options.h:
4
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
13
161
b9d3f725e00b 0.44 release changes
Matt Johnston <matt@ucc.asn.au>
parents: 4
diff changeset
14 - You can safely disable blowfish and twofish ciphers, and MD5 hmac, without
b9d3f725e00b 0.44 release changes
Matt Johnston <matt@ucc.asn.au>
parents: 4
diff changeset
15 affecting interoperability
b9d3f725e00b 0.44 release changes
Matt Johnston <matt@ucc.asn.au>
parents: 4
diff changeset
16
b9d3f725e00b 0.44 release changes
Matt Johnston <matt@ucc.asn.au>
parents: 4
diff changeset
17 - If you're compiling statically, you can turn off host lookups
4
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
18
161
b9d3f725e00b 0.44 release changes
Matt Johnston <matt@ucc.asn.au>
parents: 4
diff changeset
19 - You can disable either password or public-key authentication, though note
b9d3f725e00b 0.44 release changes
Matt Johnston <matt@ucc.asn.au>
parents: 4
diff changeset
20 that the IETF draft states that pubkey authentication is required.
4
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
21
161
b9d3f725e00b 0.44 release changes
Matt Johnston <matt@ucc.asn.au>
parents: 4
diff changeset
22 - Similarly with DSS and RSA, you can disable one of these if you know that
b9d3f725e00b 0.44 release changes
Matt Johnston <matt@ucc.asn.au>
parents: 4
diff changeset
23 all clients will be able to support a particular one. The IETF draft
b9d3f725e00b 0.44 release changes
Matt Johnston <matt@ucc.asn.au>
parents: 4
diff changeset
24 states that DSS is required, however you may prefer to use RSA.
b9d3f725e00b 0.44 release changes
Matt Johnston <matt@ucc.asn.au>
parents: 4
diff changeset
25 DON'T disable either of these on systems where you aren't 100% sure about
b9d3f725e00b 0.44 release changes
Matt Johnston <matt@ucc.asn.au>
parents: 4
diff changeset
26 who will be connecting and what clients they will be using.
4
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
27
161
b9d3f725e00b 0.44 release changes
Matt Johnston <matt@ucc.asn.au>
parents: 4
diff changeset
28 - Disabling the MOTD code and SFTP-SERVER may save a small amount of codesize
b9d3f725e00b 0.44 release changes
Matt Johnston <matt@ucc.asn.au>
parents: 4
diff changeset
29
b9d3f725e00b 0.44 release changes
Matt Johnston <matt@ucc.asn.au>
parents: 4
diff changeset
30 - You can disable x11, tcp and agent forwarding as desired. None of these are
b9d3f725e00b 0.44 release changes
Matt Johnston <matt@ucc.asn.au>
parents: 4
diff changeset
31 essential, although agent-forwarding is often useful even on firewall boxes.
b9d3f725e00b 0.44 release changes
Matt Johnston <matt@ucc.asn.au>
parents: 4
diff changeset
32
b9d3f725e00b 0.44 release changes
Matt Johnston <matt@ucc.asn.au>
parents: 4
diff changeset
33 ---
4
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
34
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
35 If you are compiling statically, you may want to disable zlib, as it will use
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
36 a few tens of kB of binary-size (./configure --disable-zlib).
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
37
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
38 You can create a combined binary, see the file MULTI, which will put all
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
39 the functions into one binary, avoiding repeated code.
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
40
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
41 If you're compiling with gcc, you might want to look at gcc's options for
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
42 stripping unused code. The relevant vars to set before configure are:
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
43
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
44 LDFLAGS=-Wl,--gc-sections
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
45 CFLAGS="-ffunction-sections -fdata-sections"
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
46
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
47 You can also experiment with optimisation flags such as -Os, note that in some
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
48 cases these flags actually seem to increase size, so experiment before
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
49 deciding.
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
50
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
51 Of course using small C libraries such as uClibc and dietlibc can also help.
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
52
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
53 If you have any queries, mail me and I'll see if I can help.