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
Denys Vlasenko
9fa7d7d97d
dnsd: check that we don't read past packet
...
function old new delta
dnsd_main 1296 1304 +8
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-02-22 15:36:07 +01:00
Denys Vlasenko
a4959eef71
udhcp: reuse strings
...
text data bss dec hex filename
1019916 559 5020 1025495 fa5d7 busybox_old
1019906 559 5020 1025485 fa5cd busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-02-21 16:32:07 +01:00
Denys Vlasenko
855aeacfba
ntpd: log responses to clients at log level 3
...
function old new delta
recv_and_process_client_pkt 670 706 +36
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-02-21 09:47:34 +01:00
Denys Vlasenko
2620d38714
ntpd: without INITIAL_FREQ_ESTIMATION code, state variable is not needed too
...
function old new delta
update_local_clock 917 872 -45
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-02-21 09:13:05 +01:00
Denys Vlasenko
423c4c25d8
ntpd: remove unused USING_INITIAL_FREQ_ESTIMATION code
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-02-21 09:05:48 +01:00