oweals/busybox.git
6 years agocp: placate gcc8
Denys Vlasenko [Wed, 1 Aug 2018 16:29:41 +0000 (18:29 +0200)]
cp: placate gcc8

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agoAdd chroot support to chpasswd
Jon Kolb [Wed, 1 Aug 2018 01:30:24 +0000 (21:30 -0400)]
Add chroot support to chpasswd

function                                             old     new   delta
.rodata                                           170689  170724     +35
packed_usage                                       32850   32876     +26
chpasswd_main                                        411     436     +25
chpasswd_longopts                                     34      41      +7
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 4/0 up/down: 93/0)               Total: 93 bytes

Signed-off-by: Jon Kolb <kolbyjack@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agoudhcpc: add a cooment about sanitizing DHCP_DOMAIN_NAME, no code changes
Denys Vlasenko [Wed, 1 Aug 2018 11:36:36 +0000 (13:36 +0200)]
udhcpc: add a cooment about sanitizing DHCP_DOMAIN_NAME, no code changes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agoudhcpc: do in fact not allow hostname components which start with dash
Denys Vlasenko [Wed, 1 Aug 2018 11:16:05 +0000 (13:16 +0200)]
udhcpc: do in fact not allow hostname components which start with dash

function                                             old     new   delta
xmalloc_optname_optval                               879     893     +14

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agosendmail: use on-stack buffer for AUTH PLAIN
Denys Vlasenko [Tue, 31 Jul 2018 16:07:20 +0000 (18:07 +0200)]
sendmail: use on-stack buffer for AUTH PLAIN

function                                             old     new   delta
sendmail_main                                       1335    1307     -28

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agosendmail: code shrink 2
Denys Vlasenko [Tue, 31 Jul 2018 15:36:31 +0000 (17:36 +0200)]
sendmail: code shrink 2

function                                             old     new   delta
sendmail_main                                       1366    1335     -31

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agosendfile: code shrink
Denys Vlasenko [Tue, 31 Jul 2018 15:30:08 +0000 (17:30 +0200)]
sendfile: code shrink

function                                             old     new   delta
printstr_base64                                        -      22     +22
printbuf_base64                                        -      11     +11
printfile_base64                                       -       9      +9
makemime_main                                        305     294     -11
encode_n_base64                                      236     223     -13
sendmail_main                                       1380    1366     -14
encode_base64                                         36       -     -36
------------------------------------------------------------------------------
(add/remove: 3/1 grow/shrink: 0/3 up/down: 42/-74)            Total: -32 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agosendmail: support AUTH PLAIN in addition to AUTH LOGIN
Raffaello D. Di Napoli [Tue, 26 Jun 2018 23:17:45 +0000 (19:17 -0400)]
sendmail: support AUTH PLAIN in addition to AUTH LOGIN

Implement the -am argument to allow choosing an AUTH method.
For now only PLAIN and LOGIN are supported, but others can be added
easily in the future.

AUTH PLAIN required adding a new variant of encode_base64() capable of
handling NUL characters in the input string; the old function is now a
wrapper for the newer one.

function                                             old     new   delta
encode_n_base64                                        -     236    +236
sendmail_main                                       1199    1380    +181
packed_usage                                       32873   32877      +4
encode_base64                                        242      36    -206
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 2/1 up/down: 421/-206)          Total: 215 bytes

Signed-off-by: Raffaello D. Di Napoli <rafdev@dinapo.li>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agoklogd: code shrink
Denys Vlasenko [Tue, 31 Jul 2018 14:50:26 +0000 (16:50 +0200)]
klogd: code shrink

function                                             old     new   delta
klogd_main                                           511     486     -25

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agoinstall.sh: don't clobber dangling symlinks
Baruch Siach [Tue, 17 Jul 2018 10:40:45 +0000 (13:40 +0300)]
install.sh: don't clobber dangling symlinks

Symlinks in a subdirectory that is to become target rootfs are sometimes
dangling because they link to canonical file names that are not present
on the host, but are present relative to the target rootfs root. Don't
copy over dangling symlinks when noclobber is enabled

The -e test treats dangling symlinks as non-existent files. Add -h test
that returns true for all symlinks.

Cc: Yann E. MORIN <yann.morin.1998@free.fr>
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agoklogd: better help text
Denys Vlasenko [Tue, 31 Jul 2018 13:25:00 +0000 (15:25 +0200)]
klogd: better help text

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agohush: speed up ${var:+ARG} for literal ARGs
Denys Vlasenko [Tue, 31 Jul 2018 08:36:29 +0000 (10:36 +0200)]
hush: speed up ${var:+ARG} for literal ARGs

function                                             old     new   delta
first_special_char_in_vararg                           -      52     +52
expand_one_var                                      2248    2296     +48
encode_then_expand_vararg                            357     336     -21
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 1/1 up/down: 100/-21)            Total: 79 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agohush: fix another case where empty "for" wasn't setting exitcode to 0
Denys Vlasenko [Sat, 28 Jul 2018 10:42:08 +0000 (12:42 +0200)]
hush: fix another case where empty "for" wasn't setting exitcode to 0

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agohush: disable debug_indent increment/decrement for HUSH_DEBUG < 2 builds
Denys Vlasenko [Sat, 28 Jul 2018 10:16:30 +0000 (12:16 +0200)]
hush: disable debug_indent increment/decrement for HUSH_DEBUG < 2 builds

function                                             old     new   delta
run_list                                            1063    1046     -17
parse_stream                                        2296    2249     -47
run_pipe                                            1890    1840     -50
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/3 up/down: 0/-114)           Total: -114 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agohush: make "set -x" output don't redirectable when fd#2 redirected
Denys Vlasenko [Sat, 28 Jul 2018 10:13:58 +0000 (12:13 +0200)]
hush: make "set -x" output don't redirectable when fd#2 redirected

function                                             old     new   delta
x_mode_print_optionally_squoted                        -     120    +120
x_mode_flush                                           -      68     +68
save_fd_on_redirect                                  208     243     +35
x_mode_prefix                                          -      27     +27
x_mode_addblock                                        -      23     +23
x_mode_addchr                                          -      17     +17
dump_cmd_in_x_mode                                   110      85     -25
run_pipe                                            1919    1890     -29
print_optionally_squoted                             145       -    -145
------------------------------------------------------------------------------
(add/remove: 5/1 grow/shrink: 1/2 up/down: 290/-199)           Total: 91 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agohush: make "set -x" output closer to bash
Denys Vlasenko [Fri, 27 Jul 2018 15:42:38 +0000 (17:42 +0200)]
hush: make "set -x" output closer to bash

function                                             old     new   delta
print_optionally_squoted                               -     145    +145
run_pipe                                            1902    1919     +17
dump_cmd_in_x_mode                                   142     110     -32
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 1/1 up/down: 162/-32)           Total: 130 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agohush: fix "set -x" output prefix overlapping for v="..`cmd`.." case
Denys Vlasenko [Fri, 27 Jul 2018 12:12:05 +0000 (14:12 +0200)]
hush: fix "set -x" output prefix overlapping for v="..`cmd`.." case

Was printing initial "+" prefix for the assignment, that printing

"+ cmd"

then printing the expanded " v=VAL" string.

Delay printing of "+" prefix for the assignment to after expansion.

function                                             old     new   delta
run_pipe                                            1883    1902     +19
builtin_eval                                         127     133      +6
expand_vars_to_list                                 1103    1106      +3
dump_cmd_in_x_mode                                   144     142      -2
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/1 up/down: 28/-2)              Total: 26 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agohush: in some cases, expand_on_ifs() relied of uninitialized memory
Denys Vlasenko [Fri, 27 Jul 2018 10:14:39 +0000 (12:14 +0200)]
hush: in some cases, expand_on_ifs() relied of uninitialized memory

The n > 0 check to prevent access to the last byte of non-existing argv[-1]
wasn't enough. Switched to making sure there are initialized (zero) bytes there.

A predictable testcase is rather hard to construct, unfortunately,
contents of memory depends on allocator behavior and whatnot.

function                                             old     new   delta
o_save_ptr_helper                                    119     137     +18
expand_on_ifs                                        345     339      -6
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 18/-6)              Total: 12 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agohush: improve set -x: make "+++" indent level increase in `cmd` and eval.
Denys Vlasenko [Thu, 26 Jul 2018 13:21:50 +0000 (15:21 +0200)]
hush: improve set -x: make "+++" indent level increase in `cmd` and eval.

function                                             old     new   delta
dump_cmd_in_x_mode                                   126     144     +18
run_pipe                                            1873    1883     +10
builtin_eval                                         119     127      +8
expand_vars_to_list                                 1100    1103      +3
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 4/0 up/down: 39/0)               Total: 39 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agoexamples/var_service: add /var/run flag file to ntp.script
Denys Vlasenko [Thu, 26 Jul 2018 11:45:33 +0000 (13:45 +0200)]
examples/var_service: add /var/run flag file to ntp.script

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agohtpd: increase MIN_FREQHOLD by 3
Denys Vlasenko [Wed, 25 Jul 2018 12:58:49 +0000 (14:58 +0200)]
htpd: increase MIN_FREQHOLD by 3

This means we'll start correcting frequency ~5 minutes after start,
not ~3.5 ones.

With previos settings I still often see largish ~0.7s initial offsets
only about 1/2 corrected before frequency correction kicks in,
resulting in ~200ppm "correction" which is then slowly undone.

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agofdisk: code shrink
Denys Vlasenko [Wed, 25 Jul 2018 12:42:53 +0000 (14:42 +0200)]
fdisk: code shrink

function                                             old     new   delta
get_nonexisting_partition                            119     104     -15
fdisk_main                                          2640    2622     -18
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-33)             Total: -33 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agofdisk: sync up with some util-linux 2.31 behavior
Denys Vlasenko [Wed, 25 Jul 2018 11:45:36 +0000 (13:45 +0200)]
fdisk: sync up with some util-linux 2.31 behavior

= display default is no longer in cylinders
= +sizeC is no longer supported
= add +sizeT suffix - terabytes are here
= K,M,G,T and k,m,g,t suffixes all are binary, not decimal
= +sizeM results in last sector +(size * 1Mbyte - 1), not +(size * 1Mbyte)
= fix comparison to "YES" answer for sgi/sun

function                                             old     new   delta
read_int                                             492     519     +27
fdisk_main                                          2644    2640      -4
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 27/-4)              Total: 23 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agofdisk: use strtoul[l] instead of atoi, closes 11176
Denys Vlasenko [Wed, 25 Jul 2018 10:08:26 +0000 (12:08 +0200)]
fdisk: use strtoul[l] instead of atoi, closes 11176

Couldn't create partitions bigger than 1TB (when using 512 bytes sectors,
on 32 bits architectures).

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agogzip: unbreak FEATURE_GZIP_LEVELS, closes 11171
Denys Vlasenko [Tue, 24 Jul 2018 19:12:58 +0000 (21:12 +0200)]
gzip: unbreak FEATURE_GZIP_LEVELS, closes 11171

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agohush: fix/explain corner cases of redirection colliding with script fd
Denys Vlasenko [Tue, 24 Jul 2018 16:01:22 +0000 (18:01 +0200)]
hush: fix/explain corner cases of redirection colliding with script fd

function                                             old     new   delta
save_fd_on_redirect                                  200     208      +8
run_pipe                                            1870    1873      +3
setup_redirects                                      321     322      +1
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/0 up/down: 12/0)               Total: 12 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agohush: add "heredoc.tests" from ash, tweak ash "is a function" message
Denys Vlasenko [Tue, 24 Jul 2018 15:08:04 +0000 (17:08 +0200)]
hush: add "heredoc.tests" from ash, tweak ash "is a function" message

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agohush: fix nested redirects colliding with script fds
Denys Vlasenko [Tue, 24 Jul 2018 14:54:41 +0000 (16:54 +0200)]
hush: fix nested redirects colliding with script fds

This necessitates switch from libc FILE api to a simple
homegrown replacement.
The change which fixes the bug here is the deleting of

restore_redirected_FILEs();

line. It was prematurely moving (restoring) script fd#3.
The fix is: we don't even _want_ to restore scrit fds,
we are perfectly fine with them being moved.
The only reason we tried to restore them is that FILE api
did not allow moving of FILE->fd.

function                                             old     new   delta
refill_HFILE_and_getc                                  -      93     +93
hfopen                                                 -      90     +90
hfclose                                                -      66     +66
pseudo_exec_argv                                     591     597      +6
hush_main                                           1089    1095      +6
builtin_source                                       209     214      +5
save_fd_on_redirect                                  197     200      +3
setup_redirects                                      320     321      +1
fgetc_interactive                                    235     236      +1
i_peek_and_eat_bkslash_nl                             99      97      -2
expand_vars_to_list                                 1103    1100      -3
restore_redirects                                     99      52     -47
fclose_and_forget                                     57       -     -57
remember_FILE                                         63       -     -63
------------------------------------------------------------------------------
(add/remove: 3/2 grow/shrink: 6/3 up/down: 271/-172)           Total: 99 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agohush: handle backslash-newline in heredoc terminators
Denys Vlasenko [Tue, 24 Jul 2018 12:03:18 +0000 (14:03 +0200)]
hush: handle backslash-newline in heredoc terminators

function                                             old     new   delta
fetch_heredocs                                       479     527     +48

(ash fails this test)

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agohush: fix handling of heredocs not enclosed in groups where they are "declared"
Denys Vlasenko [Tue, 24 Jul 2018 11:03:03 +0000 (13:03 +0200)]
hush: fix handling of heredocs not enclosed in groups where they are "declared"

function                                             old     new   delta
fetch_heredocs                                         -     479    +479
parse_and_run_stream                                 146     148      +2
parse_stream                                        2787    2296    -491
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 1/1 up/down: 481/-491)          Total: -10 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agohush: fix heredoc handling in the "cmd <<EOF ;<newline>" case
Denys Vlasenko [Mon, 23 Jul 2018 14:31:21 +0000 (16:31 +0200)]
hush: fix heredoc handling in the "cmd <<EOF ;<newline>" case

function                                             old     new   delta
parse_stream                                        2759    2787     +28

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agohush: fix handling of heredocs starting with empty lines
Denys Vlasenko [Mon, 23 Jul 2018 13:43:57 +0000 (15:43 +0200)]
hush: fix handling of heredocs starting with empty lines

function                                             old     new   delta
parse_stream                                        2748    2759     +11

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agohexedit: fixes for redraw and down movement causing SEGV on attempt to access
Denys Vlasenko [Mon, 23 Jul 2018 12:21:07 +0000 (14:21 +0200)]
hexedit: fixes for redraw and down movement causing SEGV on attempt to access

"Go to:" command was not updating row position, making next "down" movements
for one screenful print empty lines instead of showing the contents.

If the file is whole pages long, "down" movement at EOF was advancing position
+16 bytes, mapping the next portion (entirely past the end of the file),
then finding out that the new position is beyond the EOF, rolling it back
-16 bytes... ending up with this postion pointing *before* the mapped portion.
Any next access (e.g. "move right" key) SEGVs.

function                                             old     new   delta
hexedit_main                                        1170    1184     +14

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agohush: never glob result of dquoted "${v:+/bin/c*}"
Denys Vlasenko [Fri, 20 Jul 2018 17:29:41 +0000 (19:29 +0200)]
hush: never glob result of dquoted "${v:+/bin/c*}"

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agohush: tidy up code after previous commits
Denys Vlasenko [Fri, 20 Jul 2018 17:11:09 +0000 (19:11 +0200)]
hush: tidy up code after previous commits

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agohush: better names for o_free_unsafe() / o_free(), no logic changes
Denys Vlasenko [Fri, 20 Jul 2018 15:51:31 +0000 (17:51 +0200)]
hush: better names for o_free_unsafe() / o_free(), no logic changes

o_free() made o_string NULL-initialized,
o_free_unsafe() did not bother reinitializing (expected caller to not need it).

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agohush: fix handling of '' in ${var:+ARG}
Denys Vlasenko [Fri, 20 Jul 2018 15:36:06 +0000 (17:36 +0200)]
hush: fix handling of '' in ${var:+ARG}

This wasn't an ash bug in dollar_altvalue9, it was hush bug (and bash!)

function                                             old     new   delta
expand_one_var                                      2236    2254     +18
expand_vars_to_list                                 1097    1103      +6
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 24/0)               Total: 24 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agohush: fix word splitting in ${v:+ARG} - dollar_altvalue1 test
Denys Vlasenko [Fri, 20 Jul 2018 14:18:59 +0000 (16:18 +0200)]
hush: fix word splitting in ${v:+ARG} - dollar_altvalue1 test

ash might be a bit buggy, need to investigate dollar_altvalue9 test

function                                             old     new   delta
expand_one_var                                      1639    2236    +597
expand_variables                                     112     128     +16
expand_vars_to_list                                 1117    1097     -20
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/1 up/down: 613/-20)           Total: 593 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agohush: expand_vars_to_list() should not assume it starts new word
Denys Vlasenko [Fri, 20 Jul 2018 12:45:12 +0000 (14:45 +0200)]
hush: expand_vars_to_list() should not assume it starts new word

function                                             old     new   delta
expand_variables                                     112     115      +3
expand_vars_to_list                                 1117    1108      -9
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 3/-9)               Total: -6 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agohush: remove pointless "next" var, simplify expand_vars_to_list()
Denys Vlasenko [Fri, 20 Jul 2018 12:24:56 +0000 (14:24 +0200)]
hush: remove pointless "next" var, simplify expand_vars_to_list()

function                                             old     new   delta
o_addstr                                               -      26     +26
expand_vars_to_list                                 1112    1117      +5
encode_then_expand_vararg                            398     382     -16
parse_dollar                                         779     762     -17
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 1/2 up/down: 31/-33)             Total: -2 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agohush: store "ended_in_ifs" flag in o_string
Denys Vlasenko [Thu, 19 Jul 2018 11:45:54 +0000 (13:45 +0200)]
hush: store "ended_in_ifs" flag in o_string

This simplifies function parameter passing.

function                                             old     new   delta
expand_one_var                                      1643    1639      -4
append_str_maybe_ifs_split                            64      52     -12
expand_vars_to_list                                 1125    1112     -13
expand_on_ifs                                        361     345     -16
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/4 up/down: 0/-45)             Total: -45 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agohush: propagate (output,n) parameters into expand_one_var()
Denys Vlasenko [Thu, 19 Jul 2018 10:14:47 +0000 (12:14 +0200)]
hush: propagate (output,n) parameters into expand_one_var()

This is necessary since expand_one_var() for ${var:+ARG} must create more than one
output word, and thus can't simply return a char*.

function                                             old     new   delta
expand_one_var                                      1610    1643     +33
expand_vars_to_list                                 1139    1125     -14
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 33/-14)             Total: 19 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agohush: make expand_vars_to_list() a bit more sane
Denys Vlasenko [Thu, 19 Jul 2018 09:16:53 +0000 (11:16 +0200)]
hush: make expand_vars_to_list() a bit more sane

function                                             old     new   delta
append_str_maybe_ifs_split                             -      64     +64
expand_vars_to_list                                 1167    1139     -28
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/1 up/down: 64/-28)             Total: 36 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agohush: reduce indentation, no code changes
Denys Vlasenko [Wed, 18 Jul 2018 14:12:23 +0000 (16:12 +0200)]
hush: reduce indentation, no code changes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agohush: fix 'x=; echo ${x:-"$@"}' producing 'BUG in varexp2' message
Denys Vlasenko [Wed, 18 Jul 2018 14:02:25 +0000 (16:02 +0200)]
hush: fix 'x=; echo ${x:-"$@"}' producing 'BUG in varexp2' message

function                                             old     new   delta
expand_string_to_string                              126     128      +2

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agohush: smaller code to set o_string to ""
Denys Vlasenko [Wed, 18 Jul 2018 13:48:53 +0000 (15:48 +0200)]
hush: smaller code to set o_string to ""

function                                             old     new   delta
encode_then_expand_vararg                            399     398      -1
parse_stream                                        2753    2748      -5

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agowhitespace fixes
Denys Vlasenko [Tue, 17 Jul 2018 13:04:17 +0000 (15:04 +0200)]
whitespace fixes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agohush: faster/smaller code to check for presense of multiple chars in string
Denys Vlasenko [Tue, 17 Jul 2018 12:33:19 +0000 (14:33 +0200)]
hush: faster/smaller code to check for presense of multiple chars in string

Go over the string only once.

function                                             old     new   delta
encode_then_expand_string                            126     105     -21
encode_then_expand_vararg                            443     399     -44
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-65)             Total: -65 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agohush: improve ${var#...}, ${var:+...} and ${var/.../...} - handle quoting
Denys Vlasenko [Tue, 17 Jul 2018 12:21:38 +0000 (14:21 +0200)]
hush: improve ${var#...}, ${var:+...} and ${var/.../...} - handle quoting

dollar_altvalue1 test partially fails: word splitting of unquoted ${var:+...}
is not correct

function                                             old     new   delta
encode_then_expand_vararg                              -     443    +443
expand_one_var                                      1599    1610     +11
parse_stream                                        2756    2753      -3
encode_string                                        250     242      -8
setup_heredoc                                        308     298     -10
expand_and_evaluate_arith                            106      96     -10
encode_then_expand_string                            142     126     -16
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 1/5 up/down: 454/-47)           Total: 407 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agocp: add missing quote in config snippet
Denys Vlasenko [Mon, 16 Jul 2018 22:16:16 +0000 (00:16 +0200)]
cp: add missing quote in config snippet

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agohush: shrink code in builtin_eval
Denys Vlasenko [Sun, 15 Jul 2018 16:03:56 +0000 (18:03 +0200)]
hush: shrink code in builtin_eval

function                                             old     new   delta
builtin_eval                                         126     119      -7

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agogrep: accept and ignore --color[=anything]
Denys Vlasenko [Fri, 13 Jul 2018 18:40:40 +0000 (20:40 +0200)]
grep: accept and ignore --color[=anything]

function                                             old     new   delta
grep_main                                            827     834      +7

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agocp: optional --reflink support
Denys Vlasenko [Fri, 13 Jul 2018 18:30:02 +0000 (20:30 +0200)]
cp: optional --reflink support

function                                             old     new   delta
cp_main                                              428     512     +84
copy_file                                           1676    1742     +66

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agousage: do not print trailing space for commands which have no arguments
Denys Vlasenko [Mon, 9 Jul 2018 16:23:33 +0000 (18:23 +0200)]
usage: do not print trailing space for commands which have no arguments

function                                             old     new   delta
bb_show_usage                                        120     130     +10

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agosort: add -V "sort version"
Denys Vlasenko [Sat, 7 Jul 2018 23:37:54 +0000 (01:37 +0200)]
sort: add -V "sort version"

function                                             old     new   delta
packed_usage                                       32855   32858      +3
get_key                                              500     503      +3
sort_opt_str                                          36      37      +1
sort_main                                           1037    1036      -1
compare_keys                                         795     783     -12
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/2 up/down: 7/-13)              Total: -6 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agofind: implement -executable
Denys Vlasenko [Fri, 6 Jul 2018 19:04:41 +0000 (21:04 +0200)]
find: implement -executable

function                                             old     new   delta
func_executable                                        -      19     +19
parse_params                                        1505    1519     +14
static.params                                        216     228     +12
packed_usage                                       32847   32855      +8
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 3/0 up/down: 53/0)               Total: 53 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agocpio: if longopts are enabled, accept --null (synonym for -0)
Denys Vlasenko [Fri, 6 Jul 2018 18:50:30 +0000 (20:50 +0200)]
cpio: if longopts are enabled, accept --null (synonym for -0)

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agotweak help texts
Denys Vlasenko [Fri, 6 Jul 2018 18:49:08 +0000 (20:49 +0200)]
tweak help texts

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agofind: implement -quit
Denys Vlasenko [Fri, 6 Jul 2018 18:35:35 +0000 (20:35 +0200)]
find: implement -quit

function                                             old     new   delta
packed_usage                                       32816   32846     +30
find_main                                            446     464     +18
func_quit                                              -      13     +13
parse_params                                        1495    1505     +10
static.params                                        210     216      +6
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 4/0 up/down: 77/0)               Total: 77 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agonproc: implement --all --ignore=N
haroon maqsood [Fri, 6 Jul 2018 14:17:57 +0000 (16:17 +0200)]
nproc: implement --all --ignore=N

function                                             old     new   delta
nproc_main                                            98     242    +144
packed_usage                                       32799   32816     +17
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 161/0)             Total: 161 bytes

Signed-off-by: haroon maqsood <maqsood3525@live.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agosendmail: fix parsing of addresses in angle brackets
Raffaello D. Di Napoli [Tue, 26 Jun 2018 23:18:02 +0000 (19:18 -0400)]
sendmail: fix parsing of addresses in angle brackets

Pointer e needs to be wound back in order to overwrite '>' with '\0'.
Regression introduced in 20077c1429

Signed-off-by: Raffaello D. Di Napoli <rafdev@dinapo.li>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agoudhcp: add decimal option values in comments, no code changes
Denys Vlasenko [Wed, 4 Jul 2018 14:05:48 +0000 (16:05 +0200)]
udhcp: add decimal option values in comments, no code changes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agoudhcp: tweak comment indentation, no code changes
Denys Vlasenko [Wed, 4 Jul 2018 13:44:22 +0000 (15:44 +0200)]
udhcp: tweak comment indentation, no code changes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agoudhcp: add option 211, "reboot time"
Jeremy Kerr [Tue, 3 Jul 2018 06:36:13 +0000 (16:36 +1000)]
udhcp: add option 211, "reboot time"

As defined in RFC 5071.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agoexamples/var_service/: use standard logger script, viewer and pager scripts
Denys Vlasenko [Tue, 3 Jul 2018 21:23:09 +0000 (23:23 +0200)]
examples/var_service/: use standard logger script, viewer and pager scripts

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agoexamples/var_service/: use "svc" for service commands, other tweaks
Denys Vlasenko [Tue, 3 Jul 2018 15:02:50 +0000 (17:02 +0200)]
examples/var_service/: use "svc" for service commands, other tweaks

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agohexdump: fix short file of zero butes treated as dup
Denys Vlasenko [Tue, 3 Jul 2018 14:27:54 +0000 (16:27 +0200)]
hexdump: fix short file of zero butes treated as dup

function                                             old     new   delta
bb_dump_dump                                        1466    1491     +25

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agowget: fix fetching of https URLs without http proxy
Denys Vlasenko [Mon, 2 Jul 2018 16:31:02 +0000 (18:31 +0200)]
wget: fix fetching of https URLs without http proxy

The "fix fetching of https URLs with http proxy" commit
broke the usual http-to-https redirect:

$ wget http://busybox.net/downloads/busybox-1.29.0.tar.bz2
Connecting to busybox.net (140.211.167.122:80)
Connecting to busybox.net (140.211.167.122:443)
wget: server returned error: HTTP/1.1 400 Bad Request

Fixing...

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agontpd: increase minimum G.FREQHOLD_cnt from 8 to 10
Denys Vlasenko [Mon, 2 Jul 2018 14:17:07 +0000 (16:17 +0200)]
ntpd: increase minimum G.FREQHOLD_cnt from 8 to 10

With ~0.9 initiall offsets, using 8 results in a bit too eager
frequency correction.

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agoStart 1.30.0 development cycle
Denys Vlasenko [Sun, 1 Jul 2018 15:18:47 +0000 (17:18 +0200)]
Start 1.30.0 development cycle

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agoBump version to 1.29.0 1_29_0
Denys Vlasenko [Sun, 1 Jul 2018 14:38:52 +0000 (16:38 +0200)]
Bump version to 1.29.0

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agotestsuite/mount.tests: fix false positive
Denys Vlasenko [Thu, 28 Jun 2018 12:10:00 +0000 (14:10 +0200)]
testsuite/mount.tests: fix false positive

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agovi: placate "warning: variable orig_buf set but not used"
Denys Vlasenko [Wed, 27 Jun 2018 13:11:36 +0000 (15:11 +0200)]
vi: placate "warning: variable orig_buf set but not used"

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agotestsuite/pidof.tests: fix false positive take 2
Denys Vlasenko [Wed, 27 Jun 2018 12:50:00 +0000 (14:50 +0200)]
testsuite/pidof.tests: fix false positive take 2

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agovi: placate "warning: statement with no effect"
Denys Vlasenko [Wed, 27 Jun 2018 12:46:08 +0000 (14:46 +0200)]
vi: placate "warning: statement with no effect"

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agonslookup: placate "warning: unused variable i"
Denys Vlasenko [Wed, 27 Jun 2018 12:44:35 +0000 (14:44 +0200)]
nslookup: placate "warning: unused variable i"

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agotestsuite/tar.tests: fix false positive
Denys Vlasenko [Wed, 27 Jun 2018 12:35:56 +0000 (14:35 +0200)]
testsuite/tar.tests: fix false positive

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agotestsuite/pidof.tests: fix false positive
Denys Vlasenko [Wed, 27 Jun 2018 12:26:21 +0000 (14:26 +0200)]
testsuite/pidof.tests: fix false positive

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agotestsuite/bzcat.tests: fix false positive take 2
Denys Vlasenko [Wed, 27 Jun 2018 11:15:10 +0000 (13:15 +0200)]
testsuite/bzcat.tests: fix false positive take 2

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agotestsuite/unexpand/unexpand-works-like-GNU: fix false positive
Denys Vlasenko [Wed, 27 Jun 2018 10:54:57 +0000 (12:54 +0200)]
testsuite/unexpand/unexpand-works-like-GNU: fix false positive

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agotestsuite/bzcat.tests: fix false positive
Denys Vlasenko [Wed, 27 Jun 2018 08:35:45 +0000 (10:35 +0200)]
testsuite/bzcat.tests: fix false positive

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agotestsuite/tar.tests: fix false positive
Denys Vlasenko [Wed, 27 Jun 2018 08:01:49 +0000 (10:01 +0200)]
testsuite/tar.tests: fix false positive

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agotestsuite/cat.tests: fix false positive
Denys Vlasenko [Wed, 27 Jun 2018 07:57:30 +0000 (09:57 +0200)]
testsuite/cat.tests: fix false positive

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agolibbb: crypt() in newer glibc requires include <crypt.h>
Denys Vlasenko [Wed, 27 Jun 2018 07:43:38 +0000 (09:43 +0200)]
libbb: crypt() in newer glibc requires include <crypt.h>

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agohush: unset_local_var_len is only used by unset_local_var
Denys Vlasenko [Tue, 26 Jun 2018 16:27:54 +0000 (18:27 +0200)]
hush: unset_local_var_len is only used by unset_local_var

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agohush: fix compile problem found by randomconfig
Denys Vlasenko [Tue, 26 Jun 2018 16:09:22 +0000 (18:09 +0200)]
hush: fix compile problem found by randomconfig

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agoscripts/randomtest: disable CONFIG_NSLOOKUP for uclibc
Denys Vlasenko [Tue, 26 Jun 2018 15:22:35 +0000 (17:22 +0200)]
scripts/randomtest: disable CONFIG_NSLOOKUP for uclibc

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agoscripts/randomtest: disable CONFIG_FEATURE_INETD_RPC for glibc
Denys Vlasenko [Tue, 26 Jun 2018 14:08:22 +0000 (16:08 +0200)]
scripts/randomtest: disable CONFIG_FEATURE_INETD_RPC for glibc

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agoscripts/randomtest: disable CONFIG_FEATURE_MOUNT_NFS for glibc
Denys Vlasenko [Tue, 26 Jun 2018 14:01:05 +0000 (16:01 +0200)]
scripts/randomtest: disable CONFIG_FEATURE_MOUNT_NFS for glibc

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agohush: fix dup_CLOEXEC() call without "avoid_fd" parameter
Denys Vlasenko [Tue, 26 Jun 2018 13:50:33 +0000 (15:50 +0200)]
hush: fix dup_CLOEXEC() call without "avoid_fd" parameter

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agofdisk: placate warning of strncpy not copying NUL byte
Denys Vlasenko [Tue, 26 Jun 2018 13:44:58 +0000 (15:44 +0200)]
fdisk: placate warning of strncpy not copying NUL byte

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agohush: fix for !ENABLE_HUSH_MODE_X configuration
Denys Vlasenko [Tue, 26 Jun 2018 13:43:56 +0000 (15:43 +0200)]
hush: fix for !ENABLE_HUSH_MODE_X configuration

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agohush: variable nesting code is used also if HUSH_FUNCTIONS is not enabled
Denys Vlasenko [Tue, 26 Jun 2018 13:36:58 +0000 (15:36 +0200)]
hush: variable nesting code is used also if HUSH_FUNCTIONS is not enabled

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agorandomconfig fixes
Denys Vlasenko [Tue, 26 Jun 2018 13:35:17 +0000 (15:35 +0200)]
randomconfig fixes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agotls: fix to handle X.509 v1 certificates correctly
Ivan Abrea [Sun, 24 Jun 2018 18:04:57 +0000 (20:04 +0200)]
tls: fix to handle X.509 v1 certificates correctly

The syntax of public key certificates can be found in RFC 5280 section
4.1. The relevant part of the syntax is the following:

  TBSCertificate  ::=  SEQUENCE  {
    version         [0]  EXPLICIT Version DEFAULT v1,
    serialNumber         CertificateSerialNumber,
    ... remaining fields omitted ...
  }

The version field has a default value of v1. RFC 5280 section 4.1.2.1
says the following:

  If only basic fields are present, the version SHOULD be 1 (the value
  is omitted from the certificate as the default value); however, the
  version MAY be 2 or 3.

To help detect if the version field is present or not, the type of the
version field has an explicit tag of [0]. Due to this tag, if the
version field is present, its encoding will have an identifier octet
that is distinct from that of the serialNumber field.

ITU-T X.690 specifies how a value of such a type should be encoded with
DER. There is a PDF of X.690 freely available from ITU-T. X.690 section
8.1.2 specifies the format of identifier octets which is the first
component of every encoded value. Identifier octets encode the tag of a
type. Bits 8 and 7 encode the tag class. Bit 6 will be 0 if the encoding
is primitive and 1 if the encoding is constructed. Bits 5 to 1 encode
the tag number.

X.690 section 8.14 specifies what the identifier octet should be for
explicitly tagged types. Section 8.14.3 says if implicit tagging is not
used, then the encoding shall be constructed. The version field uses
explicit tagging and not implicit tagging, so its encoding will be
constructed. This means bit 6 of the identifier octet should be 1.

X.690 section 8.14 and Annex A provide examples. Note from their
examples that the notation for tags could look like [APPLICATION 2]
where both the tag class and tag number are given. For this example, the
tag class is 1 (application) and the tag number is 2. For notation like
[0] where the tag class is omitted and only the tag number is given, the
tag class will be context-specific.

Putting this all together, the identifier octet for the DER encoding of
the version field should have a tag class of 2 (context-specific), bit 6
as 1 (constructed), and a tag number of 0.

Signed-off-by: Ivan Abrea <ivan@algosolutions.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agontpd: deprecate IPTOS_LOWDELAY in favor of IPTOS_DSCP_AF21
Codarren Velvindron [Sun, 15 Apr 2018 16:37:50 +0000 (20:37 +0400)]
ntpd: deprecate IPTOS_LOWDELAY in favor of IPTOS_DSCP_AF21

Update QoS markers.
Use DSCP AF21 for interactive traffic. DSCP is defined in RFC2474.
Many modern equipment no longer support IPTOS.

Signed-off-by: Codarren Velvindron <codarren@hackers.mu>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agoexamples: update /var/service/getty for Unicode ttys
Denys Vlasenko [Sat, 23 Jun 2018 11:55:13 +0000 (13:55 +0200)]
examples: update /var/service/getty for Unicode ttys

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agoinstall: fix "-D -t DIR1/DIR2/DIR3" creating only DIR1/DIR2, closes 11106
Denys Vlasenko [Fri, 22 Jun 2018 16:59:10 +0000 (18:59 +0200)]
install: fix "-D -t DIR1/DIR2/DIR3" creating only DIR1/DIR2, closes 11106

function                                             old     new   delta
install_main                                         758     767      +9

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agoudhcpc: remove code which requires server ID to be on local network
Denys Vlasenko [Thu, 21 Jun 2018 15:36:22 +0000 (17:36 +0200)]
udhcpc: remove code which requires server ID to be on local network

This reverts "udhcpc: paranoia when using kernel UDP mode
for sending renew: server ID may be bogus".

Users complain that they do have servers behind routers
(with DHCP relays).

function                                             old     new   delta
send_packet                                          168     166      -2
bcast_or_ucast                                        25      23      -2
udhcp_send_kernel_packet                             301     295      -6
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/3 up/down: 0/-10)             Total: -10 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
6 years agoUpdate release script to generate detached signatures and checksum files
Eli Schwartz [Tue, 5 Jun 2018 16:48:53 +0000 (12:48 -0400)]
Update release script to generate detached signatures and checksum files

This is more usable for programmatically checking the validity of a
release.

Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>