Commit Graph

3209 Commits

Author SHA1 Message Date
Denys Vlasenko
d74993d31d tls: P@256: remove "header comment is kept intact" comment
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-06 14:28:47 +02:00
Denys Vlasenko
567eefcaf8 tls: P256: do not dumplicate sp_256_sub_8()
function                                             old     new   delta
sp_256_proj_point_dbl_8                              359     374     +15
sp_256_ecc_mulmod_8                                 1159    1171     +12
sp_256_mont_reduce_8                                 245     250      +5
sp_256_mont_dbl_8                                     26      31      +5
sp_256_sub_8_p256_mod                                 43       -     -43
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 4/0 up/down: 37/-43)             Total: -6 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-06 14:25:54 +02:00
Denys Vlasenko
00f2cceb6a tls: P256: shrink sp_256_mul_add_8 a bit more
function                                             old     new   delta
sp_256_mont_reduce_8                                 257     245     -12

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-06 10:15:29 +02:00
Denys Vlasenko
c784284615 tls: P256: propagate constants, create dedicated "subtract p256_mod" function
8 instances of this subtraction probably warrant a few bytes more of code.

function                                             old     new   delta
sp_256_sub_8_p256_mod                                  -      71     +71
sp_256_mont_sub_8                                      -      29     +29
sp_256_mont_dbl_8                                      -      26     +26
sp_256_mont_reduce_8                                 262     257      -5
sp_256_ecc_mulmod_8                                 1171    1161     -10
sp_256_proj_point_dbl_8                              374     359     -15
static.sp_256_mont_sub_8                              29       -     -29
static.sp_256_mont_dbl_8                              31       -     -31
------------------------------------------------------------------------------
(add/remove: 3/2 grow/shrink: 0/3 up/down: 126/-90)            Total: 36 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-06 01:11:48 +02:00
Denys Vlasenko
2430fcfd8d tls: optimize sp_256_mont_reduce_8 in P256
The code size decrease is small, but we eliminate ALL multiplies!

function                                             old     new   delta
sp_256_mont_reduce_8                                 268     262      -6

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-06 00:24:03 +02:00
Denys Vlasenko
bbd723ebec tls: optimize sp_256_mul_8 in P256
function                                             old     new   delta
sp_256_mont_mul_8                                    151     150      -1

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-05 23:19:18 +02:00
Denys Vlasenko
3b411ebbfc tls: replace "26-bit" P256 code with 32-bit one.
function                                             old     new   delta
sp_256_ecc_mulmod_8                                    -    1171   +1171
sp_256_mod_mul_norm_8                                  -     834    +834
sp_256_proj_point_dbl_8                                -     374    +374
sp_256_mont_reduce_8                                   -     268    +268
sp_256_mont_mul_8                                      -     151    +151
sp_256_sub_8                                           -      76     +76
sp_256_add_8                                           -      76     +76
sp_256_cmp_8                                           -      38     +38
static.sp_256_mont_dbl_8                               -      31     +31
static.sp_256_mont_sub_8                               -      29     +29
sp_256_to_bin_8                                        -      28     +28
sp_256_point_from_bin2x32                             50      73     +23
sp_256_mont_sqr_8                                      -       7      +7
sp_256_mont_sqr_10                                     7       -      -7
p256_mod                                              40      32      -8
curve_P256_compute_pubkey_and_premaster              186     167     -19
sp_256_sub_10                                         22       -     -22
sp_256_add_10                                         22       -     -22
sp_256_cmp_10                                         24       -     -24
sp_256_norm_10                                        31       -     -31
static.sp_256_mont_sub_10                             49       -     -49
static.sp_256_mont_dbl_10                             52       -     -52
static.sp_256_mul_add_10                              82       -     -82
sp_256_from_bin_10                                   119       -    -119
sp_256_to_bin_10                                     120       -    -120
sp_256_mont_reduce_10                                178       -    -178
sp_256_mont_mul_10                                   214       -    -214
sp_256_proj_point_dbl_10                             451       -    -451
sp_256_ecc_mulmod_10                                1216       -   -1216
sp_256_mod_mul_norm_10                              1305       -   -1305
------------------------------------------------------------------------------
(add/remove: 12/15 grow/shrink: 1/2 up/down: 3106/-3919)     Total: -813 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-05 20:01:38 +02:00
Denys Vlasenko
55578f2fb7 tls: fix the case of sp_256_mont_tpl_10() leaving striay high bits
It has no effect on correctness, but interferes with compating internal state
of different implementations.

function                                             old     new   delta
sp_256_proj_point_dbl_10                             443     451      +8
static.sp_256_mont_sub_10                             46      49      +3
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 11/0)               Total: 11 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-05 19:46:39 +02:00
Denys Vlasenko
81d8af1970 tls: fix (what looks like) a rare corner case bug in P256
function                                             old     new   delta
static.sp_256_mont_sub_10                             30      46     +16

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-05 17:31:33 +02:00
Denys Vlasenko
92402d5e0a tls: remove one overzealous debugging statement
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-05 14:01:52 +02:00
Denys Vlasenko
137864f559 tls: add debugging scaffolding to P256 code
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-05 13:50:11 +02:00
Denys Vlasenko
389329efbe tls: another P256 code shrink
Propagate constant arrays and scalars deeper down call chain.
Use sp_256_mont_mul_10 to implement sp_256_mont_sqr_10.

function                                             old     new   delta
sp_256_mont_mul_10                                     -     214    +214
sp_256_mont_reduce_10                                  -     178    +178
sp_256_mont_sqr_10                                     -       7      +7
static.sp_256_mont_reduce_10                         178       -    -178
static.sp_256_mont_mul_10                            214       -    -214
static.sp_256_mont_sqr_10                            234       -    -234
------------------------------------------------------------------------------
(add/remove: 3/3 grow/shrink: 0/0 up/down: 399/-626)         Total: -227 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-05 13:39:33 +02:00
Denys Vlasenko
e730505034 tls: P256 code shrink
function                                             old     new   delta
sp_256_to_bin_10                                       -     120    +120
sp_256_from_bin_10                                     -     119    +119
sp_256_proj_point_dbl_10                             446     443      -3
curve_P256_compute_pubkey_and_premaster              191     186      -5
sp_256_point_from_bin2x32                             62      50     -12
sp_256_to_bin                                        120       -    -120
static.sp_256_from_bin                               149       -    -149
------------------------------------------------------------------------------
(add/remove: 2/2 grow/shrink: 0/3 up/down: 239/-289)          Total: -50 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-05 13:32:04 +02:00
Denys Vlasenko
934bb01d51 tls: "server cert is not RSA" is a fatal error
function                                             old     new   delta
tls_handshake                                       2022    2019      -3

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-01 22:03:09 +02:00
Ron Yorston
ed9aa89269 wget: implement --post-file
Add the --post-file option to send form data from a file.  As with
--post-data it's up to the user to ensure that the data is encoded
as appropriate:  all wget does is stuff the provided data into
the request.

The --post-data and --post-file options are mutually exclusive and
only one instance of either may be given.

Additionally:

- update the usage message to include missing details of the --post-data
  and --header options;

- free POST data if FEATURE_CLEAN_UP is enabled.

function                                             old     new   delta
packed_usage                                       34158   34214     +56
wget_main                                           2762    2805     +43
.rodata                                            99225   99240     +15
static.wget_longopts                                 266     278     +12
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 4/0 up/down: 126/0)             Total: 126 bytes

Signed-off-by: Ron Yorston <rmy@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-01 14:55:18 +02:00
Denys Vlasenko
1f5a44d20c tls: add scaffolding to selectively disable ciphers. no code changes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-01 14:27:10 +02:00
Denys Vlasenko
7714518f1a tls: code shrink P256 code
function                                             old     new   delta
sp_256_to_bin                                        148     120     -28

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-10-01 13:51:39 +02:00
Denys Vlasenko
ac36e70074 tls: remove unused define
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-09-30 00:03:23 +02:00
Denys Vlasenko
40f2dd7dd2 httpd: fix config deps
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-09-10 10:07:42 +02:00
Denys Vlasenko
7ab9cd2398 libbb: make bb_lookup_port() abort on bad port names
Also, no need to preserve errno

function                                             old     new   delta
.rodata                                           104247  104241      -6
bb_lookup_port                                        97      83     -14
nc_main                                             1039    1018     -21
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/3 up/down: 0/-41)             Total: -41 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-09-09 22:00:44 +02:00
Sergey Ponomarev
82c5eb8e46 httpd,telnetd: make default port configurable
BusyBox on Termux can't use ports less than 1024 it's patched to change default port for httpd to 8080 and telnetd to 8023.

https://github.com/termux/termux-packages/blob/master/packages/busybox/0011-networking-telnetd-default-port.patch
https://github.com/termux/termux-packages/blob/master/packages/busybox/0010-networking-httpd-default-port.patch

To avoid such patches we can make port configurable.

function                                             old     new   delta
packed_usage                                       33920   33914      -6

Signed-off-by: Sergey Ponomarev <stokito@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-09-09 21:42:48 +02:00
Denys Vlasenko
8aa626ffff udhcp: add comments, no code changes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-09-04 01:50:42 +02:00
Denys Vlasenko
f02691939e dhcprelay: change two more variables to unsigned
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-09-02 17:09:12 +02:00
Denys Vlasenko
3f2d969db9 udhcp: clarify aspects of relay operation, add TODOs and FIXMEs, tweak --help
function                                             old     new   delta
packed_usage                                       33891   33920     +29
dhcprelay_main                                       943     926     -17
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 29/-17)             Total: 12 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-09-02 16:24:52 +02:00
Denys Vlasenko
62d0c8e028 udhcpd: check config file for bad IP ranges (start > end)
function                                             old     new   delta
.rodata                                           104209  104238     +29
read_config                                          208     225     +17
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 46/0)               Total: 46 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-09-02 14:40:54 +02:00
Denys Vlasenko
d99dee944e udhcpd: update --help to include -a MSEC
function                                             old     new   delta
packed_usage                                       33886   33891      +5

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-09-02 14:02:23 +02:00
Denys Vlasenko
29b53ef03f udhcp: fix build breakage on MIPS
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-08-20 13:38:16 +02:00
Denys Vlasenko
2a1ce6b20e traceroute: fix compile error due to FreeBSD compat
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-08-15 20:06:52 +02:00
Denys Vlasenko
f5f336e787 tc: fix for parsing of "dev IFACE" and printing of "class list"
First part (parsing fix) is from Steffen Nurpmeso <steffen@sdaoden.eu>

function                                             old     new   delta
.rodata                                           104120  104138     +18
print_qdisc                                          469     464      -5
tc_main                                              980     969     -11
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/2 up/down: 18/-16)              Total: 2 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-07-11 14:50:04 +02:00
Denys Vlasenko
609df6f22a *: more --help tweaks
function                                             old     new   delta
packed_usage                                       33522   33534     +12

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-16 14:24:27 +02:00
Denys Vlasenko
1abaa6b84c telnetd: give inetd.conf example in --help
function                                             old     new   delta
packed_usage                                       33537   33522     -15

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-16 10:49:18 +02:00
Denys Vlasenko
ebe8c14d34 udhcpc: do not use inet_addr() to parse -r REQ_IP, it's deprecated
...and we did not error-check it, and this is the only use of it:

function                                             old     new   delta
inet_addr                                             37       -     -37

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-15 01:42:21 +02:00
Denys Vlasenko
9e27fed6b9 udhcpc: rename server_addr to server_id, fix id comparison if it's not specified
Even though it is _meant to be_ an IP address, in the wild servers sometimes
give bogus server ids, like 1.1.1.1

function                                             old     new   delta
udhcpc_main                                         2551    2542      -9

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-15 01:15:44 +02:00
Denys Vlasenko
827b690fa7 udhcpc[6]: do not pass xid around, keep it in client_data.xid
function                                             old     new   delta
perform_release                                      105     169     +64
perform_d6_release                                   259     262      +3
init_d6_packet                                        84      85      +1
send_d6_discover                                     286     285      -1
send_d6_select                                       128     126      -2
send_d6_renew                                        176     174      -2
send_d6_info_request                                  65      63      -2
udhcpc_main                                         2555    2551      -4
send_select                                          130     122      -8
send_renew                                            99      91      -8
send_discover                                         89      81      -8
udhcpc6_main                                        2636    2602     -34
send_release                                          74       -     -74
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 3/9 up/down: 68/-143)           Total: -75 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-15 01:06:42 +02:00
Denys Vlasenko
40a327aeae udhcpc: send client-id option in DHCPDECLINE
function                                             old     new   delta
add_serverid_and_clientid_options                      -      46     +46
send_decline                                          88      83      -5
perform_release                                      200     159     -41
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/2 up/down: 46/-46)              Total: 0 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-15 00:34:04 +02:00
Denys Vlasenko
6f7b10cdab *: more --help tweaking
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-13 03:51:55 +02:00
Denys Vlasenko
6b6826f0b8 *: --help tweaks
function                                             old     new   delta
.rodata                                           103190  103189      -1
packed_usage                                       33590   33566     -24
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-25)             Total: -25 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-13 01:08:48 +02:00
Sergey Ponomarev
4d983dcdde httpd_post_upload.cgi: use mktemp to avoid $RANDOM
The $RANDOM variable may be disabled on ash compilation but we can safelly use mktemp instead.

Signed-off-by: Sergey Ponomarev <stokito@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-06 13:44:08 +02:00
Denys Vlasenko
274ce6cce1 udhcpc: revert deprecation message for -V
"-x vendor:VENDOR" will not be a trivial replacement of it:

(1) by default, we do send a vendor string ("udhcp BB_VER"),
will need code to preserve the default.

(2) -V '' currently disables vendor string. -x vendor:''
would not easily achieve that: it adds no option at all
(string options can't be empty), and default (1) would trigger.
To avoid that, we will need yet another hack to detect
-x vendor:'' and interpret that as "no vendor string at all".

IOW: removing -V is likely to increase code size, not decrease.

function                                             old     new   delta
udhcpc_main                                         2563    2555      -8
.rodata                                           103251  103198     -53
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-61)             Total: -61 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-05 17:06:35 +02:00
Denys Vlasenko
d3e1090308 tcp/udpsvd: robustify SIGCHLD handling
function                                             old     new   delta
if_verbose_print_connection_status                     -      40     +40
tcpudpsvd_main                                      1798    1794      -4
connection_status                                     31       -     -31
------------------------------------------------------------------------------
(add/remove: 1/1 grow/shrink: 0/1 up/down: 40/-35)              Total: 5 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-05 15:24:04 +02:00
Seth David Schoen
5a3d3b8055 udhcpd: don't hardcode treating .0 and .255 specially
Even following current Internet standards, it can be perfectly
legitimate to issue IPv4 addresses that end in .0 or .255 via DHCP --
this can happen whenever the network is larger than /8.  For example,
10.3.4.0 and 10.3.4.255 are legitimate host addresses in 10/8 or 10.3/16.
(We also want to be able to issue .0 addresses in smaller networks
following our proposed kernel patch and standards changes.)

This behavior is already fully controllable by the user, simply by
setting start_ip and end_ip correctly.  Users who don't want to issue
.0 or .255 should set start_ip greater than .0 or end_ip less than .255
and udhcpd will already respect these bounds.  (This is also the case
for other DHCP servers -- the recommended example configurations will
default to a lower bound starting with .1 or some other value, which is
typically appropriate, but the user is still allowed to change this to
.0 -- or to a range that overlaps a .0 or .255 address -- if so desired.)

Signed-off-by: Seth David Schoen <schoen@loyalty.org>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-03 20:30:13 +02:00
Paul Spooren
327b9f8848 nslookup: mention QUERY_TYPE SRV
SRV lookups are supported since "6b4960155 nslookup: implement support
for SRV records" and should therefore be mentioned as a possible
QUERY_TYPE in the help message.

Signed-off-by: Paul Spooren <mail@aparcar.org>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-03 16:23:52 +02:00
Denys Vlasenko
ecaf8e8d08 udhcpc[6]: on SIGUSR1, do not go from rebind to renew state
function                                             old     new   delta
udhcpc6_main                                        2628    2636      +8
udhcpc_main                                         2556    2563      +7
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 15/0)               Total: 15 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-03 16:22:35 +02:00
Denys Vlasenko
f6def87a2e udhcpc: code shrink, rename functions, no logic changes
function                                             old     new   delta
d4_run_script                                          -     739    +739
d4_recv_raw_packet                                     -     484    +484
d4_run_script_deconfig                                 -      12     +12
perform_release                                      207     200      -7
udhcpc_main                                         2598    2556     -42
udhcp_recv_raw_packet                                484       -    -484
udhcp_run_script                                     739       -    -739
------------------------------------------------------------------------------
(add/remove: 3/2 grow/shrink: 0/2 up/down: 1235/-1272)        Total: -37 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-03 16:14:04 +02:00
Denys Vlasenko
0d15d5bcca udhcp: shrink arpping()
function                                             old     new   delta
.rodata                                           103249  103246      -3
arpping                                              437     420     -17
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-20)             Total: -20 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-03 11:32:40 +02:00
Denys Vlasenko
774020c224 udhcp: convert log1s() macro to function
function                                             old     new   delta
log1s                                                  -      15     +15
udhcp_recv_kernel_packet                             134     125      -9
d6_recv_kernel_packet                                118     109      -9
change_listen_mode                                   280     271      -9
send_packet                                          162     141     -21
udhcpc_main                                         2625    2598     -27
udhcpc6_main                                        2655    2628     -27
d6_recv_raw_packet                                   255     216     -39
udhcp_recv_raw_packet                                562     484     -78
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/8 up/down: 15/-219)          Total: -204 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-03 11:12:20 +02:00
Denys Vlasenko
1c7253726f udhcpc[6]: when renewing, send 1 packet (not 3), on failure go back to BOUND
This restores old behavior where we slept for 1/2 of lease, then tried renewing,
thel slept for 1/4 and tried again, etc. But now we will NOT be listening to
all packets for 1/2 of lease time, processing (rejecting) everyone else's
DHCP traffic.
We'll go back to bound state, where we have no listening socket at all.

function                                             old     new   delta
udhcpc6_main                                        2600    2655     +55
udhcpc_main                                         2608    2625     +17
.rodata                                           103250  103249      -1
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/1 up/down: 72/-1)              Total: 71 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-03 10:22:28 +02:00
Denys Vlasenko
01daecca1d udhcpc[6]: remove superfluous "created raw socket" log message
function                                             old     new   delta
change_listen_mode                                   299     280     -19
.rodata                                           103272  103250     -22
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-41)             Total: -41 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-02 20:23:43 +02:00
Denys Vlasenko
4bbc391c7f udhcpc: improve logs - show offer as it is received
function                                             old     new   delta
udhcpc_main                                         2566    2608     +42
.rodata                                           103248  103272     +24
udhcp_recv_raw_packet                                559     562      +3
d6_recv_raw_packet                                   254     255      +1
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 4/0 up/down: 70/0)               Total: 70 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-02 19:51:52 +02:00
Denys Vlasenko
0ae53451cf udhcpc[6]: close listening socket more eagerly (e.g. across script runs)
function                                             old     new   delta
udhcpc6_main                                        2571    2600     +29
udhcpc_main                                         2588    2566     -22
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 29/-22)              Total: 7 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-02 17:53:09 +02:00
Denys Vlasenko
949e9621d1 udhcpc: get rid of client_data.fqdn field
function                                             old     new   delta
attach_option                                        253     276     +23
udhcpc_main                                         2582    2588      +6
udhcpc6_main                                        2579    2571      -8
add_client_options                                   175     158     -17
udhcp_insert_new_option                              169     138     -31
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/3 up/down: 29/-56)            Total: -27 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-02 15:51:50 +02:00
Denys Vlasenko
698cdef538 udhcpc: remove deprecated -H/-h HOSTNAME options (9 years), deprecate -V VENDOR
function                                             old     new   delta
udhcpc_main                                         2563    2582     +19
dhcp_option_strings                                  294     301      +7
dhcp_optflags                                         80      82      +2
.rodata                                           103250  103248      -2
udhcpc_longopts                                      252     241     -11
add_client_options                                   209     175     -34
alloc_dhcp_option                                     59       -     -59
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 3/3 up/down: 28/-106)           Total: -78 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-02 15:07:46 +02:00
Denys Vlasenko
265fcddd08 udhcpc: include client-id option in DECLINEs, even if it's a custom -x 61:HEX option
client_data.vendorclass, .hostname and .fqdn probably need the same treatment:
just insert them into the list of -x opts, get rid of

        if (client_data.vendorclass)
                udhcp_add_binary_option(packet, client_data.vendorclass);
        if (client_data.hostname)
                udhcp_add_binary_option(packet, client_data.hostname);
        if (client_data.fqdn)
                udhcp_add_binary_option(packet, client_data.fqdn);

function                                             old     new   delta
udhcp_insert_new_option                                -     166    +166
perform_release                                      171     207     +36
perform_d6_release                                   227     259     +32
udhcpc6_main                                        2558    2580     +22
init_d6_packet                                       103      84     -19
udhcpc_main                                         2585    2564     -21
attach_option                                        397     253    -144
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 3/3 up/down: 256/-184)           Total: 72 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-02 14:07:26 +02:00
Denys Vlasenko
687f41f10b udhcpc[6]: fix "untangle timeout and remaining lease" fallout
As reported in bug 13776, before this fix the renew never times out.

function                                             old     new   delta
udhcpc_main                                         2541    2585     +44
udhcpc6_main                                        2567    2558      -9
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 44/-9)              Total: 35 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-01 00:19:03 +02:00
Denys Vlasenko
ac4a0b3be7 httpd: add comment about faster rejection of denied IPs
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-05-05 15:31:18 +02:00
Denys Vlasenko
ad16f89547 httpd: if no request was given at all, close the socket without generating error page
For one, an attacker can try to overload us by just opening and immediately
closing tons of connections - reduce our work to the minimum for this case.

function                                             old     new   delta
handle_incoming_and_exit                            2172    2200     +28
.rodata                                           103225  103246     +21
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 49/0)               Total: 49 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-05-05 15:00:09 +02:00
Denys Vlasenko
91a58b207e httpd: no need to strcpy() when we only need to copy one byte
function                                             old     new   delta
handle_incoming_and_exit                            2161    2172     +11

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-05-05 09:40:59 +02:00
Denys Vlasenko
5b34a5594c httpd: avoid extra stat() calls for "GET /dirname/" case
function                                             old     new   delta
parse_conf                                          1325    1332      +7
handle_incoming_and_exit                            2173    2161     -12
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 7/-12)              Total: -5 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-05-04 21:25:16 +02:00
Denys Vlasenko
1c69817885 httpd: avoid one stat() call for "GET /dirname" case
function                                             old     new   delta
handle_incoming_and_exit                            2172    2173      +1

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-05-04 21:11:03 +02:00
Denys Vlasenko
32a8258be7 httpd: support HEAD requests even in !CGI config
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-05-04 20:15:24 +02:00
Denys Vlasenko
ff4d898fe6 httpd: move proxy check before URL duplication and request type check
This makes proxy work for any type of requests.

function                                             old     new   delta
handle_incoming_and_exit                            2240    2172     -68

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-05-04 19:52:41 +02:00
Alexander Sack
36e932abdf httpd: cgi-bin support for DELETE, PUT, OPTIONS etc methods
function                                             old     new   delta
handle_incoming_and_exit                            2217    2240     +23
static.request_POST                                    -       5      +5
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 1/0 up/down: 28/0)               Total: 28 bytes

Signed-off-by: Alexander Sack <asac@pantacor.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-05-04 19:20:50 +02:00
Denys Vlasenko
e6007c4911 udhcpc[6]: fold perform_renew() into its only caller
function                                             old     new   delta
udhcpc_main                                         2550    2541      -9
udhcpc6_main                                        2576    2567      -9
change_listen_mode                                   321     299     -22
.rodata                                           103294  103225     -69
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/4 up/down: 0/-109)           Total: -109 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-05-01 13:48:50 +02:00
Denys Vlasenko
a1a77ad5ea udhcpc[6]: untangle "timeout" and "remaining lease"; reduce min lease to 30 seconds
This allows to fix a problem that we wait for renew replies
for up to half the lease (!!!) if they never come.

Make it so that lease of 60 seconds is not "rounded up" to 120 seconds -
set lower "sanity limit" to 30 seconds.

After 3 failed renew attempts, switch to rebind.

After this change, we can have more flexible choice of when to do
the first renew - does not need to be equal to lease / 2.

function                                             old     new   delta
udhcpc6_main                                        2568    2576      +8
.rodata                                           103339  103294     -45
udhcpc_main                                         2609    2550     -59
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/2 up/down: 8/-104)            Total: -96 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-05-01 12:23:25 +02:00
Jeremy Lin
e71ea6c1f8 wget: allow HTTP 307/308 redirects
This resolves failures like

    wget: server returned error: HTTP/1.1 307 Temporary Redirect

Signed-off-by: Jeremy Lin <jeremy.lin@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-30 01:42:24 +02:00
Denys Vlasenko
b35eef5383 tls: code shrink in curve 25519
function                                             old     new   delta
curve25519                                           832     849     +17
curve_x25519_compute_pubkey_and_premaster             74      71      -3
static.basepoint9                                     32       -     -32
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 1/1 up/down: 17/-35)            Total: -18 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-28 12:19:24 +02:00
Denys Vlasenko
81f9a0035b tls: tweak sp_256_ecc_gen_k_10 for smaller code
function                                             old     new   delta
curve_P256_compute_pubkey_and_premaster              194     191      -3

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-27 18:48:43 +02:00
Denys Vlasenko
840ae69615 tls: shrink sp_256_mod_mul_norm_10 more
function                                             old     new   delta
sp_256_mod_mul_norm_10                              1439    1305    -134

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-27 13:32:19 +02:00
Denys Vlasenko
646e856294 tls: shrink sp_256_mod_mul_norm_10
function                                             old     new   delta
sp_256_mod_mul_norm_10                              1439    1405     -34

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-27 13:09:44 +02:00
Denys Vlasenko
48a18d15df tls: shrink p256_base more
function                                             old     new   delta
static.p256_base_bin                                   -      64     +64
sp_256_point_from_bin2x32                              -      62     +62
static.base_y                                         40       -     -40
static.base_x                                         40       -     -40
curve_P256_compute_pubkey_and_premaster              291     194     -97
------------------------------------------------------------------------------
(add/remove: 2/2 grow/shrink: 0/1 up/down: 126/-177)          Total: -51 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-27 12:24:21 +02:00
Denys Vlasenko
39a3ef51b5 tls: shrink p256_base
function                                             old     new   delta
curve_P256_compute_pubkey_and_premaster              196     291     +95
static.base_y                                          -      40     +40
static.base_x                                          -      40     +40
p256_base                                            244       -    -244
------------------------------------------------------------------------------
(add/remove: 2/1 grow/shrink: 1/0 up/down: 175/-244)          Total: -69 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-27 01:32:05 +02:00
Denys Vlasenko
a2bc52dd44 tls: reorder P256 functions to make more sense
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-27 01:21:26 +02:00
Denys Vlasenko
e52e43c72f tls: whitespace fixes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-27 00:40:40 +02:00
Denys Vlasenko
d728a30c21 tls: add a patch with optimization which _should_ give better code
...but does not.

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-26 23:09:20 +02:00
Denys Vlasenko
9a40be433d tls: get rid of constant-time add/sub operations
function                                             old     new   delta
sp_256_sub_10                                          -      22     +22
static.sp_256_mont_reduce_10                         176     178      +2
sp_256_mod_mul_norm_10                              1440    1439      -1
sp_256_proj_point_dbl_10                             453     446      -7
sp_256_ecc_mulmod_10                                1229    1216     -13
static.sp_256_mont_sub_10                             52      30     -22
static.sp_256_cond_sub_10                             32       -     -32
------------------------------------------------------------------------------
(add/remove: 1/1 grow/shrink: 1/4 up/down: 24/-75)            Total: -51 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-26 21:58:04 +02:00
Denys Vlasenko
120401249a tls: fix whitespace in P256 code
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-26 20:24:34 +02:00
Denys Vlasenko
93b886f54b tls: shrink sp_256_mont_inv_10
function                                             old     new   delta
sp_256_ecc_mulmod_10                                1237    1251     +14
p256_mod_2                                            32       -     -32
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 1/0 up/down: 14/-32)            Total: -18 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-26 18:05:53 +02:00
Denys Vlasenko
6381f3d4f6 tls: stop passing temporary buffer address in P256 code
function                                             old     new   delta
sp_256_proj_point_dbl_10                             435     453     +18
sp_256_ecc_mulmod_10                                1300    1237     -63
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 18/-63)            Total: -45 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-26 17:41:43 +02:00
Denys Vlasenko
772e18775e tls: shrink sp_256_proj_point_dbl_10
function                                             old     new   delta
sp_256_ecc_mulmod_10                                1329    1300     -29

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-26 17:25:27 +02:00
Denys Vlasenko
b3b1713a58 tls: in P256 replace constant-time compares with usual ones
function                                             old     new   delta
sp_256_cmp_10                                          -      24     +24
sp_256_ecc_mulmod_10                                1332    1329      -3
sp_256_cmp_equal_10                                   30       -     -30
static.sp_256_cmp_10                                  43       -     -43
------------------------------------------------------------------------------
(add/remove: 1/2 grow/shrink: 0/1 up/down: 24/-76)            Total: -52 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-26 16:53:53 +02:00
Denys Vlasenko
4d3a5c135c tls: simplify sp_256_proj_point_dbl_10
function                                             old     new   delta
sp_256_proj_point_dbl_10                             490     435     -55

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-26 15:21:38 +02:00
Denys Vlasenko
03ab2a90bb tls: simplify array manipulations in sp_256_ecc_mulmod_10
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-26 14:55:46 +02:00
Denys Vlasenko
166363f47d tls: get rid of address obfuscation trick in P256
function                                             old     new   delta
addr_mask                                              8       -      -8
sp_256_ecc_mulmod_10                                1363    1330     -33
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 0/1 up/down: 0/-41)             Total: -41 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-26 14:40:21 +02:00
Denys Vlasenko
074b33bf16 tls: simplify sp_256_ecc_gen_k_10, cosmetic changes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-26 14:33:38 +02:00
Denys Vlasenko
6b69ab68b4 tls: make x25519 key generation code more similar to P256
function                                             old     new   delta
curve_x25519_compute_pubkey_and_premaster              -      74     +74
tls_handshake                                       2146    2072     -74
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/1 up/down: 74/-74)              Total: 0 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-26 13:46:36 +02:00
Denys Vlasenko
f18a1fd6f3 tls: implement secp256r1 elliptic curve (aka P256)
function                                             old     new   delta
sp_256_mod_mul_norm_10                                 -    1439   +1439
sp_256_ecc_mulmod_10                                   -    1363   +1363
sp_256_proj_point_dbl_10                               -     490    +490
p256_base                                              -     244    +244
static.sp_256_mont_sqr_10                              -     234    +234
static.sp_256_mont_mul_10                              -     214    +214
curve_P256_compute_pubkey_and_premaster                -     197    +197
static.sp_256_mont_reduce_10                           -     176    +176
static.sp_256_from_bin                                 -     149    +149
sp_256_to_bin                                          -     148    +148
tls_handshake                                       2046    2146    +100
static.sp_256_mul_add_10                               -      82     +82
.rodata                                           103275  103336     +61
static.sp_256_mont_sub_10                              -      52     +52
static.sp_256_mont_dbl_10                              -      52     +52
static.sp_256_cmp_10                                   -      43     +43
p256_mod                                               -      40     +40
static.sp_256_cond_sub_10                              -      32     +32
p256_mod_2                                             -      32     +32
sp_256_norm_10                                         -      31     +31
sp_256_cmp_equal_10                                    -      30     +30
sp_256_add_10                                          -      22     +22
addr_mask                                              -       8      +8
------------------------------------------------------------------------------
(add/remove: 22/0 grow/shrink: 2/0 up/down: 5239/0)          Total: 5239 bytes
   text	   data	    bss	    dec	    hex	filename
1018192	    559	   5020	1023771	  f9f1b	busybox_old
1023431	    559	   5020	1029010	  fb392	busybox_unstripped

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-26 13:30:09 +02:00
Denys Vlasenko
121b02d6b6 inetd: deinline machtime() - gcc gets it wrong
function                                             old     new   delta
machtime                                               -      24     +24
machtime_stream                                       45      29     -16
machtime_dg                                          114      97     -17
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/2 up/down: 24/-33)             Total: -9 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-24 12:06:03 +02:00
Denys Vlasenko
6ca36077cc tls: "server did not provide EC key" is fatal
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-24 11:56:49 +02:00
Denys Vlasenko
d005c9f4c7 libbb.h: inline byteswaps
function                                             old     new   delta
recv_and_process_peer_pkt                           2173    2245     +72
machtime_dg                                           97     114     +17
machtime_stream                                       29      45     +16
fmt_time_bernstein_25                                132     139      +7
aesgcm_GHASH                                         183     184      +1
dumpleases_main                                      519     516      -3
__bswap_32                                             3       -      -3
udhcp_run_script                                     743     739      -4
tls_xread_record                                     634     630      -4
select_lease_time                                     56      52      -4
rdate_main                                           260     256      -4
get_prefix                                           327     323      -4
udhcp_listen_socket                                  185     180      -5
sha1_process_block64                                 361     356      -5
sendping6                                             81      76      -5
sendping4                                            107     102      -5
read32                                                27      22      -5
ll_proto_a2n                                         112     107      -5
bb_lookup_port                                       102      97      -5
udhcpc_main                                         2615    2609      -6
tftpd_main                                           579     573      -6
str2sockaddr                                         558     552      -6
GMULT                                                136     130      -6
sha1_end                                              73      66      -7
ntpd_main                                           1361    1354      -7
ntohl                                                  7       -      -7
inet_addr_match                                       93      86      -7
htonl                                                  7       -      -7
do_iplink                                           1259    1252      -7
do_add_or_delete                                    1138    1131      -7
create_and_bind_or_die                               117     110      -7
bind_for_passive_mode                                124     117      -7
xconnect_ftpdata                                      98      90      -8
rpm_getint                                           118     110      -8
read_leases                                          304     296      -8
read_config                                          216     208      -8
udhcp_send_kernel_packet                             336     327      -9
udhcp_recv_kernel_packet                             143     134      -9
sha256_process_block64                               451     442      -9
d6_send_kernel_packet_from_client_data_ifindex       275     266      -9
write_leases                                         215     205     -10
wget_main                                           2518    2508     -10
udhcpd_main                                         1528    1518     -10
tftp_protocol                                       2019    2009     -10
ftpd_main                                           2159    2149     -10
des_crypt                                           1318    1308     -10
send_ACK                                             138     127     -11
ipaddr_modify                                       1618    1607     -11
udhcp_str2optset                                     650     638     -12
init_d6_packet                                       115     103     -12
xwrite_encrypted                                     512     499     -13
tls_handshake                                       2060    2047     -13
pscan_main                                           607     594     -13
perform_d6_release                                   240     227     -13
ip_port_str                                          135     122     -13
handle_incoming_and_exit                            2230    2217     -13
INET_setroute                                        751     737     -14
traceroute_init                                     1153    1137     -16
nc_main                                             1055    1039     -16
udhcp_init_header                                     92      75     -17
volume_id_probe_hfs_hfsplus                          512     494     -18
send_offer                                           455     435     -20
do_lzo_decompress                                    507     487     -20
add_client_options                                   229     209     -20
ipcalc_main                                          554     533     -21
dhcprelay_main                                       966     943     -23
change_listen_mode                                   345     321     -24
send_packet                                          188     162     -26
static.xmalloc_optname_optval                        709     681     -28
rpm_gettags                                          447     419     -28
machtime                                              28       -     -28
catcher                                              299     270     -29
sfp_to_d                                              78      48     -30
reread_config_file                                   917     886     -31
lfp_to_d                                              84      51     -33
udhcp_recv_raw_packet                                594     559     -35
nbdclient_main                                      1182    1145     -37
d_to_lfp                                             137     100     -37
lzo_compress                                         567     529     -38
d6_recv_raw_packet                                   299     254     -45
d_to_sfp                                             133      85     -48
d6_send_raw_packet_from_client_data_ifindex          427     379     -48
common_ping_main                                    1935    1887     -48
udhcp_send_raw_packet                                467     416     -51
zcip_main                                           1219    1160     -59
udhcpc6_main                                        2636    2568     -68
do_lzo_compress                                      327     258     -69
send_arp_request                                     201     129     -72
common_traceroute_main                              1699    1621     -78
arpping                                              523     437     -86
arping_main                                         1597    1481    -116
print_tunnel                                         678     550    -128
dnsd_main                                           1304    1164    -140
parse_args                                          1370    1169    -201
------------------------------------------------------------------------------
(add/remove: 0/6 grow/shrink: 5/85 up/down: 113/-2246)      Total: -2133 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-24 11:54:50 +02:00
Denys Vlasenko
972e29881a tls: make constant basepoint9[32] array 8-byte aligned
Has no effect on binary size, but likely to be more efficient.

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-22 10:25:04 +02:00
Denys Vlasenko
20b224046c tls: further reduce register pressure in i386 assembly
function                                             old     new   delta
pstm_montgomery_reduce                               435     431      -4

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-20 19:03:55 +02:00
Denys Vlasenko
21367b2839 tls: reduce register pressure in i386 assembly (helps Android to compile)
function                                             old     new   delta
pstm_montgomery_reduce                               440     435      -5

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-20 19:01:43 +02:00
Denys Vlasenko
fe2d8065e3 fix gcc-11.0 warnings
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-14 17:52:18 +02:00
Denys Vlasenko
1195782d79 ntpd: code shrink (force not-inlining, stop returning structs)
function                                             old     new   delta
d_to_sfp                                               -     133    +133
lfp_to_d                                               -      84     +84
sfp_to_d                                               -      78     +78
d_to_lfp                                             141     137      -4
.rodata                                           103182  103174      -8
recv_and_process_peer_pkt                           2380    2173    -207
recv_and_process_client_pkt                          706     493    -213
------------------------------------------------------------------------------
(add/remove: 3/0 grow/shrink: 0/4 up/down: 295/-432)         Total: -137 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-03-26 12:02:08 +01:00
Denys Vlasenko
c2bd0b6806 timeout,top,watch,ping: parse NN.N fractional duration in locales with other separators
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-03-23 13:50:02 +01:00
Denys Vlasenko
fe78d70ec6 udhcpc: ignore zero-length DHCP options, take 2
advance the optionptr by two bytes, not one

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-03-16 11:42:56 +01:00
Russell Senior
1c461df70a udhcpc: ignore zero-length DHCP options
Discovered that the DHCP server on a TrendNet router (unknown model)
provides a zero-length option 12 (Host Name) in the DHCP ACK message. This
has the effect of causing udhcpc to drop the rest of the options, including
option 51 (IP Address Lease Time), 3 (Router), and 6 (Domain Name Server),
most importantly leaving the OpenWrt device with no default gateway.

The TrendNet behavior violates RFC 2132, which in Section 3.14 declares that
option 12 has a minimum length of 1 octet. It is perhaps not a cosmic coincidence
that I found this behavior on Pi Day.

This patch allows zero length options without bailing out, by simply skipping them.

function                                             old     new   delta
udhcp_scan_options                                   183     172     -11

Signed-off-by: Russell Senior <russell@personaltelco.net>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-03-16 11:40:19 +01:00
Sergey Ponomarev
b6e6c83ab3 wget: new option FEATURE_WGET_FTP to enable/disable FTP
Introduce a separate option FTPS_SUPPORTED instead of not obvious ENABLE_FEATURE_WGET_HTTPS.

function                                             old     new   delta
P_FTP                                                  4       -      -4
P_FTPS                                                 5       -      -5
reset_beg_range_to_zero                               41       -     -41
parse_url                                            431     366     -65
parse_pasv_epsv                                      154       -    -154
.rodata                                           115566  115408    -158
ftpcmd                                               204       -    -204
spawn_ssl_client                                     291       -    -291
wget_main                                           2998    2664    -334
------------------------------------------------------------------------------
(add/remove: 0/7 grow/shrink: 0/3 up/down: 0/-1256)         Total: -1256 bytes

Signed-off-by: Sergey Ponomarev <stokito@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-03-09 17:45:10 +01:00
Denys Vlasenko
2d48d9b1cc ntpd: tweak comments
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-03-02 19:54:09 +01:00
Denys Vlasenko
2d6c175d9b ntpd: decrease INITIAL_SAMPLES from 4 to 3
This reduces initial traffic to NTP servers when a lot of devices boot at once.

Log inspection tells me we agressively burst-poll servers about 5 times
at startup, even though we usually already update clock after second replies.
INITIAL_SAMPLES can probably be even lower, e.g. 2, but let's be conservative
when changing this stuff.

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-03-02 12:21:12 +01:00