Commit Graph
100 Commits
Author SHA1 Message Date
Denys Vlasenko 1f60d88cf6 *: more --help tweaks
function                                             old     new   delta
packed_usage                                       33552   33541     -11

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-15 10:00: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 e2b9215868 *: --help tweaks
function                                             old     new   delta
packed_usage                                       33589   33552     -37

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-14 20:47:20 +02:00
Denys Vlasenko 643b308029 base32/64: accept -i "skip bad chars" option (currently in effect unconditionally)
function                                             old     new   delta
.rodata                                           103189  103190      +1

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-13 23:58:17 +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 1849285a20 *: more --help tweaks, mostly expanding ts --help
function                                             old     new   delta
packed_usage                                       33554   33596     +42

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-13 03:12:09 +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
Denys Vlasenko aece2c5f0f bc: tweak overflow detection in a^b
function                                             old     new   delta
zbc_num_p                                            506     510      +4

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-12 14:03:24 +02:00
Denys Vlasenko e36c39a46d bc: code shrink: combine init() and copy() where we can
function                                             old     new   delta
bc_num_init_and_copy                                   -      27     +27
zxc_program_popResultAndCopyToVar                    495     483     -12
zxc_num_printNum                                     518     506     -12
zbc_num_p                                            518     506     -12
zxc_program_assign                                   357     341     -16
zbc_num_m                                            298     267     -31
zxc_vm_process                                      6498    6412     -86
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/6 up/down: 27/-169)          Total: -142 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-12 12:35:15 +02:00
Denys Vlasenko e5958f7dda bc: fix for mul overflow in scale calculation in a^b
function                                             old     new   delta
zbc_num_p                                            516     518      +2

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-12 12:19:20 +02:00
Denys Vlasenko 4c4b02c290 ash: save Ron's patch from oblivion
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-06 13:01:25 +02:00
Denys Vlasenko 457825f77a shells: do not allow bare "read" in non-bash compat configs
On Sat, Feb 9, 2019 Cristian Ionescu-Idbohrn wrote:
    > In my case (at work), I have to watch and prevent people from doing
    > unportable things.  For me, that's a burden.

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-06 12:08:43 +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 5a72b0cd74 runsv: code shrink: use single handler function for SIGTERM and SIGCHLD
function                                             old     new   delta
s_chld_term                                            -      36     +36
runsv_main                                          1677    1662     -15
s_child                                               22       -     -22
s_term                                                29       -     -29
------------------------------------------------------------------------------
(add/remove: 1/2 grow/shrink: 0/1 up/down: 36/-66)            Total: -30 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-05 16:36:21 +02:00
Denys Vlasenko 5dadd497ff runsv: robustify signal handling - SIGTERM to child between vfork and exec could mess things up
While at it, rename bb_signals_recursive_norestart() to bb_signals_norestart():
"recursive" was implying we are setting SA_NODEFER allowing signal handler
to be entered recursively, but we do not do that.

function                                             old     new   delta
bb_signals_norestart                                   -      70     +70
startservice                                         380     394     +14
bb_signals_recursive_norestart                        70       -     -70
------------------------------------------------------------------------------
(add/remove: 1/1 grow/shrink: 1/0 up/down: 84/-70)             Total: 14 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-05 16:20:05 +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
Denys Vlasenko ac444861b0 svlogd: if processor's stdin can not be opened, do not try ad infinitum
function                                             old     new   delta
processorstart                                       426     423      -3

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-05 14:51:53 +02:00
Denys Vlasenko 08ea7be73b ls: trim --help text
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-05 10:36:17 +02:00
Denys Vlasenko df0383c624 libbb: correct the name of is_TERM_dumb()
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-05 08:33:03 +02:00
Denys Vlasenko b1a2762ecf cpio: fix "cpio -d -p A/B/C"
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-03 20:26:30 +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 2f1d13d56a examples/udhcp/udhcpd.conf: update
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-03 12:07:56 +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 f193aeac1f tail: do not lose the tail of old file if new file (-F) is detected
function                                             old     new   delta
tail_main                                           1619    1645     +26
.rodata                                           103246  103250      +4
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 30/0)               Total: 30 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-02 05:17:44 +02:00
Denys Vlasenko e0ea125ce2 tail: fix typo in variable name
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-02 04:11:40 +02:00
Denys Vlasenko b9258b86a7 head,tail: trim --help text
function                                             old     new   delta
packed_usage                                       33598   33560     -38

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-02 04:01:10 +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
Denys Vlasenko 147ac93a06 decompress_gunzip: simplify ERR_RET bit clearing
My gcc is in fact clever enough to do it itself, but let's be explicit

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-05-03 14:58:32 +02:00
Denys Vlasenko 74e1f321c1 vi: trivial code shrink
function                                             old     new   delta
get_input_line                                       178     176      -2

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-05-01 14:00:09 +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
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 d9136efd7a gcc-version.sh: Cygwin fix
On Cygwin, "echo __GNUC__ __GNUC_MINOR__ | gcc -E -xc -" can print
extra empty trailing line.

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-18 13:22:26 +02:00
Denys Vlasenko b65e7f629e vi: move undo_queue_state in globals to other byte-sized members
function                                             old     new   delta
vi_main                                              278     275      -3
undo_queue_commit                                     62      56      -6
undo_push                                            374     362     -12
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/3 up/down: 0/-21)             Total: -21 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-15 23:18:40 +02:00
Denys Vlasenko c0943ac451 platform.h: fix for Bionic >= 21 not having wait3()
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-14 22:14:36 +02:00
Denys Vlasenko cca4c9f4c0 unzip: add -t
function                                             old     new   delta
packed_usage                                       33584   33598     +14
.rodata                                           103218  103219      +1
unzip_main                                          2665    2656      -9
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/1 up/down: 15/-9)               Total: 6 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-14 21:34:00 +02:00
Denys Vlasenko afc766fc12 unzip: fix for .zip archives with >4GB file
function                                             old     new   delta
unzip_main                                          2644    2665     +21
input_tab                                            926     927      +1
bb_banner                                             46      47      +1
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/0 up/down: 23/0)               Total: 23 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-14 21:15:25 +02:00
Denys Vlasenko 1a45b2ccea fix "warning array subscript has type 'char'"
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-14 19:12:43 +02:00
Denys Vlasenko eb1b2902b8 Makefile.flags: add a test for -lrt availability
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-14 19:01:53 +02:00
Denys Vlasenko 7c813fbabf echo: fix !ENABLE_FEATURE_FANCY_ECHO build
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-14 18:55:30 +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 ba9f9c2d2c *: --help text tweaks
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-14 15:15:45 +02:00
Denys Vlasenko 93f1255af2 touch: shorten --help text
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-14 14:52:09 +02:00
Denys Vlasenko d156bcf71e touch: code shrink
function                                             old     new   delta
touch_main                                           424     421      -3

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-14 14:46:35 +02:00
Denys Vlasenko fe9507f8c3 touch: fix -am
function                                             old     new   delta
touch_main                                           414     424     +10

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-14 01:01:20 +02:00
Denys Vlasenko f0c0c56e9b hush: beautify ^D handling to match ash / bash
function                                             old     new   delta
fgetc_interactive                                    227     244     +17

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-13 16:42:17 +02:00
Denys Vlasenko 9c210f0efb touch: fix previous commit
function                                             old     new   delta
touch_main                                           423     414      -9

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-13 15:49:06 +02:00
Denys Vlasenko 6b6ff80299 touch: make FEATURE_TOUCH_NODEREF unconditional
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-13 15:45:59 +02:00
Denys Vlasenko 3630054504 touch: code shrink
function                                             old     new   delta
touch_main                                           450     423     -27

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-13 15:41:57 +02:00
Denys Vlasenko 6f63a2ba0e touch: code shrink
function                                             old     new   delta
.rodata                                           103215  103218      +3
touch_main                                           460     450     -10
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 3/-10)              Total: -7 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-13 15:11:47 +02:00
Denys Vlasenko 79c92dbd70 touch: switch to using utimensat() and futimens()
This patch changes the functions used to update timestamps in touch.

Before, utimes() and lutimes() were used, which had certain
disadvantages.
They are unable to handle nanosecond timestamps, and implementations of
certain features like -a and -m require running stat() in a loop.

Almost all implementations of utimes() and lutimes() are wrappers for
utimensat(), this is the case for glibc, ulibc and musl libc.

function                                             old     new   delta
__futimens_time64                                      -      24     +24
__lutimes_time64                                      80       -     -80
touch_main                                           539     456     -83
------------------------------------------------------------------------------
(add/remove: 2/2 grow/shrink: 0/1 up/down: 24/-163)          Total: -139 bytes

Signed-off-by: urmum-69 <urmum69@snopyta.org>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-13 11:31:46 +02:00
Denys Vlasenko 1a181264d5 touch: unbreak -h
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-12 20:12:56 +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 14ed4ec8a4 resume: write offset in /sys/power/resume_offset
Doing this the kernel will hibernate and resume successfully from a swap file.
Stop writing offset to /sys/power/resume, as this is not a parameter
the kernel takes from this input. (Change added by Sven Mueller)

function                                             old     new   delta
resume_main                                          522     561     +39
.rodata                                           103175  103182      +7
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 46/0)               Total: 46 bytes

Signed-off-by: Jordi Pujol Palomer <jordipujolp@gmail.com>
Signed-off-by: Sven Mueller <sven.mueller72+busybox@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-03-20 14:01:04 +01:00