About
Documentation
Get BusyBox
Development
Links
Developer Pages
|
-
The Software Freedom Conservancy
acts as the GPL enforcement agent for various BusyBox copyright holders.
If you wish to report a GPL violation on BusyBox,
please write to gpl@busybox.net.
-
Life without systemd.
- 27 September 2024 -- BusyBox 1.37.0 (unstable)
BusyBox 1.37.0.
(git,
patches,
how to add a patch)
Sizes of busybox-1.36.0 and busybox-1.37.0 (with equivalent config, static musl build):
text data bss dec hex filename
1022792 559 4988 1028339 fb0f3 busybox-1.36.0/busybox
1024327 559 4988 1029874 fb6f2 busybox-1.37.0/busybox
Changes since previous release:
Akos Somfai:
lineedit: fix crash when icanon set with -echo
Andrej Picej:
hwclock: add get/set parameters option
Arsen Arsenović:
fixdep: avoid underflow when end of entry doesn't coincide with EOF
Christian Franke:
Cygwin: regenerate defconfig
Dario Binacchi:
ip link: support for the CAN netlink
David Leonard:
find: implement -ok
od: fix -O
od: add tests
Denys Vlasenko:
build system: fix "Config.in:117 error: Overlong line"
libbb/dump: conditionalize code used only by xxd and od
libbb/dump: correct handling of 1-byte signed int format
libbb/dump: make xxd_displayoff member conditional on xxd
libbb/dump: use fputs_stdout where appropriate
libbb/sha: do not read shaNI variable twice, and factor out its setting
libbb/sha: fix sha-NI instruction detection
libbb: add bit counting function, use where appropriate
libbb: code shrink: introduce and use [_]exit_FAILURE()
libbb: consolidate NOMMU fix of restoring high bit in argv[0][0]
libbb: fix 64-bit bb_popcnt_long
libbb: pass "" rather than NULL as format string in _nomsg functions
lineedit: print prompt and editing operations to stderr
*: introduce and use exitcode_t
ash: code shrink - reuse is_prefixed_with() from libbb
ash: code shrink: do not take address of prefix(), allowing it to inline
ash: disable check for "good" function name, bash does not check this
ash: disable sleep as builtin, closes 15619
ash: do not abort interactive mode on >&9999 redirect
ash: exec: Stricter pathopt parsing - lost chunk
ash: fix broken new mail detection
ash: fix handling of single-quoted strings in pattern substitution
ash: fix sleep built-in not running INT trap immediately on ^C
ash: get rid of separate mail_var_path_changed flag variable
ash: remove "volatile" specifier from suppress_int
ash: remove limitation on fd# length
ash: sleep builtin with no arguments should not exit
hush (NOMMU): fix LINENO in execed children
hush: add comment about abort on syntax error %{^}
hush: avoid duplicate fcntl(F_SETFD, FD_CLOEXEC) during init
hush: detect when terminating "done"/"fi" is missing
hush: do not exit interactive shell on some redirection errors
hush: fix "exec 3>FILE" aborting if 3 is exactly the next free fd
hush: fix ELIF cmd1;cmd2 THEN ... not executing cmd2, closes 15571
hush: fix an interactive abort on error
hush: fix expansion of space in "a=${a:+$a }c" construct
hush: make "false" built-in
hush: printf builtin with no arguments should not exit
hush: quote values in "readonly" output
hush: quote variable values printed by "set" (match ash behavior)
hush: restore tty pgrp on SIGHUP
hush: set G.ifs sooner (prevents segfault)
hush: speed up "big heredoc" code
shell/math.h: update comments, rearrange struct members for smaller code
shell/math: $((1?)) has one-too-small opstack, fix this
shell/math: add note on ERANGE
shell/math: avoid $((3**999999999999999999)) to take years
shell/math: bash-compatible handling of too large numbers
shell/math: change ?: nesting code to not have 63 level nesting limitation
shell/math: decrease stack usage by not allocating copies of variable names
shell/math: do not accept $((36#@))
shell/math: document ternary ?: op's weirdness, add code comments
shell/math: eliminate redundant endofname()
shell/math: eliminate some redundant stores on return code path
shell/math: explain the logic, small tweak to make code smaller
shell/math: explain why we use separate &end
shell/math: fix ?: to not evaluate not-taken branches
shell/math: fix comments about jammed-together num+num corner cases
shell/math: fix nested ?: and do not parse variables in not-taken branch
shell/math: fix one name check, other minor cleanups
shell/math: fix order of expansion of variables to numbers
shell/math: fix parsing of ?: and explain why it's parsed that way
shell/math: fix the order of variable resolution in binops
shell/math: reduce stack usage
shell/math: remove a redundant check
shell/math: remove now-unused second_val
shell/math: remove special code to handle a?b?c:d:e, it works without it now
shell/math: rename TOK_NUM to TOK_VALUE, improve comments
shell/math: simpler insertion of "fake" last RPAREN
shell/math: simplify handling of unary plus
shell/read: do not allow empty variable name
shell: add a few yet-failing arithmentic tests
shell: avoid segfault on ${0::0/0~09J}. Closes 15216
shell: document another arithmetic discrepancy with bash
shell: fix SIGWINCH and SIGCHLD (in hush) interrupting line input, closes 15256
shell: move varcmp() to shell_common.h and use it in hush
awk: do not infinitely recurse getvar_s() if CONVFMT is set to a numeric value
awk: do not read ARGIND, only set it (gawk compat)
awk: fix SEGV on read error in -f PROGFILE
awk: fix backslash handling in sub() builtins
awk: fix closing of non-opened file
awk: fix handling of empty fields
awk: fix splitting with default FS
awk: fix subst code to handle "start of word" pattern correctly (needs REG_STARTEND)
awk: fix use-after-realloc (CVE-2021-42380), closes 15601
awk: get rid of one indirection level for iF (input file structure)
awk: implement -E; do not reorder -f and -e
awk: mktime() with no arguments is not allowed
awk: printf(INVALID_FMT) prints it verbatim
awk: remove a local variable "caching" a struct member
awk: shrink - use setvar_sn() to set variables from non-NUL terminated strings
chown: stop accepting deprecated USER.GROUP syntax, only : separator is allowed
factor: we can pack 21, not 20, 3-bit elements into packed wheel words
getfattr: fix "getfattr NOTEXIST" - now prints error msg
httpd: do not mangle cgi-bin/SCRIPT/params URLs
hwclock: force LONG_OPTS, stop accepting non-compatible -t
i2ctransfer: fix build warning
ls: do not truncate username/groupname to 8 chars
mkfs_vfat: do not generate same volume_id when run in rapid succession
modprobe: call finit_module with MODULE_INIT_COMPRESSED_FILE if module name doesn't end with .ko
nmeter: improve %T fractionals display
nmeter: increase maximum /proc file size (needed for large machines)
nproc: prepare for arbitrarily large CPU masks
nslookup: ensure unique transaction IDs for the DNS queries
ntpd: correct comment: 2^-20 is ~1 microsecond (confused with 10^-20)
ntpd: correct fixed->float conversions of fractions
ntpd: fix a warning on 32-bit arch build
ntpd: fold d_to_tv() into its only caller
od, hexdump: byte 0x11 is "dc1" not "dcl"
od: -l,I,L indeed depend on sizeof(long), fix this
od: actually remove -IL from --help, as comment says
od: correct -i, enable tests which pass for DESKTOP too
od: fix default format, shrink
od: for !DESKTOP, match output more closely to GNU coreutils 9.1, implement -s
od: implement -B
od: stop printing extra trailing spaces
od: support -DOHXIL
seedrng: fix for glibc <= 2.24 not providing getrandom()
seq: accept negative parameters
seq: fix yet another case of negative parameters not working
shuf: add (disabled) code to support very long numbers in -i LO-HI
shuf: another tweak to COMMON_PREFIX_HACK code
shuf: fix pfx_len calculation
shuf: remove redundant code
sleep: fix "sleep -- ARGS"
sleep: fix error exit when called as "sh" builtin
start-stop-daemon: do not lose error messages with -b
start-stop-daemon: fix --help: -K or -S is required
start-stop-daemon: make --output not depend on FANCY
start-stop-daemon: update comment, no code changes
syslogd: daemonize _after_ init (so that init errors are visible, if they occur)
syslogd: decrease stack usage, ~50 bytes
syslogd: fix breakage caused by "daemonize _after_ init" change
time: implement %% and \escapes in -f FMT
tls: P256: fix obscure x86_64 asm misbehavior, closes 15679
tls: P256: improve x86_64 multiplication asm code
tls: fix CONFIG_FEATURE_TLS_SHA1=y + CONFIG_SHA1_HWACCEL=y
top: improve large PID display in memory ('s') mode
top: stop using div() from libc, compilers now do it better
udhcpd: optional BOOTP support
unzip: clear SUID/GID bits, implement -K to not clear them
unzip: document some options we might support
wget: fix compile warnings when WGET_FTP is not selected
Dominique Martinet:
sed: check errors writing file with sed -i
Eric Blake:
readlink: support --, -n always
Jones Syue:
crond: log5 fix typo, replace log level '4' with '5'
Karsten Sperling:
ash: use-after-free in bash pattern substitution
Louai Al-Khanji:
start-stop-daemon: implement option -O|--output
Miroslav Lichvar:
ntpd: make NTP client and server Y2036/2038-ready
Natanael Copa:
time: fix max resident set size unit
awk: fix use after free (CVE-2023-42363)
Nero:
install: Fix chown resetting suid/sgid bits from chmod
Peter Korsgaard:
util-linux/lsusb.c: print manufacturer/product strings if available
Petja Patjas:
vi: Ensure that the edit buffer ends in a newline
Petr Vorel:
sleep: Update doc
Ron Yorston:
lineedit: fix matching of directories when searching PATH
ash: make EPOCH variables work if RANDOM is disabled
ash: improve trap and jobs builtins in child shells
ash,hush: tab completion of functions and aliases
tr: display usage for incorrect arguments
tsort: avoid use-after-free
awk: fix segfault when compiled by clang
ash: fix parsing of alias expansion + bash features
Makefile.flags: suppress clang warnings when cross-compiling
ash: remove defunct control character to save a few bytes
md5/shaXsum: accept uppercase hex strings
timeout: allow fractional seconds in timeout values
ash: move hashvar() calls into findvar()
Russ Dill:
udhcp: Avoid leaking uninitialized/stale data
Sertonix:
wget: ignore header casing
Sören Tempel:
ed: don't use memcpy with overlapping memory regions
Thomas Devoogdt:
seedrng: fix for glibc <= 2.24 not providing random header
Tomas Paukrt:
appletlib: fix "warning: unused variable applet_no"
build system: clean more files on make clean
Uwe Kleine-König:
build system: Make it possible to build with 64bit time_t
YU Jincheng:
getfattr: new applet
Yan Zhu:
docproc: avoid segfault during file closing
Yousong Zhou:
libiproute: fix filtering ip6 route by table id
ejaaskel:
start-stop-daemon: add -d DIR chdir option
zhuyan:
ash: initialize basepf.buf in ash
- 19 May 2023 -- BusyBox 1.36.1 (stable)
BusyBox 1.36.1.
(git)
Bug fix release. 1.36.1 has fixes for
line editing,
detection of hardware sha1/sha256 support,
unzip (do not create suid/sgid files unless -K),
shell (printf and sleep with no args, handing of SIGINT in sleep),
ed.
- 3 January 2023 -- BusyBox 1.36.0 (unstable)
BusyBox 1.36.0.
(git,
patches,
how to add a patch)
Note: udhcpc6 now uses a different helper script by default (/usr/share/udhcpc/default6.script).
Sizes of busybox-1.35.0 and busybox-1.36.0 (with equivalent config, static uclibc build):
text data bss dec hex filename
1044070 908 14328 1059306 1029ea busybox-1.35.0
1046317 908 14328 1061553 1032b1 busybox-1.36.0
Changes since previous release:
Aaro Koskinen:
devmem: add 128-bit width
Bernhard Reutner-Fischer (3):
kbuild: fix building sha256
kbuild: Prefer -Oz over -Os
seedrng: manually inline seed_rng
Brandon Maier:
xxd: fix typo in trivial usage
Dario Binacchi (2):
fbset: abort on not handled options
fbset: support setting pixel clock rate
David Leonard:
tsort: new applet
Denys Vlasenko:
Makefile.flags: add resolv to LDLIBS for linux compilers too (not only gnu ones)
build system: detect if build host has no bzip2
scripts/echo.c: fix NUL handling in "abc\0 def"
libbb/loop: fix compile failure (name collision)
libbb/loop: optionally use ioctl(LOOP_CONFIGURE) to set up loopdevs
libbb/loop: restore the correct return value of set_loop()
libbb/sha1: add config-selectable fully unrolled version, closes 14391
libbb/sha1: add config-selectable partially unrolled version
libbb/sha1: assembly versions for x86
libbb/sha1: optional x86 hardware accelerated hashing
libbb/sha256: optional x86 hardware accelerated hashing
libbb: change xstrndup, xmemdup to take size_t as size parameter
libbb: factor out fflush_stdout_and_exit(EXIT_SUCCESS)
libbb: fflush_stdout_and_exit(0) still exits with _error_ (not 0!) if fflush fails
libbb: fix fallout from nth_string() robustification, closes 14726
libbb: introduce and use chdir_or_warn()
libbb: invert the meaning of SETUP_ENV_NO_CHDIR -> SETUP_ENV_CHDIR
tls: P256: remove NOP macro sp_256_norm_8()
tls: include signature_algorithms extension in client hello message
examples/var_service/dhcp_if: make helper scripts more talkative
testsuite/mount.tests: accomodate umount failure seen on 5.18.0
testsuite/sha1sum.tests: fix false positive failure
shell: add comments about SIGINT-related problems
shell: fix compile failures in some configs
ash,hush: fix handling of SIGINT while waiting for interactive input
ash: ^C with SIG_INGed SIGINT should not exit the shell
ash: do not truncate failed tilde expansion on unknown user names
ash: fix ifs cleanup on error paths
ash: fix unsafe use of mempcpy
ash: fix use-after-free in pattern substitution code
awk: input numbers are never octal or hex (only program consts can be)
bc: hopefully fix bug 14956 (use-after-free)
cut: build fix for FEATURE_CUT_REGEX
ifplugd: split -a into -a and -A, latter disables upping in iface creation
init: do not set HOME
ls: implement ls -sh (human-readable allocated blocks)
md5/shaXsum: use FEATURE_COPYBUF_KB to size the buffer instead of fixed 4k
mv: fix error in !VERBOSE configs
nmeter: %[md] %[mw] - dirty file-backed pages, writeback pages
powertop: fix cpuid asm: ebx saving/restoring is properly done by gcc
sed: correctly handle 'w FILE' commands writing to the same file
sed: fix double-free in FEATURE_CLEAN_UP=y configs
sed: fix handling of escaped delimiters in s/// replacement
sed: fix handling of escaped delimiters in s/// search pattern, closes 14541
seedrng: chdir to the SEED_DIRECTORY - avoid concat_path_file's
seedrng: do not hash in a constant string, it's not adding entropy
seedrng: do not hash lengths, they are very predictable
seedrng: do not try to continue on unexpected errors (just exit)
seedrng: explain why we need locking and fsync'ing
seedrng: include file/dir names in error messages
seedrng: re-add fsync after unlink, and explain its purpose
seedrng: reduce MAX_SEED_LEN from 512 to 256
seedrng: remove redundant assignment
seedrng: remove unnecessary zero-filling of local variables
seedrng: restore error check on fsync
seedrng: simplify read_new_seed() to not have error return
seedrng: use more xfuncs where appropriate
shaNNNsum: accept one-space "HASH FILENAME" format for -c, closes 14866
sort: fix -k2M (wasn't skipping leading whitespace)
sort: fix -s -r interaction: 'stable' order is not affected by -r
sort: fix sort -s -u, closes 14871
sort: support -h
sulogin: increase util-linux compatibility
sulogin: start _login_ shell only with -p
sulogin: util-linux does not say "normal startup" on Ctrl-D
taskset: fix printf format mismatch in !FEATURE_TASKSET_FANCY config. closes 14616
top: fix display of large PID/PPID
top: improve large PID display in memory ('s') mode
tree: make it unicode-aware
tree: unicode tweak (use normal space char, 0x20)
udhcpc6: add missed big-endian conversions
udhcpc6: align FF02__1_2[]
udhcpc6: downgrade "opening listen socket" log level to 2
udhcpc6: fix binding to network aliases
udhcpc6: fix sending of renew messages
udhcpc6: use a different default config script
xargs: implement -o, closes 15146
xxd -r: handle offsets
xxd -r: without -p, stop at more than one whitespace, closes 14786
xxd: fix use of non-initialized data
xxd: use bb_simple_perror_msg... where appropriate
Emanuele Giacomelli:
XXXsum: handle binary sums with " " in the path
Grob Grobmann:
vi: add 'ZQ' quitting command
Henrique Rodrigues:
ping: fix typo in --help text
Jason A. Donenfeld (10):
seedrng: import SeedRNG utility for kernel RNG seed files
seedrng: use libbb functions
seedrng: hoist bb_strtoul out of min/max
seedrng: remove some global variables
seedrng: further reduce size
seedrng: use predefined strings where possible
seedrng: avoid needless runtime strlen() call
seedrng: compress format strings with %s arguments
seedrng: code-golf even smaller
seedrng: prune header includes
Khem Raj:
apply const trick to ptr_to_globals
Louis Sautier:
pkill: add -e to display the name and PID of the process being killed
Ludwig Nussel:
libbb: mark stack in assembly files read-only
Natanael Copa (2):
awk: fix use after free (CVE-2022-30065)
more: accept and ignore -e
Paul Fox:
crond: implement support for setting PATH in crontab files
Peter Kaestle:
unzip -l: add missed big-endian conversions date and time
Roger Knecht:
tree: new applet
Ron Yorston (8):
libbb: restore special handling of nomsg errors
libbb: make '--help' handling more consistent
lineedit: get PWD from ash
ash,hush: use HOME for tab completion and prompts
vi: fix regression in autoindent handling
vi: handle autoindent in 'cc' command
vi: improved handling of backspace in replace mode
vi: fix backspace over tab in commands
Samuel Thibault:
Fix non-Linux builds
Shawn Landden:
ash: optional sleep builtin
Sören Tempel (3):
ed: add support for -s command-line option as mandated by POSIX
ash: don't read past end of var in subvareval for bash substitutions
ash: fix use-after-free in bash pattern substitution
Timo Teräs:
mkfs.vfat: fix volume label to be padded with space
Vincent Stehlé:
fdisk: recognize EBBR protective partitions
Walter Lozano:
Add support for long options to cmp
Xiaoming Ni (4):
loop: fix a race when a free loop device is snatched
loop: refactor: extract subfunction get_next_free_loop()
loop: simplify code of LOOP_SET_FD failure
loop: refactor: extract subfunction set_loopdev_params()
- 26 December 2021 -- BusyBox 1.35.0 (unstable)
BusyBox 1.35.0.
(git,
patches,
how to add a patch)
Sizes of busybox-1.34.0 and busybox-1.35.0 (with equivalent config, static uclibc build):
text data bss dec hex filename
1042344 908 14336 1057588 102334 busybox-1.34.0
1044070 908 14328 1059306 1029ea busybox-1.35.0
Changes since previous release:
Aaro Koskinen:
find: implement -samefile
Alin Mr:
ash.c: speedup ${s:} substring (no quotes)
Andrej Valek:
mktemp: add --tmpdir option
Ariadne Conill:
cpio: add support for --ignore-devno like GNU cpio
cpio: add support for --renumber-inodes like GNU cpio
Bernhard Reutner-Fischer:
chrt: silence analyzer warning
libarchive: remove duplicate forward declaration
Daniel Thau:
awk: fix printf %%
Denys Vlasenko:
config system: move some options closer to relevalnt tool subdirectories
libbb.h: fix logic selecting incorrect BB_STRTOOFF for !LFS configs
libbb/lineedit: do not escape %^=+}]:, escape ~? in tab completion
libbb: clarify what bb_mode_string() generates
libbb: code shrink bb_parse_mode
libbb: code shrink in des encryption, in setup_salt()
libbb: code shrink in main() and scripted_main()
libbb: eliminate a static data array in bb_mode_string()
libbb: make bb_lookup_port() abort on bad port names
libbb: reuse "bad port" error message string
shell/ash_test/run-all: unset locale/language variables
shell: do not read user database for every prompt - only for those which need it
shell: enable more tests which are passing now
shell: fix arithmentic evaluation of "++7" and such (it is + + 7, i.e. 7)
shell: fix parsing of $(( (v)++ + NUM ))
shell: fix script's comm field if ENABLE_FEATURE_PREFER_APPLETS=y
shell: use more compact SHELL_ASH / HUSH config defines. no code changes
ash: LINENO starts from 0 in -c SCRIPT mode
ash: eval: Check nflag in evaltree instead of cmdloop
ash: eval: Do not cache value of eflag in evaltree
ash: eval: Prevent recursive PS4 expansion
ash: fix LINENO in functions
ash: fix compile breakage in !ENABLE_ASH_ALIAS config
ash: introduce bash-like $FUNCNAME
ash: parser: Fix alias expansion after heredoc or newlines
ash: parser: Fix handling of empty aliases
ash: parser: Get rid of PEOA
ash: parser: Save and restore heredoclist in expandstr
ash: speed up ${x//\*/|} too, make it independent of ASH_OPTIMIZE_FOR_SIZE
ash: support testsuite for !FEATURE_SUID_CONFIG_QUIET configs
ash: use pgetc_eatbnl() in more places, take 3
hush: fix set -n to act immediately, not just after run_list()
hush: fix var_LINENO3.tests failure
hush: speed up ${x//\*/|} too
awk: code shrink: avoid duplicate NUL checks and strlen()
awk: never return NULL from awk_printf()
basename: implement -a and -s SUFFIX
blkdiscard: accept -f (force) as no-op
bzip: make ftab[] and crc32table[] member arrays of EState, do not allocate
chat: hopefully fix infinite spinning on input EOF
chmod: correctly report changed modes
df: "support" -H as an alias of -h
dhcprelay: change two more variables to unsigned
find: code shrink -{m,a,c}{time,min}
httpd: do not send Last-Modified / ETag / Content-Length for error pages
httpd: fix config deps
httpd: if range is not specified, correctly fall back to read/write loop
httpd: fix compile failure if !FEATURE_HTTPD_RANGES
mount: "mount -o rw ...." should not fall back to RO mount
mount: with -w, do not fall back to read-only mounts
ps: fix -o pid=PID,args interpreting entire "PID,args" as header
resize: use tcgetattr(TCSAFLUSH) instead of TCSANOW, closes 13811
shuf: in -i RANGE, accept numbers up to width of pointers
shuf: make -i 99999999990-100000000000 work even on 32 bits
shuf: with -i LOW-HIGH, do not allow any argv's
tar,smemcap: commonalyze checksumming code for tar header
tar: prevent malicious archives with enormous long name sizes OOMing the machine
tls: "server cert is not RSA" is a fatal error
tls: replace "26-bit" P256 code with 32-bit one
tls: x25519: code shrink by factoring out common code
udhcp: fix build breakage on MIPS
udhcpc6: fix udhcp_find_option to actually find DHCP6 options
udhcpd: check config file for bad IP ranges (start > end)
uudecode: special-case "/dev/stdout", closes 14241
xxd: fix -p -r, closes 13881
Dominique Martinet:
sed: do not ignore 'g' modifier when match starts with ^
Ildar Shaimordanov:
wget: allow end-users to customize Content-Type for --post-data and --post-file
Ismael Luceno:
less: Ignore -X
config: find: Fix mtime/mmin description
find: Unify time comparisons
find: implement -amin, -atime, -cmin, and -ctime
Martin Kaiser:
Makefile.flags: use all cflags for crypt and rt checks
Matthew Slowe:
timeout: add support for "timeout -k KILL_SECS"
Nicholas Niro:
ip: added support for setting netns on devices
Peter Korsgaard:
libarchive/get_header_ar.c: fix extraction of archives from binutils in deterministic mode
Roberto A. Foglietta:
ash: add bash-like ERR trap and set -E
Ron Yorston:
libbb: better coreutils compatibility for realpath
libbb: code shrink parse_datestr
libbb: ensure mode_string is NUL terminated
ash: fix ignoreeof option
ash: let ignoreeof only affect interactive shells
ash: regressions in process substitution
ash: stopped jobs should only prevent exit from interactive shell
awk: fix read beyond end of buffer
cal: implement -m
date,touch: allow timezone offsets in dates
getopt: code shrink
printf: allow 0 as a flag and allow multiple flags
rev: correct output for long input lines
shuf: speed-up when limited output is requested
tar,smemcap: silence compiler warning
vi: changes to handling of -c and EXINIT
vi: code shrink print_literal()
vi: don't right shift empty lines
vi: further changes to colon addresses
vi: searches in colon commands should wrap
vi: support ~/.exrc
wget: implement --post-file
Sergey Ponomarev:
httpd,telnetd: make default port configurable
Sören Tempel:
ed: align output of read/write commands with POSIX-1.2008
ed: add support for -p command-line option as mandated by POSIX
ed: fix current line number for file passed via the command-line
ed: align output of read command with POSIX.1-2008
Walter Lozano:
cmp: add support for -n
YU Jincheng:
*: generalize "const trick"
Make const ptr assign as function call in clang
- 30 November 2021 -- BusyBox 1.33.2 (stable)
BusyBox 1.33.2.
(git)
Bug fix release. 1.33.2 has fixes for
hush and ash (parsing fixes) and
unlzma (fix a case where we could read before beginning of buffer).
- 30 September 2021 -- BusyBox 1.34.1 (stable)
BusyBox 1.34.1.
(git)
Bug fix release. 1.34.1 has build fix for MIPS, fixes for
ash (regression in process substitution),
awk (printf fix),
chat (fix infinite spinning on input EOF).
- 19 August 2021 -- BusyBox 1.34.0 (unstable)
BusyBox 1.34.0.
(git,
patches,
how to add a patch)
Please note that awk had a number of changes. Report any breakage to the mailing list.
Sizes of busybox-1.33.0 and busybox-1.34.0 (with equivalent config, static uclibc build):
text data bss dec hex filename
1032724 908 14344 1047976 ffda8 busybox-1.33.0
1042344 908 14336 1057588 102334 busybox-1.34.0
Changes since previous release:
Alex Samorukov:
Do not add -lresolv on non-Linux systems
Fix bb_setpgrp weapper on the FreeBSD
Fix httpd compilation on the FreeBSD
Fix klogd applet compilation on the FreeBSD
Fix missing "crypt.h" compilation error on the FreeBSD
Fix mknod compilation on the FreeBSD
Fix ntpd compilcation on the FreeBSD
Fix ping build on the FreeBSD
Fix traceroute applet on the FreeBSD
Fix mail compilation on the FreeBSD
Fix for the FEATURE_UTMP on the FreeBSD
Alexander Sack:
httpd: cgi-bin support for DELETE, PUT, OPTIONS etc methods
Alison Winters:
vi: restore 0 offset after :set noXXX command
vi: allow writing to another file if this one is readonly
Andre Kalb:
udhcpc: Add support to change default interface name
Bernd Kuhls:
update_passwd: fix context variable
Chris Renshaw:
gcc-version.sh: fix for "invalid number" message during Android NDK builds
Denys Vlasenko:
Makefile.flags: add a test for -lrt availability
gcc-version.sh: Cygwin fix
trylink: do not drop libs from CONFIG_EXTRA_LDLIBS
platform.h: fix for Bionic >= 21 not having wait3()
libbb.h: inline byteswaps
libbb/procps: smaller global data for username/groupname cache
libbb: correct the name of is_TERM_dumb()
libbb: do not check closedir() in remove_file()
libbb: fix '--help' handling in FEATURE_SH_NOFORK=y
libbb: introduce and use xgettimeofday(), do not truncate 64-bit time_t in shells
decompress_gunzip: simplify ERR_RET bit clearing
e2fsprogs/*: remove ioctl calling obfuscation
move iterate_on_dir() from e2fsprogs to libbb
tls: implement secp256r1 elliptic curve (aka P256)
tls: "server did not provide EC key" is fatal
tls: get rid of constant-time add/sub operations
tls: make constant basepoint9[32] array 8-byte aligned
tls: make x25519 key generation code more similar to P256
tls: reduce register pressure in i386 assembly (helps Android to compile)
ascii: new applet
crc32: new applet
shells: do not allow bare "read" in non-bash compat configs
ash: fix ${unset_var/pattern/repl}
ash: make a strdup copy of $HISTFILE for line editing
ash: match bash behavior for ${empty_var/*/repl}
ash: parser: Fix VSLENGTH parsing with trailing garbage
ash: placate -Werror=format-security
ash: save Ron's patch from oblivion
ash: speed up ${v//pattern/repl} if !ASH_OPTIMIZE_FOR_SIZE
hush: beautify ^D handling to match ash / bash
hush: fix bkslash+newline handling and number validation in ${NN} and ${#NN}
hush: fix handling of "cmd && &"
hush: fix handling of \^C and "^C"
hush: implement $'str' bashism
hush: make LINENO selectable without BASH-COMPAT
hush: optimize ${var/pattern/repl} for trivial patterns
awk: after preinc/dec, only allow variable, field ref, array ref, or another preinc/dec
awk: allow empty functions with no arguments, disallow function redefinitions
awk: disallow break/continue outside of loops
awk: do not special-case "delete"
awk: do not use a copy of g_progname for node->l.new_progname
awk: document which hashes are used at what state (parse/execute)
awk: enforce simple builtins' argument number
awk: evaluate all, even superfluous function args
awk: fix beavior of "exit" without parameter
awk: fix corner case in awk_printf
awk: fix detection of VAR=VAL arguments
awk: fix parsing of expressions such as "v (a)"
awk: fix printf "%-10c", 0
awk: fix printf buffer overflow
awk: fix use-after-free in "$BIGNUM1 $BIGGERNUM2" concat op
awk: free unused parsing structures after parse is done
awk: g_buf[] does not need a separate allocation
awk: get rid of "move name one char back" trick in next_token()
awk: in parsing, remove superfluous NEWLINE check; optimize builtin arg evaluation
awk: make ltclass ("last token class") local to next_token()
awk: more efficient -f FILE
awk: move locals deeper into scopes where they are used, no logic changes
awk: move match() code out-of-line
awk: rand() could return 1.0, fix this - should be in [0,1)
awk: remove custom pool allocator for temporary awk variables
awk: remove redundant check
awk: replace incorrect use of union in undefined function check (no code changes)
awk: restore strdup elision optimization in assignment
awk: rewrite "print" logic a bit to make it clearer
awk: rollback_token() + chain_group() == chain_until_rbrace()
awk: shuffle globals for smaller offsets
awk: simplify parsing of function declaration
awk: simplify tests for operation class
awk: support %F %a %A in printf
awk: tighten parsing - disallow extra semicolons
awk: tighten rules in action parsing
awk: unbreak "cmd" | getline
awk: unbreak "printf('%c') can output NUL" testcase
awk: undo TI_PRINT, it introduced a bug (print with any redirect acting as printf)
awk: use static tmpvars in main and exit
awk: use smaller regmatch_t arrays, they had 2 elements for no apparent reason
awk: use static tmpvars instead of nvalloc(1)ed ones
awk: when parsing TC_FUNCTION token, eat its opening '('
awk: when parsing length(), simplify eating of LPAREN
base32/64: accept -i "skip bad chars" option (currently in effect unconditionally)
bc,dc: make BC_LINE_LENGTH/DC_LINE_LENGTH more compatible with GNU
bc,dc: fix length(0) and length(0.000nnn) result
bc: ^C on input line exits (unlike ^C during calculations, which does not)
bc: code shrink: combine init() and copy() where we can
bc: fix for mul overflow in scale calculation in a^b
blockdev: support --get/setra
chattr: fix "chattr =ae -R FILE"
chattr: if IOC_FSGETXATTR fails, do not try IOC_FSSETXATTR
chattr,lsattr: share stat error message
chattr,lsattr: do not open e.g. device files unless asked directly; do not follow links
chattr,lsattr: support -p
lsattr: support more ext2 flags
cksum: fix handling of read errors
cp: implement -n
cp: implement -t DIR
cpio: fix "cpio -d -p A/B/C"
df: POSIXLY_CORRECT sets _default_ scale, -m/-h overrides it
df: support -t TYPE
dnsd: check that we don't read past packet
du: support -b "apparent size"
echo: fix !ENABLE_FEATURE_FANCY_ECHO build
echo: special case "echo --help": it should not show help text
env: implement -0
free: implement -h
hexdump: fix error message
httpd: avoid extra stat() calls for "GET /dirname/" case
httpd: avoid one stat() call for "GET /dirname" case
httpd: if no request was given at all, close the socket without generating error page
httpd: move proxy check before URL duplication and request type check
httpd: no need to strcpy() when we only need to copy one byte
httpd: support HEAD requests even in !CGI config
inetd: deinline machtime() - gcc gets it wrong
ionice: implement -t
login: implement LOGIN_TIMEOUT
lsof: print fd# too
man: fix segfault in "man 1"
modprobe: when reading modules.builtin, use basenames of files from it
mv: implement -t and -T
nslookup: do not print "No answer" for NODATA replies, closes 13006
ntpd: decrease INITIAL_SAMPLES from 4 to 3
ntpd: increase loglevel to 3 for "poll:32s sockets:0 interval:64s" message
ntpd: log responses to clients at log level 3
ntpd: remove unused USING_INITIAL_FREQ_ESTIMATION code
ntpd: tweak comments
ntpd: without INITIAL_FREQ_ESTIMATION code, state variable is not needed too
nuke: default to N
pmap: fix column width, closes 13431
resume: write offset in /sys/power/resume_offset
runsv: code shrink: use single handler function for SIGTERM and SIGCHLD
runsv: robustify signal handling - SIGTERM to child between vfork and exec could mess things up
shred: implement -s SIZE
shred: with -u, unlink file even if it is zero length
shuf: simplify check that we have at least one FILE
start-stop-daemon: explain -x + -a test
svlogd: if processor's stdin can not be opened, do not try ad infinitum
switch_root: code shrink - use iterate_on_dir()
tail: do not lose the tail of old file if new file (-F) is detected
tail: fix typo in variable name
tar: simplify addition of --exclude=GLOB to the expansion of -X EXCLFILE
taskset: disallow "taskset -p 0"
taskset: fix for PID longer than 12 chars
taskset: implement -a
taskset: use iterate_on_dir()
tc: fix for parsing of "dev IFACE" and printing of "class list"
tcp/udpsvd: robustify SIGCHLD handling
telnetd: give inetd.conf example in --help
timeout,top,watch,ping: parse NN.N fractional duration in locales with other separators
touch: fix -am
touch: fix SEGV if !ENABLE_FEATURE_TOUCH_SUSV3
touch: make FEATURE_TOUCH_NODEREF unconditional
touch: switch to using utimensat() and futimens()
touch: unbreak -h
traceroute: fix compile error due to FreeBSD compat
traceroute: fix option parsing
udhcp: convert log1s() macro to function
udhcp: shrink arpping()
udhcpc: clarify bcast/unicast sends in logs, include server ID
udhcpc: do not use inet_addr() to parse -r REQ_IP, it's deprecated
udhcpc: get rid of client_data.fqdn field
udhcpc: ignore zero-length DHCP options
udhcpc: improve logs - show offer as it is received
udhcpc: include client-id option in DECLINEs, even if it's a custom -x 61:HEX option
udhcpc: remove deprecated -H/-h HOSTNAME options (9 years)
udhcpc: rename server_addr to server_id, fix id comparison if it's not specified
udhcpc: send client-id option in DHCPDECLINE
udhcpc[6]: close listening socket more eagerly (e.g. across script runs)
udhcpc[6]: do not pass xid around, keep it in client_data.xid
udhcpc[6]: fold perform_renew() into its only caller
udhcpc[6]: on SIGUSR1, do not go from rebind to renew state
udhcpc[6]: remove superfluous "created raw socket" log message
udhcpc[6]: untangle "timeout" and "remaining lease"; reduce min lease to 30 seconds
udhcpc[6]: when renewing, send 1 packet (not 3), on failure go back to BOUND
uniq: support -z
unlzma: fix a case where we could read before beginning of buffer
unzip: add -t
unzip: fix for .zip archives with >4GB file
vi: allow regular expressions in ':s' commands
vi: move undo_queue_state in globals to other byte-sized members
xxd: do not try reading from closed stdin when non-existent file is given
xxd: implement -i "C style output"
xxd: implement -o DISPLAYOFFSET
Eicke Herbertz:
shell: also do word splitting when -d DELIM is used
Harald van Dijk:
tar: exclude files before updating hardlink info list
Jeremy Lin:
wget: allow HTTP 307/308 redirects
Ján Sáreník:
run-parts: permit dot later in file name
Khem Raj:
gen_build_files: Use C locale when calling sed on globbed files
Mario Abajo:
login: permit change expired password wit PAM
Martin Kaiser:
Makefile.flags: fix the OS detection for libresolv
Maxim Storchak:
httpd: fix offset for sendfile
Natanael Copa:
echo: do not assume that free() leaves errno unmodified
lineedit: fix tab completion with equal sign
Paul Spooren:
nslookup: mention QUERY_TYPE SRV
build system: use SOURCE_DATE_EPOCH for timestamp if available
Rafał Miłecki:
dd: support iflag=count_bytes
Rasmus Villemoes:
watchdog: make open-write-close-open functionality a config knob
Rob Landley:
cut: add toybox-compatible options -O OUTSEP, -D, -F LIST
Ron Yorston:
bloat-o-meter: avoid double counting
build system: avoid build failure during bisection
libbb: code shrink and speed up find_applet_by_name()
libbb: code shrink and speed up index_in_strings()
libbb: code shrink fgets_str
libbb: introduce and use fputs_stdout
lineedit: support empty PATH entries in tab completion
ash: add process substitution in bash-compatibility mode
awk: allow printf('%c') to output NUL, closes 13486
cp,mv: fix -t DIR option
cp: fix build failure with long options disabled
cryptpw: typo in usage message
diff: code shrink
nl: ensure '-b n' option displays file content
uniq: really support -z
vi: ':r' should insert text after current line
vi: 'G'/'M' commands move to first visible character
vi: 'ZZ' should warn if there are more files to edit
vi: :wq/:x should warn if there are more files to edit
vi: add expandtab option
vi: adjust conditional compilation of modifying_cmds
vi: allow 'gg' to specify a range
vi: allow 'r' command to be aborted, repeated
vi: allow backward search to specify line address
vi: allow ctrl-D to reduce indentation
vi: allow delimiter in ':s' to be escaped
vi: allow line addresses to have an offset
vi: allow motion count for change/delete/yank/shift
vi: allow repetition count for paragraph motion
vi: allow the '.' command to have a repetition count
vi: changes to line addresses for colon commands
vi: changes to option handling
vi: code shrink colon line addresses
vi: code shrink motion by paragraph
vi: code shrink search commands
vi: correct autoindent for 'O' command
vi: correctly record deleted characters
vi: cursor positioning after whole-line 'y'
vi: deal with invalid movements in shift commands
vi: detect and warn about invalid line addresses
vi: don't move cursor when yanking whole lines
vi: don't overwrite existing file
vi: expand '%' and '#' in colon commands
vi: fix backward search with GNU regex
vi: fix buffer overrun; code shrink
vi: fix empty line range regression
vi: fix range selection by forward character motion
vi: fix regex search compilation error
vi: fix word operations across line boundaries
vi: improve handling of anchored searches
vi: improve motion by paragraph
vi: improve operations involving paragraph movement
vi: improvements to ':read' command
vi: improvements to character search within line
vi: improvements to range selection
vi: improvements to reporting of changes
vi: improvements to undo
vi: initialise tabstop once not for each file
vi: issue a warning on failure to find a character
vi: keep autoindent if line isn't empty
vi: make autoindent respect expandtab setting
vi: make buffer handling more vi-like
vi: make context marks more like vi
vi: make cursor positioning more vi compatible
vi: make de-indentation with ctrl-D more like vim
vi: make put commands more like vi
vi: make the substitute command more like vi
vi: more fixes to range selection by word
vi: position cursor on last column of tab
vi: preserve state when switching file
vi: reject change command when motion fails
vi: remember cursor column during vertical motion
vi: remove autoindent from otherwise empty lines
vi: reset command count when specifying '0' range
vi: saving unnamed file in readonly mode
vi: stored search pattern applies to ':s'
vi: support more commands for range selection
vi: up/down motion beyond end of file should fail
vi: use basic regular expressions for search
Russell Senior:
udhcpc: ignore zero-length DHCP options
S Harris:
cpio: fix sscanf on unterminated buffer
vi: fix read outside of text buffer during insert
Samuel Sapalski:
decompress_gunzip: Fix DoS if gzip is corrupt
Sergey Ponomarev:
wget: new option FEATURE_WGET_FTP to enable/disable FTP
httpd_post_upload.cgi: use mktemp to avoid $RANDOM
Seth David Schoen:
udhcpd: don't hardcode treating .0 and .255 specially
Sören Tempel:
ls: don't output any colors with TERM=dumb
Xabier Oneca:
touch: add SUSv3 options -a and -m
touch: fix atime set from reference file
touch: remove unneeded GETOPT32 defines
touch: prevent usage of -r and -t at once
- 3 May 2021 -- BusyBox 1.33.1 (stable)
BusyBox 1.33.1.
(git)
Bug fix release. 1.33.1 has fixes for
httpd (sendfile now works),
ash (HISTFILE corruption, unset variable pattern expansion),
passwd (SELinux fix),
traceroute (option parsing fix),
gunzip (fix for corrupted archive).
- 1 January 2021 -- BusyBox 1.32.1 (stable)
BusyBox 1.32.1.
(git)
Bug fix release. 1.32.1 fixes a case where in ash, "wait" never finishes.
- 29 December 2020 -- BusyBox 1.33.0 (unstable)
BusyBox 1.33.0.
(git,
patches,
how to add a patch)
Sizes of busybox-1.32.0 and busybox-1.33.0 (with equivalent config, static uclibc build):
text data bss dec hex filename
1020219 481 7460 1028160 fb040 busybox-1.32.0
1021980 481 7456 1029917 fb71d busybox-1.33.0
Changes since previous release:
Andy Shevchenko
modprobe: add support for modprobe.blacklist=module1,module2,...
Audun-Marius Gangstø:
lineedit: fix unicode characters in prompt
Christian Eggers:
shell: fix "read -d ''" behavior
ip: add support for "noprefixroute" option
ip address: add support for "valid_lft" and "preferred_lft" options
chrt: support for musl C library
Cristian Ionescu-Idbohrn:
fix warning: label 'out1' defined but not used
Denys Vlasenko:
avoid using strtok - eliminates use of hidden global variable
use write_str() functions where appropriate
fixes for Hurd build
move ADJTIME_PATH define to header files
examples: remove /sbin/ prefixes, system should be configured with $PATH to find utilities
build system: combat gcc zealotry in data alignment
build system: make -static-libgcc selectable in config
libbb: add and use infrastructure for fixed page size optimization
libbb: bb_do_delay(3) -> pause_after_failed_login(), and stop looping there
libbb: change decode_base32/64 API to return the end of _dst_, not _src_
libbb: create and use mmap() helpers
libbb: do not compile selinux_or_die() if !SELINUX
libbb: do not open-code __errno_location() call
libbb: exec_login_shell() - new function
libbb: extend "errno pointer" trick to other than __GLIBC__
libbb: fold common64_hash() into its only user
libbb: in @SECONDS date format, use 64-bit time if libc allows
libbb: introduce and use msleep()
libbb: introduce and use sleep1()
libbb: introduce and use xsettimeofday()
libbb: make msleep() result in only one syscall instead of looping
libbb: make pw_encrypt() die if supplied salt is bad (e.g. emply)
libbb: rename run_shell() to exec_shell()
libbb: shrink last_char_is(), no longer allow NULL string argument
libbb: shrink recursive_action() by reducing memory pressure
libbb: smaller and faster decode_base64()
libbb: trim base32/64 tables
unicode: fix handling of short 1-4 char tables
unicode: relax array alignment for tables
lineedit: disable completion and fancy prompts if no shells are selected
lineedit: remove ->path_lookup if ash is not configured
lineedit: use strncmp instead of is_prefixed_with (we know the length)
networking: support ftp PASV responses not ending with ')'
ash: clear ungetc counter on syntax errors
ash: jobs: Fix infinite loop in waitproc
ash: jobs: Fix waitcmd busy loop
ash: make interactive ^C break out of PS2 mode
ash: reset SIGHUP earlier: allows HUP traps in .profile, closes 13371
hush: NOMMU fix for hush-psubst/tick6.tests
hush: deal with FIXMEs for corner cases in parameter expansion
hush: do not print killing signal name in `cmd_which_dies_on_signal`
hush: fix -c SCRIPT handling
hush: fix PS1 prompth in !EDITING config
hush: fix ^C in INTERACTIVE, !EDITING config
hush: fix this case: echo "SCRIPT" | hush
hush: if !EDITING, do not regenerate prompt for every input char
hush: if login shell, also source ~/.profile
hush: output bash-compat killing signal names
hush: remove one redundant getpid() on every startup
shell: better support of [[ ]] bashism
shell: for signal exitcode, use 128 | sig, not 128 + sig - MIPS has signal 128
shell: remove FAST_FUNC from a static function
shell: a fix for systems without RLIMIT_NICE
awk: FS regex matches only non-empty separators (gawk compat)
awk: add a test that $NF is empty
awk: fix dodgy multi-char separators splitting logic
base32: new applet
base32/64: decode in-place
base32/64: implement -w COL
bc: do not allocate line editing state until needed
date: for -uR and -uIh, timezone still has to be shown as +hhmm, not as abbreviation
date: remove non-standard special-casing of date '+%f'
date: support -Ins, more compatible timezone display in -I
dd: support for O_DIRECT i/o
factor: 30% faster trial division (better sieve)
factor: detect squares
grep: for -L, exitcode 0 means files *without* matches were found, closes 13151
hexdump: fix duplicate block comparison
hwclock: fix musl breakage of settimeofday(tz)
login: log to syslog every bad password, not only 3rd
mail: commonalize send_r_n()
mail: deobfuscate launch_helper()
mail: launch_helper(): flush stdio before vfork, set G.helper_pid only in parent
mail: move "opts" from globals
man: implement SECTION parameters
mdev: clear LOGMODE_STDIO only directly before daemonizing
mount: add -o nostrictatime and -o [no]lazytime
mount: implement -o nosymfollow, remove bogus -o union
mount: do not guess bind mounts as NFS
mount: do not guess mount as NFS if "hostname:" contains slashes
mount: fix a race when a free loop device is snatched under us by another mount
mount: fix incorrect "success" exitcode if loop device setup fails
nsenter: stop option parsing on 1st non-option
ntpd: allow non-root to run it (e.g. with -w option)
ntpd: fix refid reported in server mode, closes 13056
ntpd: fix the case where two replies received at once and first one causes a step
ping: fix -wN to not think that one packet is always lost
tar: fix fallout of last_char_is(NULL) no longer being allowed
traceroute: avoid collecting target local address if !VERBOSE
traceroute: commonalize verbose printing
traceroute: don't set SO_DONTROUTE on recv socket, it only affects send
traceroute: even with -v, don't show other ping processes replies
traceroute: fix traceroute6 -I (icmp mode)
traceroute: make "ipv4 or ipv6?" cheaper to find out
traceroute: set IP_PKTINFO to see correct local IP of received pkt (fixes -v display)
traceroute: simpler hexdump()
traceroute: untangle main loop
udhcp: remove struct packing attribute, eliminates gcc-9.x warning
udhcpc6: code shrink - sending functions do not need ifindex parameter
uevent: increase netlink buffer sizes
uevent: make it survive ENOBUFS
uudecode: fix possible signed char bug
volume_id: improve struct layout (smaller offesets, smaller insns on x86)
wget: do not ftruncate if -O- is used, closes 13351
xargs: fix -I SUBSTR behaviour
xxd: fix printing of trailing spaces
xxd: compat: move hexdump -R functionality to xxd -r
Eddie James:
hwclock: fix settimeofday for glibc v2.31+
Gray Wolf:
crontab: fix -e with editors saving using renaming strategy
Jan Klötzke:
libbb: set netlink socket revbuf size before binding
mdev: increase netlink buffer sizes
mdev: move daemon setup to dedicated function
mdev: re-initialize if uevent messages were lost
mdev: add syslog logging mode
mdev: add -v to increase log verbosity
Joachim Nilsson:
login: update UTMP before forking
syslogd: delay PID file creation until syslogd is ready
archival: avoid std namespace for local includes
Lauri Kasanen:
mount: surround syslog.h with the config check
Martin Lewis:
udhcp: add option scanner
udhcpc: fix a TODO in fill_envp using option scanner
procps: code shrink
compare_string_array: code shrink
domain_codec: optimize dname_dec and convert_dname
udhcpc: add support for long options
Michal Kazior:
udhcp: bind to device even for ucast packets
Norbert Lange:
nc_bloaty: support udp broadcast ports
dpkg: prevent important directories from being removed
dhcpd: remove hardcoded pidfile path
acpid: only display -p if supported in usage
util-linux: support erofs filesystem
Ron Yorston:
build system: drop PLATFORM_LINUX
lineedit: omit directories when tab-completing from PATH
lineedit: match local directories when searching PATH
Rui Salvaterra:
ip rule: add support for fwmark/fwmask for policy routing
Scott Court:
wget: fix openssl options for cert verification
Sergey Ponomarev:
httpd_indexcgi.c: minimize style CSS
httpd_indexcgi.c: use CSS for odd/even rows
httpd: update to HTTP/1.1
httpd: don't add Date header to response
httpd: don't add Last-Modified header to response
httpd: support caching via ETag header
httpd: make Deny/Allow by IP config support optional
Steffen Trumtrar:
mount: support the sizelimit and offset option for loop devices
Xabier Oneca:
httpd: code shrink
mkdtemp: proper error detection on mktemp
- 26 June 2020 -- BusyBox 1.32.0 (unstable)
BusyBox 1.32.0.
(git,
patches,
how to add a patch)
Sizes of busybox-1.31.1 and busybox-1.32.0 (with equivalent config, static uclibc build):
text data bss dec hex filename
1011750 483 7468 1019701 f8f35 busybox-1.31.1
1015340 482 7460 1023282 f9d32 busybox-1.32.0
Changes since previous release:
Aaro Koskinen:
find: implement -empty
Alistair Francis (4):
date: Use 64 prefix syscall if we have to
time: Use 64 prefix syscall if we have to
runsv: Use 64 prefix syscall if we have to
Remove stime() function calls
Biswapriyo Nath:
Makefile.flags: restrict Wno-constant-logical-operand and Wno-string-plus-int options for clang
Brian Foley (3):
dc: execute shouldn't pop if stack head is not a string
dc: Fix segfault when executing strings generated using asciify
dc: Parse error & fix out of bounds read in xc_program_printString
Daniel Edgecumbe (3):
gzip: default level with ENABLE_FEATURE_GZIP_LEVELS should be 6
gzip: set compression flags correctly as per standard
gzip: set default compression level to 6 when CONFIG_FEATURE_GZIP_LEVELS=n
David Demelier:
wget: increase redirections limit
Denys Vlasenko:
build system: suppress some clang-9 warnings
examples/udhcp/simple.script: up interface on deconfig event
libbb: remove syscall wrappers around clock_gettime, closes 12091
libbb: clang/llvm 9 fix - do not eliminate a store to a fake "const"
libbb: deal with "declaration of 'link' shadows a global declaration" warning
libbb: include <crypt.h> only if necessary
ash,hush: add comment about masked SIGCHLD, handle SIG_IGNed SIGHUP as in bash
ash,hush: testcase for "exit" without arguments in a trap
ash: Expand here-documents in the current shell environment
ash: Return without arguments in a trap should use status outside traps
ash: [BUILTIN] Exit without arguments in a trap should use status outside traps
ash: builtin: Mark more regular built-ins
ash: eval: Add assignment built-in support again
ash: eval: Always set localvar_stop
ash: eval: Fail immediately with redirections errors for simple command
ash: eval: Only restore exit status on exit/return
ash: eval: Reap zombies after built-in commands and functions
ash: eval: Replace with listsetvar with mklocal/setvareq
ash: eval: Use the correct expansion mode for fd redirection
ash: exec: Do not allocate stack string in padvance
ash: exec: Never rehash regular built-ins
ash: exec: Stricter pathopt parsing
ash: expand: Do not reprocess data when expanding words
ash: expand: Ensure result is escaped in cvtnum
ash: expand: Fix multiple issues with EXP_DISCARD in evalvar
ash: expand: Fix skipping of command substitution when trimming in evalvar
ash: expand: Fix trailing newlines processing in backquote expanding
ash: expand: Merge syntax/quotes in memtodest with flags
ash: expand: Use HOME in tilde expansion when it is empty
ash: fix BASE###nn bashism for bases 36..64
ash: fix BASE###nn bashism to accept letter 'digits' for bases > 9
ash: fix set -o to not show "nameless" options
ash: jobs - Do not block when waiting on SIGCHLD
ash: jobs: Only clear gotsigchld when waiting for everything
ash: jobs: Replace some uses of fmtstr with stpcpy/stpncpy
ash: main: Only set savestatus in exitcmd
ash: main: Print \n upon EOF (CTRL-D) when run interactively
ash: memalloc: Add growstackto helper
ash: memalloc: Avoid looping in growstackto
ash: mkinit: Split reset into exitreset and reset
ash: output: Fix fmtstr return value
ash: parser: Do not push token back before parseheredoc
ash: parser: Fix incorrect eating of backslash newlines
ash: parser: Fix old-style command substitution here-document crash
ash: parser: Only accept single-digit parameter expansion outside of braces
ash: parser: Save/restore here-documents in command substitution
ash: rename some function parameters to match dash
ash: rename stack_nputstr() back to stnputs() to match dash
ash: shell: Fix clang warnings about "string plus integer"
ash: use pgetc_eatbnl() in more places, take 2
hush: fix "set -o INVALID" affecting -e flag state
hush: fix negative_arith.tests: glob-protect dash in "$((arith))"
hush: fix preprocessor directives indentation
hush: implement "return NUM in trap sets $? after trap"
hush: make "exit" in trap use pre-trap exitcode
hush: make "exit" in trap use pre-trap exitcode - fix for nested trap
hush: restore redirected stdin
awk: disallow "str"++, closes bug 12981
awk: fix more "length" cases, closes 12486
bc: fix comparison bug, closes 12336
brctl: fold show_bridge_ports into its caller
dpkg-deb: work around bogus error message when working with XZ compressed packages
fdisk: add HFS / HFS+ partition type
fdisk: avoid overflow in "mega/gigabytes" calculation, code shrink
gunzip: code shrink by using int-, not short-sized struct member
gunzip: fix incorrect decoding of "fixed" inflate blocks
gzip: -d with zcat enabled but gunzip disabled was misbehaving
init: if tcgetattr() fails, don't even try to tcsetattr()
init: improve handling of signals racing with each other
nmeter: add %T (zero-based timestamp) format
nmeter: do not clamp down %Nc to minimum of 10 (think nmeter "%`nproc`c")
nologin: make it possible to build it as single applet
ntpd: abort if argvs are (unexpectedly) given
ntpd: abs(tmx.offset) was truncating a "long" typed value
ntpd: add comment about mode6, no code changes
ntpd: commonalize message strings
ntpd: decrease MIN_FREQHOLD by 2, increase "penalty" for largish offset x2
pidof: support "pidof /path/to/binary" case
readlink,realpath: fix a case with a symplink, closes 11021
stat: print nanosecond times, fix printing of empty lines
sysctl: do report EACCES errors on write
tar: change -a from meaning "lzma" to mean "autodetect by extension"
taskset: add support for taking/printing CPU list (-c option)
taskset: implement stride argument
taskset: tighten the check for stride values
tc: array address is never NULL
tee: do not intercept SIGPIPE
telnet: add disabled code to emit EC and IP
telnet: fix uninitialized variable bug
tftp: on download, open local file only when first bit of data arrived
tftpd: show requested file name in open error message
top: do not use previous collected data wheh "h" toggles threads display
udhcp: comment out unused domain compression code
udhcpc6: add ELAPSED_TIME option to outgoing packets
udhcpc6: s/iphdr/ip6_hdr/
udhcpd: mangle hostnames starting with dash ("-option")
whois: limit total length of response to 32+2 kb
Dimitri John Ledkov:
wget: implement TLS verification with ENABLE_FEATURE_WGET_OPENSSL
Eivind Versvik:
udhcpc6: support stateless DHCPv6
Gray Wolf:
grep: Fix -f FILE when FILE is empty and -x provided
James Byrne (2):
libbb: reduce the overhead of single parameter bb_error_msg() calls
config: PID_FILE_PATH required for FEATURE_CROND_SPECIAL_TIMES
Jean-Philippe Brucker:
build system: remove KBUILD_STR()
Jo-Philipp Wich (2):
nslookup: handle replies without RRs
nslookup: implement support for SRV records
Kaarle Ritvanen:
ln: --no-target-directory implies --no-dereference
Kang-Che Sung:
bc: Add 'U' suffix in UINT_MAX preprocessor check
Lauri Kasanen:
unzip: -d should create the dir
Liu, Shuang (ADITG/ESM):
chgrp: correct the usage for non-desktop chgrp calls
Lukas Rusak:
free: include SReclaimable in cached value
Mark Edgar:
unexpand: correct behavior for --first-only --tabs=4
Martin Lewis (8):
libbb: Converted safe_read to safe_write format
replace: count_strstr - Handle an edge case where sub is empty
xstrndup: Use strndup instead of implementing it
brctl: add support for showmacs command
brctl: add support for showstp command
dhcpc.c: Added support for relay server parameter
dhcpc: code shrink in good_hostname
dhcpc: refactor xmalloc_optname_optval to shrink binary size
Michal Kazior:
udhcpc: fix segmentation fault on empty bin opt
Peter Korsgaard:
syslogd: add config option to include milliseconds in timestamps
Rolf Eike Beer:
examples/udhcp/simple.script: print the filename actually changed
Ron Yorston (13):
mim: new applet: run scripts from a specification file
ash,hush: allow builtins to be tab-completed, closes 7532
ash,hush: drop pointer check before calls to show_history
ash: fix build failure when command built-in is disabled
ash: only catch unexpected exceptions in PS1 expansion
ash: improve expandstr()
ash: return exit status of nofork applets (again)
ash: move TRACE statement in evalcommand()
httpd: permit non-default home directory with NOMMU enabled
httpd: allow '-h' to work when daemonized with NOMMU enabled
vi: fixes to string search in colon commands, closes 10321
xargs: fix handling of quoted arguments, closes 11441
xargs: restore correct behaviour of -n option
Stefan Agner:
examples/udhcp/simple.script: fix IPv6 support when using udhcpc
Sören Tempel (2):
grep: add proper support for pattern_list
deluser: check if specified home is a directory before removing it
Tomas Paukrt:
route: fix output of "route -n -A inet6"
Tomi Leppanen:
grep: add -R
Uwe Glaeser:
udhcpc6: use correct multicast MAC
- 25 October 2019 -- BusyBox 1.31.1 (stable)
BusyBox 1.31.1.
(git)
Bug fix release. 1.31.1 has fixes for
dc, ash (PS1 expansion fix), hush, dpkg-deb, telnet and wget.
- 10 June 2019 -- BusyBox 1.31.0 (unstable)
BusyBox 1.31.0.
(git,
patches,
how to add a patch)
Sizes of busybox-1.30.1 and busybox-1.31.0 (with equivalent config, static uclibc build):
text data bss dec hex filename
1008478 487 7436 1016401 f8251 busybox-1.30.1
1008392 482 7428 1016302 f81ee busybox-1.31.0
Changes since previous release:
Aaro Koskinen:
sysctl: fix compatibility with procps sysctl
Aitor Esteve Alvarado:
start-stop-daemon: change priority before dropping privileges
Alexander Vickberg (3):
httpd: when sending gzipped content use content-length header
httpd: pass authorization header to CGI if not Basic
start-stop-daemon: fix -x is not required for -K
Andrey Mazo:
udhcpc: don't exit after backgrounding on -n -b
Antoine Girard-Vallée:
udhcp: add 100 and 101 dhcp options for ipv4
Ari Sundholm (2):
grep: fix -x -v with certain pattern orders
grep: short-circuit -v to bail out on first match
Bernhard Reutner-Fischer (5):
checkstack.pl: fix arch autodetection
checkstack: pull from upstream
checkstack.pl: tweak bfin re
ip link: Fix vlan proto, closes 8261 and 11638
ipaddress: remove unused variable no_link
Brian Foley (4):
awk: Guard pointer chasing when parsing ternary expressions.
awk: Syntax error if delete isn't given an arg.
awk: Fix overly permissive func arg list parsing
sed: Fix backslash parsing for 'w' command arg
Chen Qi:
dc.tests: fix two test case to also depend on DC_BIG
Danijel Tasov:
telnet: provide feedback after successful connect
Denys Vlasenko:
make_single_applets.sh: fix for BSS trick
examples/var_service: use "exec sleep 5" instead of "{ sleep 5; exit; }"
dhcp service example: cater for servers not giving subnet and/or router
service examples: do not respawn supplicant too often
service examples: if iface do not exist, retry upping it
service examples: ifplugd -M to prevents frequent respawning
libarchive: treat one "FIXME: avoid seek"
libbb: move netlink socket binding to the utility function
libbb: find_mount_point() too eager to stat mounted devices
lineedit: fix SEGV in fdisk, hexedit, ed, closes 11661
ash,hush: implement optional "BASE#nnnn" numeric literals
ash,hush: move all definitions of strto_arith_t() together
ash,hush: add tests for backslashes in export VAR=VAL
ash,hush: bash compat for ulimit: -w => -x, -p => -u
ash,hush: bash compat for ulimit: reorder to match
ash,hush: fix ulimit to be more bash-compat, closes 11791
ash,hush: show 'c' in $- if run in "sh -c CMD"
ash,hush: ulimit: add -i RLIMIT_SIGPENDING, -q RLIMIT_MSGQUEUE
ash: add "wait -n" bashism
ash: allocate line editing structure only if needed
hush: add "wait -n" bashism
hush: allocate line edit buffer only for interactive shell
hush: fix "export PS1=xyz" and "local PS1=xyz" messing up prompt
hush: fix "wait -n" to wait for a _job_, not a _process_
hush: fix quoted "${notexist-}" expansion to not disappear
hush: handle LINENO the same way as RANDOM: variable is "ephemeral"
hush: implement $-, set default PATH if it is not set on startup
hush: remove code to track PS1/2 values dynamically - it's too much work
hush: remove test for "echo ${-}" errorring out - now it works
hush: set default PS1/2 only if we are interactive
hush: show 's' in $-
adduser: fix a bug of getpwnam() overwriting shell name, closes 8586
awk: fix testsuite
bc: disallow invalid syntax like "{ print 1 print 2 }"
bc: fix "...; return}" to work, disallow "return ()"
bc: implement pass-by-reference code from upstream
bc: in xc_read_line(), check ^C on NUL input bytes too
bc: make error line number also size_t, like everything else
bc: remove "empty expression" check/message, parsing fails in these cases anyway
bc: remove extra div/0 test, remove test for string function parameter
bc: shorten "limits" output
bc: speed up string printing, fix print ""
bc: support ibase up to 36 (GNU compat)
bc: support void functions (GNU compat)
bc: upstream fixes
dc: fix returning of string
dc: fix '?'
dc: make 4 % 0 emit error messgaes and set result to 0
brctl: convert all commands to work via /sys
brctl: simplify str_to_jiffies()
bunzip2: the correct condition is "n < groupCount", not "n <= groupCount". Closes 11896
chrt: do not segfault if policy number is unknown
chrt: fix for SCHED_RESET_ON_FORK bit
dd: fix handling of short result of full_write(), closes 11711
expand,unexpand: drop broken test, add FIXME comment
expand: add commented-out code to handle NULs
find: handle leading -- argument
fsync,sync: merge into one source module
httpd: add js to built in MIME types list
httpd: add missing {}
httpd: check denied IPs even before reading 1st query line
httpd: do disable header reading timeout even if proxying
httpd: do not decode URL and headers if proxying - send all verbatim
httpd: do not percent-decode URI if proxying
httpd: do not set alarm() timeout if we read cached header
httpd: extract query string only after proxying check
httpd: fix handling of EOF in get_line()
httpd: fix proxy headers passing - full_write() instead of write()
httpd: if remote IP is denied, send FORBIDDEN reply earlier
httpd: make rmt_ip variable local
httpd: put all headers into environment as HTTP_UPPERCASED_HEADER=val
httpd: require "HTTP/xyz" at the end of request line
httpd: use full size of iobuf[] when piping CGI data
ifupdown: close memory leak
ip link: fix mismatched enums in vlan_parse_opt(), closes 11631
ip: use rtnl_send_check() on flush commands, closes 6962
login: close PAM session on errors as well, not only on success
login: remove extra IF(), no code changes
losetup: implement -c
lpd: avoid SEGVing on immediate EOF from peer
ls: fix SEGV when --color is used and ENABLE_LS_COLOR=n
man: add "/usr/share/man" as another default MANPATH, fix col override
mount,losetup: use /dev/loop-control is it exists
nslookup: return exitcode 1 on resolution errors
ntpd: do not create pid file if not backgrounded
ntpd: increase SLEW_THRESHOLD from 0.125 to 0.5
passwd: do not set 0 as date of last password change, closes 11951
pmap: make 32-bit version work better on 64-bit kernels
ps: ensure fields are separated by at least one space, closes 11826
sed: fix /regex/,+N match triggering only once, closes 11871
sleep: support "inf"
start-stop-daemon: create pidfile before parent exits, closes 8596
start-stop-daemon: do try to close fds > 2
start-stop-daemon: fix "both -x and -a" case: -a does override argv[0]
sysctl: allow setting empty values
sysctl: avoid stat() on every item if in -w mode
sysctl: do slash/dot conversions only on name, not value part
sysctl: on EIO ("sysctl net.ipv6.conf.all.stable_secret") set nonzero exitcode
telnet: speed up processing of network input
telnetd: better AYT handling
telnetd: fix bad interaction with vhangup() from login
tftp: optional tftp-hpa compat
tls: add comment about dl.fedoraproject.org needing secp256r1 ECC curve
tls: pstm code shrink
ts: new applet
udhcp: downgrade "got raw socket fd" message to log3, make log2 default max
udhcp: get rid of last global data
udhcp: get rid of static data signal_pipe
udhcp: rename client_config to client_data, server_config to server_data
udhcpc6: add a few comments, no code changes.
udhcpc6: make it enabled in defconfig
udhcpc: when decoding DHCP_SUBNET, ensure it is 4 bytes long
udhcpd: code shrink - do not fetch requested IP twice
udhcpd: fix printing of static leases
udhcpd: support per-client hostnames in static leases
vi: code shrink, proper printf formatting for strlen()
vi: fix ^Z not always working as intended
vi: install SIGINT handler _after_ restart setjmp is initialized
vi: rearrange functions, no logic changes
vi: rename save_argc -> cmdline_filecnt
vi: restore capability to remember insertion cmds for "."
vi: revert change in how "end of file list" is detected - fixes 'q' in bare "vi"
vi: use vsnprintf to format status line
watch: support fractional -n SEC
wget: detect when the length of received file is less than advertised
wget: remove empty if/endif preprocessor directive pair
xargs: mention -E STR in --help
Einar Jón:
passwd: initialize pointers correctly
Jack O'Sullivan:
losetup: Add partition scanning option
James Byrne:
Optionally re-introduce bb_info_msg()
Jan Klötzke (3):
mdev: move action processing into separate functions
mdev: use option parser helper
mdev: add support to run as daemon
John L. Hammond:
ln: correct 'ln -T' usage message
Kaarle Ritvanen:
ip: print dadfailed flag
Khem Raj:
networking: cc is not a register
Mark Marshall:
capability: fix string comparison in cap_name_to_number
Martijn Dekker:
ls: make -i compatible with coreutils: don't follow symlink by default
Martin Lewis (5):
wget: add -o flag
wget: notify on download begin and end
wget: don't notify on download begin and end if quiet
telnetd: Added support for AYT IAC command.
udhcpc6: Fixed aliasing compilation error
Nicolas Hüppelshäuser:
scripts/echo.c: resolve implicit declaration of function 'dup2'
Nikolaus Voss (2):
i2ctransfer: new applet
i2c_tools.c: i2ctransfer
Rolf Eike Beer:
examples/udhcp/simple.script: fix resolv.conf update if it is a dangling symlink
Ron Yorston (18):
libbb: mark scripted_main() as externally visible
ash: eval: avoid leaking memory associated with redirections. Closes 7748
ash: distinguish 'wait -n' from other bashisms
ash: an unset dynamic variable should not be dynamic
ash: add bash-compatible EPOCH variables
ash: prevent error in backquotes in PS1 from exiting shell
ash: catch error in arithmetic expansion in PS1
hush: add bash-compatible EPOCH variables
du: don't count duplicate arguments. Closes 5288
man: don't skip default path which appears in config file
stat: reduce storage for human-readable filesystem names
vi: fix faulty undo after autoinsert
vi: fix replacement of single character with CR
vi: further fixes to undo after autoindent
vi: allow manual screen update if SIGWINCH isn't supported
vi: avoid build failure in non-default case
vi: fix changes to word at end of line. Closes 11796
vi: enable 'dG' command. Closes 11801
Rostislav Skudnov (2):
chcon: Fix typo in ACTION_RECURSE
dd: add 'oflag=append'
Stefan Sørensen:
ip: Fix ip -o link
Thomas De Schampheleire:
top: provide cmdline argument '-H' to enable thread scanning by default
Thomas Frauendorfer:
Fix off by one error in FAT16 <=> FAT32 detection
Vicente Jimenez Aguilar:
httpd: add svg to built in MIME types list
- 14 February 2019 -- BusyBox 1.30.1 (stable)
BusyBox 1.30.1.
(git)
Bug fix release. 1.30.1 has fixes for
bc/dc, sed (backslash parsing for 'w' command), ip (vlan fixes), grep (fixes for -x -v), ls (-i compat).
- 31 December 2018 -- BusyBox 1.30.0 (unstable)
BusyBox 1.30.0.
(git,
patches,
how to add a patch)
Sizes of busybox-1.29.3 and busybox-1.30.0 (with equivalent config, static uclibc build):
text data bss dec hex filename
941070 477 7296 948843 e7a6b busybox-1.29.3
948463 477 7296 956236 e974c busybox-1.30.0
Changes since previous release:
Andre Goddard Rosa:
smemcap: keep outputting by ignoring transient processes
Baruch Siach:
install.sh: don't clobber dangling symlinks
Bernhard Reutner-Fischer:
brctl: use a single buffer for brname and ifname
printf: fix printing +-prefixed numbers
Brandon Maier:
ifupdown: support "source-directory" stanza
Brandon P. Enochs:
ntpd: add support for MD5/SHA1 message authentication
Chen Qi:
testsuite: check CONFIG_DESKTOP before using 'od -t'
Chen Yu:
remove_file: don't call rmdir if remove_file return failure
Christoph Schulz:
ash: reset tokpushback before prompting while parsing heredoc
Denys Vlasenko:
libbb: @ in "\x3@" is not a valid hex digit
libbb: do not misinterpret 0x10-0x19 chars in "\xNNN" too
libbb: fix potential NULL pointer use
libbb: fix use-after-free in copy_file
libbb: in xmalloc_fgets(), use size_t for bb_get_chunk_from_file()
tls: add support for ECDHE-ECDSA-AES-128-CBC-SHA and x25519 curve
tls: add support for TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 cipher
tls: add support for TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 cipher
tls: add support for 8 more cipher ids - all tested to work
tls: in AES-CBC code, do not set key for every record - do it once
tls: introduce FEATURE_TLS_SHA1 to make SHA1 code optional
tls: simplify hmac_begin(), speed up prf_hmac_sha256()
extend fractional duration support to "top -d N.N" and "timeout"
Revert "libbb: remove unnecessary variable in xmalloc_fgets"
ash: allow shell scripts to be embedded in the binary
ash: eval: Restore input files in evalcommand
ash: eval: Variable assignments on functions are no longer persistent
ash: exec: Return 126 on most errors in shellexec
ash: expand: Do not quote backslashes in unquoted parameter expansion
ash: expand: Fix ghost fields with unquoted $@/$*
ash: parser: Fix parsing of ${}
ash: var: Set IFS to fixed value at start time
ash,hush: fold shell_builtin_read() way-too-many params into a struct param
ash,hush: properly handle ${v//pattern/repl} if pattern starts with /
hush: expand_vars_to_list() should not assume it starts new word
hush: faster/smaller code to check for presense of multiple chars in string
hush: fix another case where empty "for" wasn't setting exitcode to 0
hush: fix/explain corner cases of redirection colliding with script fd
hush: fix handling of heredocs not enclosed in groups where they are "declared"
hush: fix handling of heredocs starting with empty lines
hush: fix handling of '' in ${var:+ARG}
hush: fix heredoc handling in the "cmd <<EOF ;<newline>" case
hush: fix nested redirects colliding with script fds
hush: fix "set -x" output prefix overlapping for v="..`cmd`.." case
hush: fix word splitting in ${v:+ARG} - dollar_altvalue1 test
hush: fix 'x=; echo ${x:-"$@"}' producing 'BUG in varexp2' message
hush: handle backslash-newline in heredoc terminators
hush: improve set -x: make "+++" indent level increase in `cmd` and eval.
hush: improve ${var#...}, ${var:+...} and ${var/.../...} - handle quoting
hush: in some cases, expand_on_ifs() relied of uninitialized memory
hush: make "set -x" output closer to bash
hush: make "set -x" output non-redirectable when fd#2 redirected
hush: never glob result of dquoted "${v:+/bin/c*}"
hush: set IFS to default on startup
hush: speed up ${var:+ARG} for literal ARGs
awk: abort if NF set to negative value
cat,nl: fix handling of open errors
cpio: if longopts are enabled, accept --null (synonym for -0)
cp: optional --reflink support
date: do not allow "month #20" and such, closes 11356
fdisk: sync up with some util-linux 2.31 behavior
fdisk: use strtoul[l] instead of atoi, closes 11176
find: implement -executable and -quit
free: ensure there is a least one space between numbers
grep: accept and ignore --color[=anything]
gzip: unbreak FEATURE_GZIP_LEVELS, closes 11171
hexdump: fix short file of zero bytes treated as dup
hexedit: fixes for redraw and down movement causing SEGV on attempt to access
init: hopefully fix "rebooting" in containers
nbd-client: support newstyle protocol, -b, -d, -p, -N
nslookup: add support for search domains, closes 11161
ntpd: default to FEATURE_NTP_AUTH=y
ntpd: do not SEGV on "-p keyno:192.168.1.1", show --help instead
ntpd: increase minimum G.FREQHOLD_cnt from 8 to 12
ntpd: more verbose message for "root distance too high" case
ntpd: show real, unclamped delays on low-latency networks
ping: implement -i SEC
ping: use setitimer() instead of ualarm()
printf: fix printf "%u\n" +18446744073709551614
sed: fix double-free in FEATURE_CLEAN_UP code
sendmail: use on-stack buffer for AUTH PLAIN
smemcap: keep outputting by ignoring transient processes, take two
sort: add -V "sort version"
svlogd: fix pattern matching when using timestamps
tar: fix too eager autodetection, closes 11531
tar: handle the case when opened created tarball happens to have fd#0
tar: skip 'V' headers (GNU volume label), closes 11526
timeout: fix arguments to match coreutils
udhcpc: check that 4-byte options are indeed 4-byte, closes 11506
udhcpc: do in fact not allow hostname components which start with dash
udhcpc: ensure at least one unicast renew attempt
udhcpc: give SIGUSR1-induced renew one chance of unicast renew
unlzma: fix too-eager corruption check
unzip: use printable_string() for printing filenames
uptime: add -s support
vi: fix FEATURE_VI_REGEX_SEARCH to respect LIMITED (one-line) search
wget: fix fetching of https URLs without http proxy
wget: print the final newline only for non-tty output
wget: print "TLS certificate validation not implemented" only once on redirects
whois: fix a possible out-of-bounds stack access
xargs: fix exit code if command exits nonzero, closes 11381
Gavin Howard:
bc: new applet
dc: a much fuller version which uses bc codebase
Guillermo Rodriguez:
free: add 'available' memory if provided by the kernel
Jeremy Kerr:
udhcp: add option 211, "reboot time"
Jiří Prchal:
examples/udhcp/simple.script: add possibility to use modern "ip"
Jon Kolb:
Add chroot support to chpasswd
Lauri Kasanen:
ls: When -h is passed, the total should also be in human units
Martin Kaiser:
mdev.txt: explain the meaning of a leading "-"
.gitignore: add ctags output files
Peter Korsgaard:
sysklogd: add timestamp option to ignore message timestamps
Raffaello D. Di Napoli:
sendmail: fix parsing of addresses in angle brackets
sendmail: support AUTH PLAIN in addition to AUTH LOGIN
Rasmus Villemoes:
libbb: optionally honour libc provided SIGRTMIN/SIGRTMAX in get_signum()
libbb/u_signal_names.c: don't check errno after bb_strtou
Ron Yorston:
Ensure build works when KBUILD_OUTPUT is set, closes 11511
Tweaks to build process for embedded scripts
build system: prevent duplicate applet names
docs: add embedded-scripts.txt
ash: recognize embedded scripts in SH_STANDALONE mode
ash: in tryexec(), ensure we don't try to run embedded scripts as applets
ash: ensure variables are fully initialised when unset
ash: minor fixes
hush: allow hush to run embedded scripts
hush: correct description for HUSH_TICK config option
lineedit: autocompletion for embedded scripts
libarchive: add a function to unpack embedded data
Treat custom and applet scripts as applets
busybox: add '--show SCRIPT' option to display scripts
vi: remove duplicated code
vi: correctly detect when a deletion empties the buffer
Rostislav Skudnov:
dd: add 'oflag=seek_bytes'
Thomas De Schampheleire:
head: add test case for negative -n invocation
head: convert existing tests to new-style
haroon maqsood:
nproc: implement --all --ignore=N
sagivd:
chcon: fix issues with recurse and retval for retained files
- 9 September 2018 -- BusyBox 1.29.3 (stable)
BusyBox 1.29.3.
(git)
Bug fix release. 1.29.3 has a fix in libbb for xmalloc_fgets().
- 31 July 2018 -- BusyBox 1.29.2 (stable)
BusyBox 1.29.2.
(git)
Bug fix release. 1.29.2 has fixes for
fdisk (compat fixes, allow 2TB+ sizes),
gzip (FEATURE_GZIP_LEVELS was producing badly-compressed .gz),
hexedit (segfault fix).
- 15 July 2018 -- BusyBox 1.29.1 (stable)
BusyBox 1.29.1.
(git)
Bug fix release. 1.29.1 has fixes for
wget (http->https redirect) and
sendmail (angle bracket parsing).
- 1 July 2018 -- BusyBox 1.29.0 (unstable)
BusyBox 1.29.0.
(git,
patches,
how to add a patch)
Sizes of busybox-1.28.4 and busybox-1.29.0 (with equivalent config, static uclibc build):
text data bss dec hex filename
968029 483 7008 975520 ee2a0 busybox-1.28.4
969154 475 6972 976601 ee6d9 busybox-1.29.0
Changes since previous release:
Aaro Koskinen:
cp: implement -T
less: implement -F
Andy Shevchenko:
libbb: Use return value from is_prefixed_with()
Codarren Velvindron:
ntpd: deprecate IPTOS_LOWDELAY in favor of IPTOS_DSCP_AF21
David Decotigny:
udhcpc6: ignore invalid OPTION_IAADDR
udhcpc6: carry along length of packet when parsing it
Denys Vlasenko:
libarchive: move bbunpack constants to bb_archive.h
libbb.h: always include sys/resource.h
libbb: commonalize a bit of little-endian CRC32 table generation code
libbb: compile capability code only if FEATURE_SETPRIV_CAPABILITIES or RUN_INIT
libbb: compile obscure() only if FEATURE_PASSWD_WEAK_CHECK=y
libbb: crypt() in newer glibc requires include <crypt.h>
libbb: introduce and use bb_getsockname()
libbb: new function bb_die_memory_exhausted()
libbb: new option FEATURE_ETC_SERVICES: if off, /etc/services reads often avoided
libbb: rename bb_ask -> bb_ask_noecho, bb_ask_confirmation -> bb_ask_y_confirmation
libbb: shrink wget/tftp progress indicator code
libbb: switch bb_ask_noecho() to "mallocing" string return API
libbb: use BUILD_BUG_ON in utoa_to_buf()
networking/interface.c: get rid of global data
i386: make stack size optimization selectable, and allow i486 insns (bswap)
NOFORK_NOEXEC.sh: a script to find "interesting" applets
size_single_applets.sh: fix a bug which mishandles e.g. "udhcpc6" name
config: add size estimations for a few applets
use gmtime_r() instead of gmtime()
ioctl(SIOCGIFINDEX) does not require clearing of entire ifr
fix install with hardlinks and a custom PREFIX. Closes 10801
examples/shutdown-1.0: an example of reboot which does not signal init
examples: update /var/service/getty for Unicode ttys
examples/var_service: new example: dnsmasq service
cal: make it NOEXEC
mv: make it NOEXEC
ash: add LINENO support
ash: parser: fix backquote support in here-document EOF mark
ash: a bit of NOFORK code should only be active if FEATURE_SH_STANDALONE=y
ash: ALWAYS_INLINE grabstackblock()
ash: expand: Fix buffer overflow in expandmeta
ash: expand: Fix bugs with words connected to the right of $@
ash: fix "char == CTLfoo" comparison signedness bug
ash: fix double-quoted "\z" handling
ash: fix var_bash5.tests - ${VAR/pattern/repl} construct
ash,hush: fix "saved" redirected fds still visible in children
ash,hush: handle a few more bkslash-newline cases
ash: if "[[" bashism is not supported, do not handle it anywhere
ash: introduce a config option to search current directory for sourced files
ash: make it possible to disable "const global ptr" optimization
ash: make ${v:N:M} more robust for very large M by clamping to MIN/MAX_INT
ash: parser: Add syntax stack for recursive parsing
ash: parser: Allow newlines within parameter substitution
ash: parser: Fix parameter expansion inside inner double quotes
ash: parser: Fix single-quoted patterns in here-documents
ash: redir: Fix typo in noclobber code
ash: use F_DUPFD_CLOEXEC and O_CLOEXEC
ash: use pgetc_eatbnl() in more places
hush: implement $LINENO bashism
hush: add HUSH_BASH_SOURCE_CURDIR config option, to be on par with ash
hush: consolidate handling of setting/unsetting of PSn, LINENO, OPTIND
hush: do not drop backslash from eval 'echo ok\'
hush: fix a='a\\'; echo "${a%\\\\}"
hush: fix a backslash-removal bug in case
hush: fix a bug where we don't properly handle f() { a=A; b=B; }; a= f
hush: fix a case where EXIT trap may modify its code mid-flight
hush: fix a few more corner cases with empty-expanding `cmds`
hush: fix a signedness bug
hush: fix build if !BASH_LINENO_VAR
hush: fix corner cases with exec in empty expansions
hush: fix dot builtin to not search current directory
hush: fix dup_CLOEXEC() call without "avoid_fd" parameter
hush: fix eval 'echo ok\'
hush: fix for !ENABLE_HUSH_MODE_X configuration
hush: fix for readonly vars in "ro=A ro=B cmd" case
hush: fix func_return2.tests on NOMMU
hush: fix handling of ^C in eval
hush: fix handling of \<eof> in double-quoted strings
hush: fix handling of raw ^C in scripts: "echo ^C"
hush: fix handling of $_ (so far it's an ordinary variable, no special meaning)
hush: fix heredoc_bkslash_newline1.tests failure
hush: fix IFS handling in read
hush: fix mishandling of "true | f() { echo QWE; }"
hush: fix prompt in multi-line $(())
hush: fix raw ^C handling in single-quoted strings
hush: fix recent breakage from parse_stream() changes
hush: fix "set -e; false || x=1; echo OK"
hush: fix two corner cases in ${v/pattern/repl}. Closes 10686
hush: fix "unset PS1/PS2", and put them into initial variable set
hush: fix var_leaks.tests and var_preserved.tests on NOMMU
hush: fix "$v" expansion in case patterns when v='[a]'
hush: IFS fixes
hush: if we did match "LINENO" or "OPTIND", stop further comparisons
hush: implement "command" builtin
hush: implement "hush -s"
hush: less mind-bending set_vars_and_save_old()
hush: make var nesting code independent of "local" support
hush: one-word, no-globbing handling of local/export/readonly args
hush: optimize parse_stream()
hush: protect against self-modifying trap code
hush: put "current word" structure into parsing context
hush: simplify \<newline> code
hush: simplify process_command_subs()
hush: support "f() (cmd)" functions
shell: add 6856 $IFS tests to testsuites
shell: echo ${?:0} was fixed sometime ago, enable it in tests
shell: handle $((NUM++...) like bash does. Closes 10706
ar: hopefully fix out-of-bounds read in get_header_ar()
arping: change a few message strings to be closer to iputils arping
arping: fix the case when inherited signal mask masks out ALRM
arping: move packet buffer, sigset and struct ifreq to malloced "globals"
ar: stop using static data
awk: do not allow $(-1)
awk: fix 'delete array[var--]' decrementing var twice
bgip2: fewer specifically-sized [u]int32_t's locals in sendMTFValues
bzip2: ~1% speedup by special-casing "store 1 bit" function
bzip2: a few more locals converted to generic types
bzip2: code shrink, stop using global data variable
bzip2: convert some locals to unsigned's
bzip2: delete write-only fave[] array
bzip2: eliminate write-only local numQSorted
bzip2: eliminate one parameter to mainQSort3()
bzip2: expose tuning knob for faster/smaller code
bzip2: fix two crashes on corrupted archives
bzip2: have two separate "store bit 0" and "store bit 1" functions
bzip2: make locals in mainSort() saner, convert one of them from uint16 to unsigned
bzip2: move ->origPtr out of struct EState, make a few members smaller
bzip2: move runningOrder[] back to stack - 256 bytes is not much
bzip2: optimize zPend variable code
bzip2: pass sorting params through EState* pointer
bzip2: remove redundant clearing of an alredy unset bit
bzip2: remove redundant loop termination check in mainSort()
bzip2: reuse zPend processing code
bzip2: rewrite bit of code which depends on integer overflow
bzip2: runningOrder[] values are always 0..255, make it uint8
bzip2: small simplification in mainSimpleSort()
bzip2: shrink makeMaps_e()
bzip2: work around bad compiler optimization
cat: fix cat -e and cat -v erroneously numbering 1st line
chrt: use correct min/max priorities
cp: fix option handling in non-longopt config
dd: exit with 1 if last write was incomplete
dd: fixed partial count logic
df: 4TB+ support on 32 bits arch
df: do "rootfs" check sooner
dpkg: fix symlink creation, closes 10941
fdisk: remove "Partition N does not end on cylinder boundary" message
fsck: fix incorrect handling of child exit
fstrim: do not check that specified file is on a block device
ftpd: add -A option to disable all authentication, closes 10921
ftpd: handle restarts past 2147483647 bytes. closes 10741
ftpd: switch to mallaced "globals"
ftpgetput: add EPSV support (PASV-like thing for IPv6)
ftpgetput: preparations for ESPV support, no code changes
grep: fix echo "aa" | busybox grep -F -w "a" (should not match)
gunzip: fix from gzip-1.3.12 for gzip file with all zero length codes
gzip: "compressed_len" is unused, stop wasting code and time calculating it
gzip: fix debug code. Closes 10681
gzip: flush output buffer after stored blocks, they are not 32-bit aligned
gzip: optionally faster put_32bit()
gzip: speed up send_bits()
gzip: use unsigned type for bit fields and bit counts
gzip: use wider (32-bit, not 16) bi_buf
httpd: do not default to Content-type: application/octet-stream
ifplugd: close signal race
ifplugd service example: always run up/down script on startup
inetd,mount: add comment with example of flags to build with libtirpc
init: stop using static data
install: fix "-D -t DIR1/DIR2/DIR3" creating only DIR1/DIR2, closes 11106
ip: fix crash in "ip neigh show"
ip: fix "ip -oneline a"
less,microcom,lineedit: use common routine to set raw termios
less: accept -R option. Closes 10816
less: fix help text conditional for -R
less: optional support of -R
less: remove unnecessary message
lzop: buffer several 32-bit writes when we start a new compressed block
lzop: checksum reads do not need to be checksummed
lzop: code shrink by using header_t matching on-disk layout
lzop: don't support ancient versions < 0.94 (15 Oct 1997)
lzop: remove method checks which are always true/false
md5sum: use config help text similar to other "sum" tools
mkfs_ext2,mkfs_vfat: fix warnings in STORE_LE on big-endian platforms
mknod: better --help, much clearer code
nandwrite: cope with old headers which have no MTD_FILE_MODE_RAW
nc: fix the !NC_SERVER configuration
nslookup: add openwrt / lede version
ntpd: suppress in-kernel frequency correction in first 8+n adjtimex calls
od: move address_fmt[] from data to globals. 8 less bytes in data section
patch: implement --dry-run
ping: don't call monotonic_us twice per sending the ping
ping: implement -A "adaptive ping"
poweroff: add a config option for people needing VERY early poweroff
realpath,readlink -f: coreutils compat, closes 11021
renice: add comment about getpwnam/NOFORK interaction
renice: use BUILD_BUG_ON()
setlogcons: open /dev/ttyN for "setlogcons N", not /dev/tty1
sort: FEATURE_SORT_OPTIMIZE_MEMORY
sort: fix potentially buggy use of OPT_STR
sort: fix -s. Closes 10671
sort: in -s handling, return 1/-1, not 1/0 compare result
start_stop_daemon: fix normally disabled OLDER_VERSION_OF_X code
stat: fix a typo: s/romfs/ramfs/, closes 10876
svok: new applet (daemontools compat)
tar: accomodate non-terminated tar.chksum fields as seen from github.com
tar: add -k and -o to --help
tar: add -o and -k to short --help too
tar,unzip: postpone creation of symlinks with "suspicious" targets
tc: enable this applet
tcpsvd: fix fallout from opt_complementary removal
tcpudp: shrink per-host rate-limiting code
telnet: move winsize detection closer to I/O loop, delete non-functioning debug code
tls: fix hash calculations if client cert is requested and sent
tls: remove redundant floor prevention
top: do unsigned rather than signed division in do_stats()
top: fix "warning: unused variable new_mask"
top: handle much larger VSZ values
top: much faster cursor key navigation by avoiding process rescan
udhcpc6: additional fix for ppp interface type
udhcpc6: add support of prefix delegation
udhcpc6: fix for ppp interface type
udhcpc6: fix ipv6prefix[_lease] envvar value in script invocation
udhcpc6: fix lease time staying very small because -d was not specified
udhcpc6: set -x options in request
udhcpc[6]: remove overzealous timeout clamping code
udhcpc: remove code which requires server ID to be on local network
udhcpd: clamp down huge auto_times to ~2M seconds, better EINTR poll handling
udhcpd: fix "not dying on SIGTERM"
udhcpd: use ptr_to_globals for its lone global data (g_leases)
udhcp: do not setlinebuf(stdout), we don't print to stdout anymore
udhcp: support string user options, closes 10946
umount: fix "umount -t FSTYPE MNTPOINT" acting as if -a is specified
unlzma: do emit the error message on bad input, when we exit with 1
unlzma: fix three SEGV cases
unlzop: fix --help: it has -U instead of -k
unzip: do not set directory mode to 0777
wget,ftpd: shorten and reuse strings
wget: add EPSV support
wget: check chunk length for overflowing off_t
wget: emit a message that certificate verification is not implemented
wget: handle URLs with @ or hash differently
wget: support for ftps://
wget: more thorough sanitization of other side's data
which: fix TODO with NOFORK+malloc_failure misbehaving
xargs: use bb_ask_y_confirmation_FILE() instead of homegrown copy
Eli Schwartz:
Update release script to generate detached signatures and checksum files
Euan Harris:
nsenter: Rename --network option to --net
nsenter: fix parsing of -t, -S and -G options
Harald van Dijk:
tar: fix interaction of delayed symlink and hardlink creation
Ingo van Lil:
ash: fail if 'shift' operand is out of range
Ivan Abrea:
tls: fix to handle X.509 v1 certificates correctly
Jan Luebbe:
ip link: support "add TYPE vrf", improve --help
iplink: implement support for selecting a master interface
Kaarle Ritvanen:
ifupdown: do not fail if interface disappears during ifdown
Kartik Agaram:
restore documentation on the build config language
Mark Marshall:
netstat: produce numeric-ip output for non-resolved names
Martijn Dekker:
ash: 'nolog' and 'debug' options cause "$-" to wreak havoc
Michael Olbrich:
build system: fix parallel building issue
Natanael Copa:
cpio: extract "unsafe" symlinks the same way tar/unzip does
Nicholas Clark:
dd: add 'fullblock' iflag
Peter Korsgaard:
fbsplash: support configurable image position
Peter Lloyd:
wget: fix fetching of https URLs with http proxy
Povilas Kanapickas:
chrt: add support for SCHED_BATCH
chrt: add support for SCHED_IDLE
Quentin Rameau:
libbb: remove unnecessary variable in xmalloc_fgets
sed: prevent overflow of length from bb_get_chunk_from_file
Ron Yorston:
testsuite: update busybox and bzcat tests
lineedit: allow window size tracking to be disabled
ssl_client: fix option parsing
testsuite: allow tests to work in paths containing spaces
Samuel Mendoza-Jonas:
udhcp: fix use of trim() in udhcp_str2optset()
udhcpc6: add DHCPv6 env helper
udhcpc6: add DHCPv6 boot options
udhcpc6: add PXELINUX options
Sean MacLennan:
make busybox more portable
Shawn Landden:
umount: ignore -c
Stefan Agner:
ifplugd: if SIOCSIFFLAGS fails with EADDRNOTAVAIL, don't die
Sven-Göran Bergh:
volume_id: add LittleFS detection
William Pitcock:
ash: add support for command_not_found_handle hook function (bashism)
Yann E. MORIN:
applets/install: respect noclobber for script wrappers too
applets/install: accept more than one install option
build system: add rule to install without cloberring existing utilities
applets/install: don't try to install nothing
- 22 May 2018 -- BusyBox 1.28.4 (stable)
BusyBox 1.28.4.
(git,
patches,
how to add a patch)
Bug fix release. 1.28.4 has fixes for
nsenter option parsing and dpkg symlink extraction.
- 3 April 2018 -- BusyBox 1.28.3 (stable)
BusyBox 1.28.3.
(git,
patches,
how to add a patch)
Bug fix release. 1.28.3 has fixes for
ash and hush (do not leave stray open file destriptors in children),
cpio (fix for symlink extraction),
grep ("grep -Fw a" was matching "aa").
- 26 March 2018 -- BusyBox 1.28.2 (stable)
BusyBox 1.28.2.
(git,
patches,
how to add a patch)
Bug fix release. 1.28.2 has fixes for
tcpsvd (fixed fallout from opt_complementary removal),
udhcpd (do not ignore SIGTERM),
tar and unzip (reverted to previous, more permissive symlink handling),
ssl_client (fixed option parsing),
- 15 February 2018 -- BusyBox 1.28.1 (stable)
BusyBox 1.28.1.
(git,
patches,
how to add a patch)
Bug fix release. 1.28.1 has fixes for
cp (fix option handling in non-longopt config, implement -T),
ip (crash in "ip neigh show"),
tls (fix hash calculations if client cert is requested),
tar (accomodate non-terminated tar.chksum fields as seen from github.com),
udhcpc6 (fix ipv6prefix[_lease] environment value in script invocation).
- 2 January 2018 -- BusyBox 1.28.0 (unstable)
BusyBox 1.28.0.
(git,
patches,
how to add a patch)
Sizes of busybox-1.27.0 and busybox-1.28.0 (with equivalent config, static uclibc build):
text data bss dec hex filename
959831 491 7536 967858 ec4b2 busybox-1.27.0
961456 487 7512 969455 ecaef busybox-1.28.0
Changes since previous release:
Avi Fishman:
i2cset: fix 'i' & 's' modes (3 extra bytes were sent)
Avi Halachmi:
lineedit: improve multiline PS1 - redraw using last PS1 line. Closes 10381
Bartosz Golaszewski:
i2c-tools: remove unneeded include
i2c-tools: don't include linux/i2c-dev.h
Denys Vlasenko:
stop using atexit in non-debug build: saves ~260 bytes in bss with musl
use %m printf specifier where appropriate
standalone shell / prefer_applets: fix "exe" in comm fields
change BB_EXTRA_VERSION: now it needs to contain any spaces/parenthesis
regularize format of source file headers, no code changes
move get_unaligned_le32() macros to platform.h
sparc: needs -fPIC
config: deindent all help texts
config: FEDORA_COMPAT option (so far only tweaks uname)
config: merge "Busybox Settings" and "Busybox Library Tuning" into one menu
config: more tweaking of help texts
config: reorder items in "Busybox Settings", improve help
config: trim/improve item names and help texts
build system: FEATURE_LIBBUSYBOX_STATIC - try to pull libc/libm into libbusybox
build system: fix "allnoconfig" to clear all options. Closes 10296
build system: remove unused CONFIG_FEATURE_HAVE_RPC
libarchive: do not extract unsafe symlinks unless $EXTRACT_UNSAFE_SYMLINKS=1
libarchive: FEATURE_LZMA_FAST should be visible if FEATURE_SEAMLESS_LZMA
libbb: avoid malloc/free in bb_unsetenv()
libbb: do not die if setgid/setuid(real_id) on startup fails
libbb/dump: allow skipping over stdin too
libbb/dump: fix a few broken commits and shrink code
libbb: hide getnetbyaddr() inside "#if ENABLE_FEATURE_ETC_NETWORKS" block
libbb: make trim() return pointer to terminating NUL
libbb: move capability names code to libbb
libbb: new function bb_getgroups() - allocating wrapper around getgroups()
libbb: safe_write should not return EINTR
libbb: use _exit, not exit, in bb_daemonize_or_rexec()
libbb: rearrange NOFORK/NOEXEC code, logic is not changed
libbb: simplify NOFORK/NOEXEC defines, move set_task_comm to libbb
lineedit: do not tab-complete any strings which have control characters
lineedit: get terminal width before printing prompt
lineedit: make read_line_input() not take timeout param
main: fix the case where user has "halt" as login shell. Closes 9986
networking/interface.c: remove superfluous "& 0377"
noexec: consolidate code
noexec: do GETOPT_RESET() before entering APPLET_main()
noexec: set comm field for noexecs
nofork: fix a bug uncovered by hush testsuite (forgotten fflush)
adjtimex,blkdiscard,free: make it NOFORK
clear,nproc,tty,uname,arch,unlink,which: make them NOFORK
pwdx,pivot_root,kill[all5],ttysize,realpath,readlink: make them NOFORK
add/remove-shell,add/deluser,add/delgroup: make them NOEXEC
make 17 state-changing execing applets (ex: "nice PROG ARGS") NOEXEC
blkid: make it NOEXEC, make FEATURE_BLKID_TYPE=y default
blockdev,fsfreeze,fstrim,mountpoint: make them NOEXEC
brctl,chattr,lsattr,tune2fs: make them NOEXEC
chvt,deallocvt,dumpkmap,fgconsole,loadkmap: make them NOEXEC
cryptpw,mkpasswd: make them NOEXEC
df,dnsdomainname,hostname,dumpleases,expr,fatattr: make them NOEXEC
freeramdisk,free,stat,getopt,ifenslave,ipcalc,rdev,ipcrm,ipcs: make them NOEXEC
ip,ip*: make them NOEXEC
kbd_more: make it NOEXEC, remove redundant opt clearing
loadfont,setfont,losetup,lspci,lsscsi,lsusb: make them NOEXEC
makedevs,mesg,mktemp,nameif: make ithem NOEXEC
modutils: make them NOEXEC except depmod
nbd-client: make it NOEXEC, stop using argc
date,resize,partprobe,ps,pstree,raidautorun,runlevel,setconsole: make them NOEXEC
setkeycodes: make it NOEXEC, better --help text
setlogcons: make it NOEXEC, better --help text
setserial,stty,sv,svc,sysctl,tunctl,umount: make them NOEXEC
users,w,who,uptime,renice,vconfig: make them NOEXEC
adjtimex: zero-fill whole structure, to be on the safe side
arch: new applet (same as uname -m). ~30 bytes
ash: align --login code with dash
ash: alloc slightly smaller buffer in cvtnum(); faster unsetvar()
ash: allow "trap NUM [SIG]..." syntax
ash: implement BASH_XTRACEFD bashism
ash: do not set a signal to SIG_DFL if it already is
ash: fix display of ">&-" redirect in job strings
ash: fix matching of unicode greek letter rho (cf 81) and similar cases
ash: note which versions of glibc exhibit "rho bug"
ash: fix nofork bug where environment is not properly passed to a command
ash: fix redir_leak.tests if STANDALONE=y
ash: fix "unset OPTIND" throwing an error message
ash: force inlining of a trivial function
ash: if !ENABLE_ASH_EXPAND_PRMT, disable PSSYNTAX code
ash: improve set -x to quote strings as necessary
ash: INT_OFF/INT_ON around run_nofork_applet()
ash: less hackish implementation of evaltreenr()
ash: make tryexec(cmd) parameter const char
ash: more general format ${var:EXPR:EXPR}
ash: more s/error/perror/ for better error reporting
ash: one "current line = 1" might be missing, fix that
ash: [PARSER] Add FAKEEOFMARK for expandstr
ash: [PARSER] Catch variable length expansions on non-existant specials
ash: [PARSER] Removed noexpand/length check on eofmark
ash: [REDIR] Fix popredir on abnormal exit from built-in
ash: [REDIR] Replace GPL noclobberopen code with the FreeBSD version
ash: remove REDIR_SAVEFD2
ash: retain envvars with bad names in initial environment. Closes 10231
ash: revert previous implementation of "A=1 A=2 B=$A cmd" code
ash: [SHELL] Optimize dash -c "command" to avoid a fork
ash: significant overhaul of redirect saving logic
ash: stage backported LINENO support as a separate patch
ash: survive failures in $PS1 expansion. Closes 10371
ash: sync up with dash with respect to redirection escaping
ash: unset OPTARG if getopts exits 1, support OPTERR=0 behavior
ash: use mempcpy() where appropriate
ash: [VAR] Add localvars nesting
ash: [VAR] Do not poplocalvars prematurely on regular utilities
ash: [VAR] Fix loss of variables when hash collides
ash: [VAR] Fix poplocalvar leak
ash: [VAR] Fix poplocalvar on abnormal exit from function
ash: [VAR] Move unsetvar functionality into setvareq
ash: [VAR] Replace cmdenviron with localvars
ash,hush: ">&10" redirects to script/tty fds should not work
hush: add a test which fails due to uclibc bug in getopt()
hush: add support for "set -e"
hush: add TODO for "set -e"
hush: convert exp/ro/local parameters to bitfields in one flag param
hush: correctly handle quoting in "case" even if !BASH_PATTERN_SUBST
hush: do not accept "if() { echo; }" function def
hush: do not assign to readonly VAR in "VAR=VAL CMD" syntax too
hush: explain why wait5.tests is failing
hush: fix a case when redirect to a closed fd #1 is not restoring (closing) it
hush: fix and_or_and_backgrounding.tests failure
hush: fix "cmd1 && cmd2 &" handling on NOMMU
hush: fix comment parsing in `cmd`, closes 10421
hush: fix ${##}, ${#?}, ${#!} handling
hush: fix handling of empty heredoc EOF marker
hush: fix quoted_punct.tests failure
hush: fix readonly2.tests failure
hush: fix redirect code (was using uninitialized variables)
hush: fix "(sleep 1; exit 3) & sleep 2; echo $?; wait $!; echo $?"
hush: fix "true | func_with_return" not allowing return
hush: fix two redirection testcase failures
hush: forgot to emit error on (failing) second "readonly VAR=VAL"
hush: functions have priority over builtins (!)
hush: implement "getopts" builtin
hush: implement "readonly" builtin
hush: implement "times" builtin
hush: implement -d DELIM option for "read"
hush: make SIGINT handling visually less confusing
hush: make "wait %1" work even if the job is dead
hush: massage redirect code to be slightly more like ash
hush: print error messages on "shift -1"
hush: remove redundant "G_flag_return_in_progress = -1"
hush: remove superfluous comparison
hush: rename a few functions
hush: simplify insert_job_into_table() a bit
hush: support ${VAR:N:-M}
hush: treat ${#?} as "length of $?"
hush: use mempcpy where useful
hush: if STANDALONE, close interactive fd for NOEXECed children
msh: delete this applet
shell: improve comments on signal handling
shell: add OPTARG poisoning to getopt_optarg.tests
shell: and_or_and_backgrounding.tests is no longer "UNFIXED BUG"
shell: make standalone shell tab-complete "busybox"
shell: more efficient check for EOL in read
shell: optional support for read -t N.NNN, closes 10101
awk: stop on first non-option, closes 9861
basename: do not use argc
beep: disallow FEATURE_BEEP_FREQ = 0 in configuration
blkdiscard: provide our own BLK[SEC]DISCARD if necessary
bunzip2: fix runCnt overflow from bug 10431
bzcat: compile bunzip2_main() if BZCAT
bzcat,zcat: simplify code if gunzip/bunzip2 is not selected
cat: fix "cat -An" ignoring -n; make numbering go througn all files
chat: do not die when HANGUP param is missing. Closes 10016
chattr: fix option parsing to accept more cryptic option combos
chown: fix a mistake in opt_complementary change
crond: allow $SHELL and starting user's shell override DEFAULT_SHELL. Closes 6458
crond: do not assume setenv() does not leak
crond: support @daily etc
date: maybe_set_utc only once
dd: fix status=none. Closes 10066
ed: fix --help and reorder functions, no code changes
ed: fix "\n" removal in command line; make "w" set "dirty = 0"
free: no longer include common_bufsiz.h
getopt32: factor out code to treat all args as options
getopt32: move support for "always treat first arg as option" to users (tar/ar)
getopt32: remove applet_long_options
getopt32: remove opt_complementary
hexedit: new applet
httpd: fix handling of range requests
httpd: skip "Status: " from CGI, including space. Closes 10291
inetd: fix for running by non-root
inetd,mount: do not die if uclibc without RPC is detected
init: reduce the window when init can lose reboot/poweroff signals
ipcalc: trim help text
ipcs: tweak output orer to match util-linux 2.28
kbd_mode: show "off" mode too
kbd_mode: try harder to find console device if -C TTY is not given
klibc-utils: add ipconfig.c work-in-progress
klibc-utils: new applets: resume, nuke, minips
makedevs: allow much longer filenames
microcom: require exactly one non-option
netcat: net applet (alias to nc)
ntpd: do run the script at least once in 11 minutes
ntpd: improve treatment of DNS resolution failures
ntpd: mention in help text that -d can be repeated
ntpd: perform DNS resolution out of send/receive loop. Closes 10466
ntpd: skip over setting next DNS resolution attempt if it is not needed
pgrep: fix "pgrep -v -P1"; also allow matching of comm. Closes 10086
ping: better config help text for FEATURE_FANCY_PING
ping: fix help text to show what parameter -p takes
pmap: tweak help text, show usage if no params are given
ps: implement -o sid
ps: improve TIME column for large times: showing "14453:50" is not good
ps: stop using AT_CLKTCK, there are more standard ways
readprofile: do not close/free just before exiting
rpm2cpio: handle LZMA compressed rpms. closes 10166
rpm2cpio: use rpm_gettags
rpm: prepare rpm_gettags for reuse in rpm2cpio
rpm,rpm2cpio: do not compile not-configured parts of rpm.c
rpm,rpm2cpio: INIT_G() was missing (it is a nop here so far)
rpm,rpm2cpio: put both sources into one file, no code changes
run-init: new applet
script: -f means "flush", not "fsync"
script: make -t[FILE] compatible with util-linux
script: make -t independent of scriptreplay
sed: in '/regexp/cmd1;//cmd2', cmd2 should use the same regexp as cmd1
sendmail allow "=" symbol in recipient, closes 10241
sendmail: fix segfault if "To: email1,email2" is used
setconsole: much better help text
setconsole: since SUSE version has no -r, nuke our --reset longopt
setfattr: new applet
setpriv: accept any case in capability names
setpriv: code shrink, and grouping capability code together
setpriv: dump user and group info
setpriv: factor out capability name printing
setpriv: placate "declaration of 'index' shadows a global declaration" warning
setpriv: remove dependency on libcap headers
shuf: fix random line selection. Closes 9971
stty: add cmspar, flusho, extproc attributes
stty: fix bb_common_bufsiz1 use in NOEXEC
svc: fix a case where with more than one option, getopt() state is not reset
svc: remove superfluout INIT_G()
swapon: do not use FEATURE_MOUNT_LABEL, have your own FEATURE_SWAPONOFF_LABEL
sysctl: fix file parsing, do not require -w for VAR=VAL
sysctl: recognize ";comment" and "<whitespace>#comment" lines
syslogd,logger: code shrink for musl
tar: postpone creation of symlinks with "suspicious" targets. Closes 8411
telnet: "-a" + "-l USER" should respect USER
test: fix 4-argument case
time: fix build for toolchains without O_CLOEXEC
tls: fix build problem on non-static i386
tls: fix pstm asm constraint problem
tls: remove last int16 local variables in pstm code
tls: use capped SNI len everywhere
top: switch to malloced "globals"
ttysize: if stdin is not tty, try stdout, then stderr
ubi_tools: a bit smaller applet resolution code
ubi_tools: ubiupdatevol supports "-" input and actually respects -s SIZE
ubiupdatevol: fix bug with -sSIZE: was ignoring IMAGE_FILE
udhcpc[6]: downgrade "adapter index N" messages to log2 level
udhcpc[6]: fix messages referring to select() while we use poll()
udhcpc[6]: initialize entire sockaddr_ll
udhcpc[6]: make log2 messages for chaddr field indented like the rest
udhcpc[6]: on log level 1, three messages about raw socket is overkill
udhcpc: downgrade "MAC X:X:X:X:X:X" message to log2 level
udhcpc: paranoia when using kernel UDP mode for sending renew: server ID may be bogus
unlzma: fix SEGV, closes 10436
unshare: -r implies -U, not -u
unshare: -r should map root to user, not the other way around
unxz: get_le32 macro is obviously wrong
unzip: implement -j, closes 9126
unzip: robustify overwrite checks
unzip: sanitize filename length: malloc(1234mb) is not funny
unzip: support symlinks. Closes 10031
uuencode: allow space instead of "`" as padding char. Closes 10046
volume_id: enable minix detection
watchdog: do not use argc, other cleanups
xargs: optional support for -P NUM. Closes 9511
xxd: allow "-" as file name meaning stdin
zcip: fix slow environment leak
Eugene Rudoy (3):
iproute/iprule: support toolchains without RTA_TABLE routing attribute
unzip: fix content listing and filtering when -j is used
unzip: add missing -j to trivial usage
James Clarke (6):
networking: Fall back on IPPROTO_RAW when SOL_RAW is not defined
blkdiscard: Only build on Linux
xfuncs: Handle missing non-POSIX termios constants
df: Use statvfs instead of non-standard statfs
udp_io, traceroute: Standardise IPv6 PKTINFO handling to be portable
grep: skip grepping symlinks to directories
Johannes Schindelin (7):
ash: protect WIFSTOPPED use with #if JOBS
copyfd: guard use of munmap() with #if (windows builds need this)
ash: remove no-longer-used variable
ash: implement -d DELIM option for read
ash: report reason when a script file could not be opened
ash: when cd fails, say why
xargs: support -a FILE
Kang-Che Sung (3):
cat: allow compiling out -n and -b
make_single_applets: fix ": $((fail++))" expansion error
ps: allow ps config options if minips is enabled
Markus Gothe:
lsscsi: fix xchdir("..") from symlink in /sys/bus/scsi/devices
Matt Spinler:
watchdog: stop watchdog first on startup
Natanael Copa:
unzip: fix regression on big-endian machines
Patrick Steinhardt (8):
setpriv: do not process remaining args
setpriv: prepare option parsing logic for additional opts
setpriv: dump no-new-privs info
setpriv: dump inheritable capability set
setpriv: dump capability bounding set
setpriv: dump ambient capabilities
setpriv: allow modifying inheritable caps
setpriv: allow modifying ambient capabilities
Peter Korsgaard:
dpkg: fix CONFIG_FEATURE_CLEAN_UP handling
Ron Yorston (9):
printf: fix format string sanity check
od_bloaty: fix floating point output
ash: support platforms that don't have '%m' printf specifier
libbb: remove vdprintf
ps: fix build failure if FEATURE_PS_TIME is disabled
libarchive: fix build failure on NOMMU systems
tar: fix handling of first argument without '-'
kill: add '--' option to separate options from arguments
env: -u option fails due to typo
Thomas Petazzoni:
Makefile: include per-arch Makefile before Makefile.flags
Timo Teräs:
add-remove-shell: fix crash when shell is already added
Uwe Geuder:
bootchartd: prevent premature stop by device mapper
Xabier Oneca:
chcon: show '--reference' in help text only if LONG_OPTS=y
- 17 August 2017 -- BusyBox 1.27.2 (stable)
BusyBox 1.27.2.
(git,
patches,
how to add a patch)
Bug fix release. 1.27.2 has fixes for
svc (work correctly with more than one option specified),
unzip (big-endian fix),
shuf (was always moving 1st line elsewhere),
tls code (asm compilation problem on x86),
NOFORK ("rm -i" and "yes" could not be interrupted),
a bit of support for Fedora build.
- 18 July 2017 -- BusyBox 1.27.1 (stable)
BusyBox 1.27.1.
(git,
patches,
how to add a patch)
Bug fix release. 1.27.1 has fixes for
uuencode (allow space instead of "`" as padding char),
dd (fixed status=none),
setpriv (option parsing should not eat options in PROG ARGS),
fix for "applet (for example halt) as login shell" use case,
a few fixes for less typical build environments.
- 3 July 2017 -- BusyBox 1.27.0 (unstable)
BusyBox 1.27.0.
(git,
patches,
how to add a patch)
Sizes of busybox-1.26.0 and busybox-1.27.0 (with equivalent config, static uclibc build):
text data bss dec hex filename
925769 489 7352 933610 e3eea busybox-1.26.0
927115 489 7352 934956 e442c busybox-1.27.0
Changes since previous release:
Andrei Gherzan:
switch_root: don't bail out when console doesn't exist
Andrey Mozzhuhin:
ftpd: new option -a ANON_USER to allow anonymous logins
André Draszik:
iproute: support for filtering by and printing of scope
Assaf Gordon:
setpriv: new applet
Ben Hutchings:
modprobe: read modules.builtin
Cristian Ionescu-Idbohrn:
appletlib: avoid warning on unused function ingroup
unzip: remove now-pointless lseek which returns current position
Denys Vlasenko:
fix "ifdef ENABLE_foo": should always be "#if ENABLE_foo"
fix "loginutils/Config.in:319 error: Overlong line"
make DPKG=y and DPKG_DEB=y by default
make FEATURE_USERNAME_COMPLETION=y by default
make INSMOD=y by default
make RMMOD=y by default
move FEATURE_AUTOWIDTH config option to two applets which use it
move FEATURE_USE_TERMIOS config option to two applets which use it
make_single_applets.sh: a tool to check single-applet builds
qemu_multiarch_testing: small improvements
archival: add option -k "keep" to gzip/bzip2/lzop, add -U "nokeep" to lzop
libbb: consolidate the code to set termios unbuffered mode
libbb: eliminate redundant variable in sha_crypt
libbb: fix "error: redefinition of 'is_tty_secure'"
libbb: make check_password() also return CHECKPASS_PW_HAS_EMPTY_PASSWORD
libbb: match_fstype() is unreadable in the extreme, fixing it
libbb: move isqrt from factor, use it in diff too
libbb: shrink dump.c
libbb: spawn_and_wait() fflushes before forking NOEXEC; child reinits logmode
libiproute: FACT_FUNCization
add/remove-shell: copy /etc/shells mode to new file
ash: 16-bit nprocs field is a pain for many CPUs
ash: add INT_OFF/ON around allocations
ash: commented-out possible fix for 7694
ash: error out if ASH_INTERNAL_GLOB is not selected on uClibc
ash: fix a bug in argv restoration after sourcing a file
ash: fix $HOME/.profile reading if !ASH_EXPAND_PRMT
ash: fix open fds leaking in redirects. Closes 9561
ash: fix 'trap - 65'
ash: implement "exec -a ARGV0 CMD ARGV1..."
ash: revert "make dot command search current directory first"
hush: conditionalize print_escaped() on EXPORT || TRAP
hush: correct exitcode for unterminated ')' - exitcode2.tests testcase
hush: fix a bug in argv restoration after sourcing a file
hush: fix 'defined but not used' warning
hush: fix kill builtin without jobs support
hush: global_args_malloced is used only if set builtin is enabled
hush: kill builtin and kill %jobspec support
hush: make echo builtin optional
hush: make export builtin optional
hush: make memleak builtin optional
hush: make read and trap builtins optional
hush: make set/unset builtins optional
hush: make umask builtin optional
hush: reinstate [[ builtin
hush: remove redundand test for ENABLE_HUSH_JOB
hush: reorder builtins (cd and pwd ought to be close, etc), no code changes
hush: support %%, %+ and % jobspec (meaning "current job")
ash,hush: fix SIGCHLD interrupting read builtin
ash,hush: move "config" blocks above their use in coditional includes
ash,hush: make hush test optional, rename ASH_BUILTIN_foo to ASH_foo
ash,hush: make it possible to select "sh" and "bash" aliases without selecting ash or hush
busybox: stop depending on FEATURE_AUTOWIDTH for applet list
catv: convert this bbox-specific applet into "cat -v"
cryptpw: support "rounds=NNNNNNN$" thing in salts
depmod: don't build it if MODPROBE_SMALL=y
diff: fix -N and nonexistent files. Closes 7454
factor: new applet
fallocate: new applet
fsfreeze: new applet
ftpd/ls: show directories first
grep: FEATURE_GREP_CONTEXT should be available for "fgrep only" too
httpd: defend against attempts to OOM us. Closes 9611
httpd: use "Content-Length", not "-length"
init: dont send "Sent SIGTERM to all" msg to syslog: we just TERMed it!
init: rename FEATURE_EXTRA_QUIET to FEATURE_INIT_QUIET
iplink: implement "set promisc on|off". Closes 4682
ip: make ip aliases individually selectable
iproute: add "a" command as a synonym to "add"
iproute: support advmss option
link: new applet
ls: -1 should be ignored by -l (and options which imply -l)
ls: convert DISP_DIRNAME to a bool variable
ls: get rid of opt_flags[], handle -l1c through option_mask32
ls: handle -a and -A through option_mask32
ls: handle all sort options through option_mask32
ls: handle -d and -R through option_mask32
ls: handle -i through option_mask32
ls: handle -p and -F through option_mask32
ls: handle -s through option_mask32
ls: handle -x through option_mask32, remove default -C from --help
ls: LIST_ID_NAME/ID_NUMERIC/LOPT/LONG are the same, merge as LONG
ls: LIST_NLINKS/SIZE/DATE_TIME/SYMLINK are always the same, merge as LIST_LOPT
ls: make -Z output compatible with GNU coreutils 8.25
ls: more correct handling of -c, -u
ls: replace -e with --full-time, add --group-directories-first, delete -K
modprobe: do not descend into /etc/modprobe.d/DIR/. Closes 8686
modprobe-small: fix "modprobe non-existing-module" exitcode (should be 1)
modprobe_small: if only MODPROBE and DEPMOD are selected, no need to test for them
modprobe-small: make applets individually selectable
more: hardcode FEATURE_USE_TERMIOS=y in this applet; code shrink
mount: create loop devices with LO_FLAGS_AUTOCLEAR flag
nc_bloaty: use poll() instead of select()
nc: use poll() instead of select()
nl: new applet; also implement cat -nb (similar functionality to nl)
nproc: new applet
ntpd: print result of hostname resolution
partprobe: new applet
paste: delimiter list use should restart for each new output line
pgrep: fix pgrep -flx "sleep 11" - saw "sleep 11" processes as "sleep 11 "
pgrep: implement -a
ps: avoid -o stat to contain spaces. Closes 9631
rdate: make it do something remotely sane, facing 32-bit time overflow
rdate: time(NULL) is shorter than time(&var)
runit: fix chpst -n -N -u USER
runsv: update to match version 2.1.2 of runit
sendmail: allow "+" symbol in recipient. Closes 9646
sha512: use larger constant table only if sha512 is in fact selected
shred: new applet
su: FEATURE_SU_BLANK_PW_NEEDS_SECURE_TTY
svlogd: support -ttt (dateTtime instead of date_time)
taskset: rewrite to be task size-agnostic
taskset: separate "current" and "new" strings
tcpudp: define SO_ORIGINAL_DST directly, not via include
time: inplement -f FMT
top: FEATURE_USE_TERMIOS shouldn't control reading of screen size
udhcpc6: fix problems found running against dnsmasq
udhcpc6: fix releasing
udhcpc6: move misplaced comment
udhcpc6: read_interface should save link-local ipv6 address
udhcpc6: add comments about option 39, no code changes
udhcpc6: add support for timezones
udhcpc6: make -O OPT work
udhcpc: do not accept --background on NOMMU (same as -b)
udhcpc: fix "udhcpc -x hostname:NAME" not working on nommu
udhcpc: make sure we do not overflow poll timeout
udhcp: do not clobber errno by signal handler
udhcp: use poll() instead of select()
unlzma: fix erroneous "while" instead of "if". Closes 4682
unzip: do not use CDF.extra_len, read local file header. Closes 9536
unzip: optional support for bzip2, lzma, xz
unzip: properly use CDF to find compressed files. Closes 9536
umount: revert "umount: make -d always active, add -D to suppress it"
vi: don't touch file with :x when modified_count == 0
vi: survive if stdin is nonblocking. closes 9851
vi,fsck: do not use build timestamp unconditionally. Closes 9626
tls: a tiny TLS1.2 code, wire it up for wget
ssl_client: TLStest applet
wget: add a big explanation what TLS code implements and what does not
wget: add support for -S --server-response
wget: fix for brain-damaged HTTP servers. Closes 9471
wget/tls: session_id of zero length is ok (arxiv.org responds with such)
w: new applet, alias to "who -H"
xxd: new applet
Explorer09:
modprobe-small: optimizations for single applet build
Felix Fietkau:
ash: improve / fix glob expansion
Glenn Matthews:
reset: before calling execvp(), reset needs to flush stdout
James Byrne:
sv: update to match version 2.1.2 of runit
Jody Bruchon:
uniq: add -i option to ignore case
Add help text for 'uniq -i'
Jörg Krause:
Fix dependency for IFUPDOWN_UDHCPC_CMD_OPTIONS
Kaarle Ritvanen:
libbb: GETOPT_RESET macro
login: move check_securetty to libbb
Kang-Che Sung:
Allow FAST_FUNC to be overridden at build time
build system: no longer prompt for PLATFORM_LINUX option
bunzip2: fix code bloat caused by zcat's seamless magic
Fix FEATURE_{GZIP,BZIP2}_DECOMPRESS link error
Allow 'gzip -d' and 'bzip2 -d' without gunzip or bunzip2
shell: clarify help text of CONFIG_{SH,BASH}_IS_* options
ash: explicitly group ash options
ash: fix "kill %1" not working if CONFIG_ASH is disabled
hush: split bash compatible extensions into separate defines. No code changes
kill: need not build kill.c when ash's job control is off
kill: optimizations for single-applet build
modutils: fix config options dependency
modprobe-small: move lsmod code out of modprobe_main()
modutils: remove redundant "select PLATFORM_LINUX" configs
cmdline module options can be disabled on "big" modutils
Reorder modutils config options & fix yet more dependency
modprobe-small: document '-n' in depmod usage
modprobe-small: define and use DEPMOD_OPT_n (option mask)
Update depmod & modprobe upstream help text in comments
Laurent Bercot:
httpd: fix address family for reverse proxy client socket
ls: fix support for long options when FEATURE_LS_COLOR is deselected
Markus Gothe:
lsscsi: new applet
Maxime Coste:
paste: new applet
Ming Liu:
tar: add IF_FEATURE_* checks
Natanael Copa:
ntpd: improve postponed hostname resolution
Ron Yorston:
ash: fix error code regression
Rostislav Skudnov:
Replace int by uint to avoid signed integer overflow
dd: call fsync() only once before exiting if conv=fsync is specified
Stefan Tomanek:
ip rule: add suppress_{prefixlength,ifgroup} options
Tito Ragusa:
README_distro_proposal.txt: typo fixes
Tommi Rantala:
time: document -p in usage
time: implement -a, -o FILE
Waldemar Brodkorb:
modutils: remove special handling of uClibc
Youfu Zhang:
ash: fix incorrect path in describe_command
Yousong Zhou:
vi: avoid touching a new file with ZZ when no editing has been done
- 31 March 2017 -- Note for users of Linux kernels older than 2.6.27
If you are stuck with a kernel from July 2008 or earlier (2.6.26 or less),
and you are using mdev, device scan wouldn't work correctly due to an
incompatibility in /sys structure. You can work around it by reverting this
patch
in 1.26.x BusyBox sources.
(You also probably need to plan migration to a less ancient kernel).
- 10 January 2017 -- BusyBox 1.26.2 (stable)
BusyBox 1.26.2.
(git,
patches,
how to add a patch)
Bug fix release. 1.26.2 has fixes for
ash (redirect fds sometimes were not closed),
module utilities and tcpsvd (build fixes),
build system (IFUPDOWN_UDHCPC_CMD_OPTIONS option was not settable).
- 2 January 2017 -- BusyBox 1.26.1 (stable)
BusyBox 1.26.1.
(git,
patches,
how to add a patch)
Bug fix release. 1.26.1 has fixes for
single-applet builds (all applets are verified to successfully build when individually selected),
a few tweaks to defconfig were made.
Static binaries are available for downloads, with each individual applet
enabled separately, as well as the binary with almost all applets selected,
and helper binaries (ssl_helper for HTTPS wget support, index.cgi,
post_upload.cgi and httpd_ssi for HTTP server).
- 20 December 2016 -- BusyBox 1.26.0 (unstable)
BusyBox 1.26.0.
(git,
patches,
how to add a patch)
Sizes of busybox-1.25.0 and busybox-1.26.0 (with equivalent config, static uclibc build):
text data bss dec hex filename
942170 491 7496 950157 e7f8d busybox-1.25.0
944982 491 7504 952977 e8a91 busybox-1.26.0
Changes since previous release:
Aaro Koskinen (3):
cpio: add ownership (-R) test cases
patch: fix debug log failure
patch: fix matching failure
Bartosz Golaszewski (1):
i2cdump: don't use common_bufsiz1
Brian Foley (2):
awk: fix segfault on for loop syntax error
udhcpc: check read of option length byte to be within packet
Denys Vlasenko:
build system: fix a few warnings for allnoconfig build
build system: fix include/NUM_APPLETS.h generation
build system: make CONFIG_FEATURE_USE_BSS_TAIL less funky
examples/var_service/fw: optionally flush all netdevs; optionally prefer one 0/0 routing
examples/var_service/fw do not ruin $if[], use different name
examples/var_service/supplicant_if: new service example
examples: add a useful "see abridged log" script for ntpd service example
examples: add example of a DHCP server
examples: update var_service/README
config: disentangle PREFER_APPLETS from SH_STANDALONE and SH_NOFORK
trylink: use "mktemp tmp.XXXXXXXXXX" to placate OS X
getopt32: add new syntax of 'o:+' and 'o:*' for -o NUM and -o LIST
libbb/speed_table.c: survive B115200 and B230400 not fitting into 16 bits
libbb/xwrite: print errno on "short write" errors
libbb: do not use fflush_unlocked, musl does not like fflush_unlocked(NULL)
libbb: handle \S in /etc/issue
libbb: make xmalloc_sockaddr2dotted use NI_NUMERICSCOPE
libbb: send_to_from: do not require that "to" should have the same AF. Closes 9146
lineedit: fix completion with applet names. Closes 9361
lineedit: fix two bugs in SIGWINCH signal handling
libiproute: eliminate some redundant zero stores
ash: [EXPAND] Do not split quoted VSLENGTH and VSTRIM
ash: [EXPAND] Fix ifsfirst/ifslastp leak
ash: [EXPAND] Optimise nulonly away and just use quoted as before
ash: [EXPAND] Removed herefd hack
ash: [EXPAND] Split unquoted $@/$* correctly when IFS is set but empty
ash: [JOBS] Fix dowait signal race
ash: [MEMALLOC] Add pushstackmark
ash: [MEMALLOC] Made grabstackblock an inline wrapper for stalloc
ash: [PARSER] Add nlprompt/nlnoprompt helpers
ash: [PARSER] Do not show prompts in expandstr
ash: [PARSER] Fix parsing of ${##1}
ash: [PARSER] Handle backslash newlines properly after dollar sign
ash: [PARSER] Recognise here-doc delimiters terminated by EOF
ash: [PARSER] Report substition errors at expansion time
ash: [PARSER] Size optimisations in parameter expansion parser
ash: [REDIR] Move null redirect checks into caller
ash: [REDIR] Remove EMFILE special case
ash: [REDIR] Remove redundant CLOEXEC calls
ash: [REDIR] Replace copyfd by savefd and use dup2 elsewhere
ash: [SHELL] Expand ENV before using it
ash: [SHELL] Move flushall to the point just before _exit
ash: [SIGNAL] Remove EXSIG
ash: [VAR] Initialise OPTIND after importing environment
ash: [VAR] Remove setvarsafe
ash: [VAR] Sanitise environment variable names on entry
ash: add a FIXME for bug 9246
ash: add comment explaining "set -e; $(cmd)" discrepancy
ash: all blocks in function node copying must be SHELL_ALIGNed
ash: comment out free(p) just before _exit, tweak some outdated comments
ash: delete leftovers from "simplify EOF/newline handling in list parser" commit
ash: do not leave SIGQUIT ignored on "exec CMD"
ash: eval: Return status in eval functions
ash: expand: Fixed "$@" expansion when EXP_FULL is false
ash: explain EXP_REDIR and why we (dont) glob redir filenames
ash: fix "duplicate local" code (forgot to re-enable interrupts)
ash: fix "return N" not setting $? in loop conditionals
ash: fix arithmetic closing )) split by backslash-newline
ash: fix globbing bugs when using glibc glob()
ash: fix handling of ${VAR: -2}
ash: fix handling of NULs in $'abc\000def\x00asd'. Closes 9286
ash: fix handling of bashism $'xxx' with high-bit chars. Closes 9236
ash: fix interactive "command eval STRING" exiting on errors
ash: fix return_in_trap1.tests failure
ash: get rid of two global data variables
ash: if using libc glob(), skip it if no metachars are in word
ash: in heredoc code, fix access past the end of allocated memory. Closes 9276
ash: input: Allow two consecutive calls to pungetc
ash: jobs: Don't attempt to access job table for job %0
ash: make internal globbing code selectable from config
ash: make popfile() anfter popallfiles() safe
ash: move ifsbreakup() and ifsfree() up
ash: open-code blocking_dowait_with_raise_on_sig()
ash: optimize tryexec(): avoid one allocation
ash: partially sync with dash on "fork if traps are set" logic
ash: placate gcc: "warning: ! is only applied to the left hand side of =="
ash: reduce code differences from upstream
ash: remove dead stores and unused variables
ash: remove unused EXSHELLPROC
ash: return to DOWAIT_* constants similar to dash, no logic changes
ash: support "--" in "source" builtin
ash: undo "tokname hack"
ash: use glob() from libc
ash: use pause(), not sigsuspend(), in wait builtin
ash: use shellparam.optind/optoff in getopts() directly, not through pointers
ash: while (!got_sig) pause() is not reliable, use sigsuspend()
hush: "wait $!; echo $?" should return 127 if $! already exited
hush: 'return' should have effect earlier
hush: G.user_input_buf[] is needed only if line editing is enabled
hush: `cmd` and arithmetic also need the fix for FILE rewind
hush: add commented-out debug printouts in "memleak" built-in
hush: add func6.tests
hush: add var4.tests, var5.tests
hush: allow { cmd } to not be terminated by semicolon in some cases
hush: do not allow sh -c '{ echo boo }'
hush: do not leak script fds into NOEXEC children
hush: document better where bad redirect syntax is detected
hush: enable "msh is deprecated" message in msh stub
hush: factor out %jobspec parsing
hush: fix "(sleep 1; exit 3) & sleep 2; echo $?; wait $!; echo $?"
hush: fix ". EMPTY_LINE" not setting $? to 0
hush: fix "redirects can close script fd" bug
hush: fix "wait PID"
hush: fix 'eval ""' handling
hush: fix a bug in FEATURE_SH_STANDALONE=y config. Closes 9186
hush: fix a memory corruption when exported variable is modified
hush: fix exitcode on exec failure with EACCES - should be 126
hush: fix handling of by backslash-newline in $((arith)) and $(cmd)
hush: fix interactive input handling of backslash+newline
hush: fix var3.tests
hush: implement "wait %jobspec"
hush: make "wait %1" less likely to play with signal mask
hush: make getch/peek functions directly called
hush: non-matching "case" statement sets $? to 0
hush: rework "wait %jobspec" to work in non-interactive shells too
hush: rework input char buffering to allow more than one-deep peek
hush: simplify insert_bg_jobs
cp: fix -i for POSIX mode. Closes 9106
cp: make verbose cp show symlink copies too
cpio: fix restoration of file ownership, closes 9306
df: implement -B n<suff> and -B <suff> formats of -B option
dhcp: merge files.c into dhcpd.c
dhcp: merge leases.c and static_leases.c into dhcpd.c
dhcp: merge most of static_leases.c into dhcpd.c
dnsdomainname: split it from "hostname", make it independently selectable
dpkg-deb: remove unused FEATURE_DPKG_DEB_EXTRACT_ONLY config option
fdisk: fix CONFIG_FEATURE_SUN_LABEL=y build
fdisk: print much less cryptic partition table
fdisk: sanitize partition name printing; drop "Code" column; get rid of one static var
fdisk_gpt: simplify GPT partition name printing
find: fix handling of trailing slashes in -name PATTERN comparisons
hexdump: fix numerous bugs in handling of backslashes
httpd: explain why we use sprintf and why it should be fine
ifplugd: if SIOCSIFFLAGS fails with ENODEV, don't die
ifupdown: rewrite state file atomically
ifupdown: when flushing addresses with "ip", add label %label%
init: fix for FreeBSD console opening. Closes 9031
install: fix musl problem with dirname
ip: fix an improper optimization: req.r.rtm_scope may be nonzero here
ipneigh: add this shortcur similar to other "ip <CMD>" shortcuts
less: fall back to using fd #1 for keyboard reading. Closes 9231
less: fix SEGV
less: fix bracket search to match behavior of less 481
less: switch off nonblock on kbd_fd before exit
loadfont: 32k size limit is not enough
makedevs: make special node creation idempotent
man: allow nroff and tbl commands be overridden; unmangle writing to files
man: fix parsing of "DEFINE pager xyz". Closes 8976
man: make width selection more thorough; explain how to override it
man: remove -Tascii from nroff invocation
mdev: create devices from /sys/dev
more: accept and ignore a bunch of options
mount: for cifs, dont insert "ip=ADDR" option if user gave it explicitly
mount: tweak "IPv6 scoped addr" commit
ntpd: daemonize before DNS resolution
sed: fix "sed n (flushes pattern space, terminates early)" testcase failure
sendmail: make it possible to pause after connection helper is started
sha3: fix to conform to final SHA3 padding standard, add -a BITS option
su: expand help; simplify passing of -c CMD to run_shell()
svc: new applet (daemontools-compatible version of "sv")
tar: handle pax-encoded utf8 filenames and link names. Closes 9406
tc: consolidate its disabled bits
tcpsvd: don't keep shared fd open if fd limit is reached. Closes 9331
telnetd: fix a corner case where CRLF->CR translation can misbehave
telnetd: fix corner case of input processing of 0xff bytes
telnetd: fix handling of short writes to pty
telnetd: ifdef out a buggy error handling code path
telnetd: treat all 2-byte IACs in 240..249 range as NOPs
test: make [ and [[ forms individually selectable
test: memory leak: free group id list
top: move free(prev_hist) out of signal path
traceroute: cleanup and fixes for packet size calculations
udhcpc: check read of overload option data byte to be within packet
udhcpc: run "deconfig" script in manual renew state too. Closes 9061
unshare: --network should be --net. Closes 9116
vi: fix '' command (goto to prev context)
vi: make "g<key>" error message less likely to show garbage
wget/ssl_helper: update to wolfssl-3.9.8
wget/ssl_helper: strip was invoked incorrectly
wget: run s_client helper with -servername HOST
wget: there is no -s option in GNU Wget 1.18, we should be compatible
wget: treat 201,202,203 as success codes too. Closes 9211
whois: implement -i
whois: make it actually work
{md5,shaN}sum: make -c EMPTY fail
Francis Rounds (1):
svlogd: strip leading '!' from processor lines
Hauke Mehrtens (1):
libnetlink: fix alignment of netlink messages
Jonas Danielsson (1):
ping: populate icmp_id field for "simple" ping too
Kang-Che Sung (1):
docs: Update filenames in keep_data_small.txt
Linus Walleij (1):
AUTHORS: Add myself to AUTHORS
Lukasz Nowak (1):
libiproute: handle table ids larger than 255
Mike Frysinger (4):
modutils: support finit_module syscall
mdev.conf: rename hw_random to hwrng
setfiles: fix build failure after common_bufsiz change
selinux: drop deprecated headers
Miroslav Lichvar (1):
ntpd: respond only to client and symmetric active packets
Natanael Copa (4):
df: use f_frsize instead of f_bsize for correct sizes
lineedit: trivial codeshrink for vi-mode
gzip: fix compression level bug. Closes 9131
gzip: add test that checks that -9 compresses better than -1
Peter Korsgaard (1):
udhcpc: Unconditionally call deconfig script, not only if lease is active
Ron Yorston (2):
libbb: suppress warning about run_applet_and_exit
ash: return exit status of nofork applets
Rostislav Skudnov (2):
ash: exit after subshell error when errexit option is set
lineedit: fix handling of repeating Alt-b, Alt-f, Alt-d, Alt-Backspace
Serj Kalichev (1):
volume_id: Add support for UBIFS
Tito Ragusa (1):
strings: implement -t radix
- 7 October 2016 -- BusyBox 1.25.1 (stable)
BusyBox 1.25.1.
(git,
patches,
how to add a patch)
Bug fix release. 1.25.1 has fixes for
hush (newer glibc has different behavior on fflush; fix use-after-free for exported variables),
gunzip (incorrect handling of -N "compression level" options),
ip route (scope "Universe", numerical value zero, wasn't always set properly),
ntpd (check type of incoming packet, respond only to client requests).
- 22 June 2016 -- BusyBox 1.25.0 (unstable)
BusyBox 1.25.0.
(git,
patches,
how to add a patch)
Sizes of busybox-1.24.2 and busybox-1.25.0 (with equivalent config, static uclibc build):
text data bss dec hex filename
894406 494 7420 902320 dc4b0 busybox-1.24.2
893717 489 7304 901510 dc186 busybox-1.25.0
Changes since previous release:
Aaro Koskinen (5):
cpio: implement -R/--owner
xargs: make -I imply -r
gunzip: add support for long options
gzip: add support for --no-name long option
nandwrite: implement -n (read/write without ecc)
Ari Sundholm (2):
blkdiscard: new applet
truncate: always set mode when opening file to avoid fortify errors
Arnout Vandecappelle (Essensium/Mind) (1):
taskset: fix non-fancy cpuset printing on big-endian
Bartosz Golaszewski (7):
i2cdetect: fix address skipping in auto mode
i2cdump: don't read block data in non-block modes
i2cdump: use I2C block mode for the 'i' mode parameter
i2cdump: bail-out if block read fails
i2cdump: display the numeric value for block read ioctl() errors
unshare: new applet
nsenter: new applet
Bjørn Forsman (1):
kconfig/lxdialog: get ncurses CFLAGS with pkg-config
Chris Renshaw (1):
Resolve linker issues with Android API 21 (dprintf, tcdrain)
Christian Lindeberg (1):
udhcpd: keep expired leases at startup
Curt Brune (1):
networking: add 'ip neigh' command
Denys Vlasenko:
make MKPASSWD a separate config option, not an automatic alias to cryptpw
rename FEATURE_INITRD to LINUXRC and make it separate, not an alias to init
fixes for problems found by bionic build
build system: finer-grained selection of search speedup table
build system: fix generate_BUFSIZ.sh to not alternate 1k and malloc builds
scripts/trylink: fix bit-rotted linker option verification
scripts/trylink: libbusybox fix
scripts/trylink: remove $CPPFLAGS
scripts/trylink: on failure, print a hint about CONFIG_EXTRA_LDLIBS
generate_BUFSIZ.sh: catch BUFSIZE < 1024 also on "big" builds
libbb: constify *bb_common_bufsiz1 (if it is compiled to be a pointer)
libbb: factor out code which queries screen width
libbb: get_uidgid() always called with allow_numeric=1
libbb: make "COMMON_BUFSIZE = 1024 bytes, the buffer will be malloced" work
libbb: make bb_common_bufsiz1 1 kbyte, add capability to use bss tail for it
libbb: make parse_chown_usergroup_or_die() set unspecified uid/gid to -1
libbb: speed up error_msg functions
libbb: two new functions: wait_for_exitstatus(pid), xfchdir(fd)
libarchive: fix open_zipped()
libarchive: fix xmalloc_open_zipped_read_close()
networking: allow dot at the end of the domain name in dhcp response
arping: avoid use of ether_ntoa(). Closes 8926
ash: fix command -- crash
cp: add -u/--update and --remove-destination
dos2unix: try to preserve ownership. Closes 8311
du: extra compat: with -k and -m, round sizes up
dumpleases: make host names sanitized to shell-friendly condition
find_applet_by_name: add an example of faster linear search code
flock: fix -c; improve error handling of fork+exec
flock: merge spawn_and_wait() code patchs for -c and sans-c uses
fsck: do not use statics
fsck: use printf for message, not bb_info_msg
ftpd: make DIR parameter work for non-root too: chdir to it instead of chroot
grep: make errors other than "not found" result in exit code 2. Closes 8796
httpd: fix heap buffer overflow. Closes 8426
i2c_tools: suppress "'blen' may be used uninitialized in this function"
ifupdowm: fix "warning: unused variable 'iface_list'"
inotifyd: swap meaning of 'y' and 'm' events in help text. Closes 8726
iproute: support "scope". Closes 8561
libiproute: make rt_addr_n2a() and format_host() return auto strings
libiproute: rename invarg(a,b) to invarg_1_to_2(a,b)
login: add commented-out PAM double password avoidance from BZ 4003
ls: fix columnar output. Closes 8731
lzop: eliminate variable, use "int" as return type
mkfs_vfat: use bb_error_msg for logging, not bb_info_msg
modinfo: fix "-F firmware", add "intree" field display
modprobe-small: fix bogus handling of unpack errors
modprobe: skip non-.conf files only in subdirectories
modutils: fix build error with !DEPMOD
mount: support "nofail" option. Closes 8551
nmeter: convert field list to bit list
nmeter: fix a bug with unterminated varargs
nmeter: reinstate and document -d-1
nmeter: remove undocumented %NNNd specifier
ntpd: do not use a peer more than once (say, if two peers resolve to the same IP)
ntpd: if peer does not reply anymore, try re-resolving its hostname
ntpd: more informative poll lowering message
ntpd: print packet delay in clock update message
ntpd: retry initial DNS resolution (forever, no timeout for now)
ntpd: step when |offset| > 1 sec, not 0.125 sec
od: get rid of (almost all) statics
patch: correctly handle "patch FILE_TO_PATCH" form. Closes 7736
pmap: fix bogus {no such process} comm field text
rmmod: fix bad error message
sed: fix append command to match GNU sed 4.2.1
sed: make 's///w FILE' actually write to FILE. Closes 8251
sed: support "-f -" idiom
sed: understand \n, \r and \t in i and a commands. Closes 8871
setarch: add support for '-R' (disable randomization)
setfiles: switch bb_info_msg to printf
setsid: implement -c
sort: fix ENDCHAR handling in "-kSTART,N.ENDCHAR"
sort: fix key with delimiters breakage
stat: make -f optional. This allows to build stat for non-linux systems
sulogin: drop incorrect comment about suid-ness
sulogin: remove suid paranoia code, explain why it's not necessary
sulogin: use bb_error_msg instead of bb_info_msg; better message
tar: add a test that we don't write into symlinks
tar: add support for --strip-components=N
tar: fix files skipped with --strip_components not resetting selinux context
tar: implement --version for buildroot
tar: shrink hardlink name handling code
top: make sort field for 's' mode less confusing
udhcp: add setup_common_bufsiz() as needed
udhcp: fix a SEGV on malformed RFC1035-encoded domain name
udhcp: get rid of bb_info_msg()
udhcpc: do not use -t NUM for counting "select" packets, use 3
udhcpc: fix OPTION_6RD parsing (could overflow its malloced buffer)
umount: build fix for older glibc
unzip: better match for "standard" unzip's output; string shrinkage
unzip: fix a case where we find wrong CDE. Closes 8821
unzip: fix percent overflow; show "stored" files properly
unzip: shorter code for date/time generation
unzip: test for bad archive SEGVing
wget: if stderr is not a tty, progress bar shouldn't use tty-tricks
wget: make -T timeout work on header reads too. Closes 8636
wget: make Bartosz's "wget --passive-ftp -nd -t 3" work
zcip: do not query current time if we won't use the result
zcip: use bb_error_msg for logging, not bb_info_msg
Felix Fietkau (1):
busybox: fix uninitialized memory when displaying IPv6 addresses
Hans Dedecker (1):
dhcpc: Use client IP address as source address for DHCP renew/rebind messages
Isaac Dunham (1):
dumpleases: new option -d to show time in seconds
Jean Delvare (1):
kbuild: Fix gcc -x syntax
Junio C Hamano (1):
kconfig: fix menuconfig on debian lenny
Justin Lecher (1):
menuconfig: optionally use pkg-config to detect ncurses libs
Krzysztof Mazur (1):
menuconfig: fix extended colors ncurses support
Kylie McClain (1):
Fix compiling with musl's utmp stubs
Michal Marek (1):
kbuild: Make scripts executable
Mike Frysinger (12):
trylink: include LDFLAGS when checking linkage
swapon/swapoff: refine the -e (ifexists) option
blkid: add bcache support
truncate: use O_WRONLY|O_NONBLOCK
build: add a sanitizer debug option
modprobe: only parse files that end in .conf
ash_test: printenv: fix missing includes
ash_test: ignore generated files
Revert "lxdialog: fix ncursesw include detection"
syslogd: minor tweaks to text
undeb: clean up
unrpm: clean up
Natanael Copa (2):
ifupdown: use -x hostname:NAME with udhcpc
libbb: fix time parsing of [[CC]YY]MMDDhhmm[.SS]. Closes 8951
Nicolas Carrier (1):
init: make the command-line rewrite optional
Nicolas Cavallari (1):
ifupdown: allow duplicate interface definitions
Pascal Bach (1):
chpasswd: support -c argument and respect DEFAULT_PASSWD_ALGO
Rafał Miłecki (1):
dd: support iflag=skip_bytes
Richard Genoud (1):
tr: support octal ranges
Ron Yorston (26):
Rewrite iteration through applet names to save a few bytes
libbb: move common code into run_applet_and_exit
lineedit: search applets as well as PATH for tab completion
ash: add tests for failures of the exec and command builtins
ash: fix EXEXEC status clobbering
ash: allow popredir to be called if the stack is empty
ash: copy function tests from hush testsuite
ash: add support for bash 'function' keyword
ash: add test for issue with here document
ash: allow newline after variable name in for loop
ash: save a few bytes in code to parse case statements
ash: respect -p flag when command builtin is run with -v/-V
ash: only allow local variables in functions
ash: fix error during recursive processing of here document
ash: simplify EOF/newline handling in list parser
ash: fix corruption of ${#var} if $var contains UTF-8 characters
ash: bash-compatible $'...' shouldn't expand in double quotes
busybox: alter help message in standalone shell mode
busybox: make busybox an optional applet
Allow "busybox APPLET" to work when busybox is disabled
wget: shrink code if https isn't supported
libiproute: use if_nametoindex
printf: short-circuit output when argument to %b includes \c
applet_tables: save space by removing applet name offsets
find_applet_by_name: loop index should be signed
Sven Eisenberg (2):
ubirename: new applet
ubirmvol: implement -N switch for ubirmvol
Szabolcs Nagy (1):
ip: fix problem on mips64 n64 big endian musl systems
Timo Teräs (4):
ifupdown: pass interface device name for ipv6 route commands
fbsplash: use virtual y size in mmap size calculations
modutils: merge module_entry and module_info to common
networking: properly initialize ipv6 scope id for printing it
Yaakov Selkowitz (2):
kconfig: check ncursesw headers first in check-lxdialog
kconfig: fix check-lxdialog for DLL platforms
Yann E. MORIN (1):
kconfig/lxdialog: rationalise the include paths where to find {.n}curses{,w}.h
- 25 March 2016 -- Building on an Android tablet.
Android is based on Linux kernel, but sadly and unexplicably,
Android userspace is not Unix-friendly: in many cases,
things are done differently than in "usual" Unix systems.
For example, there is no /bin directory (and therefore ubiquitous #!/bin/sh
scripts won't work). Instead, there is /system/bin.
I have a Samsung Galaxy Tab S (SM-T700 model) and I made it compile Busybox as follows:
- "Rooted" the tablet (acquired root access). This step is device-specific.
- Installed the SuperSU application.
- Installed the Termux application -
it provides a small repository of essential tools: gcc-based toolchain,
git, ncurses, etc.
- Ran its terminal, installed packages I needed, pulled Busybox git tree.
- Created a /bin symlink to /system/bin, to make #!/bin/sh scripts work
(the build fails otherwise).
- Now the usual "make defconfig", "make menuconfig", "make" work.
Some parts won't compile (not all kernel headers are present, libc API
different or incomplete, etc). The maximal config which did compile
is now in the git tree, in configs/android_502_defconfig.
The toolchain provided by Termux is based on Android's Bionic libc
and Bionic has some design problems. An annoying one is that off_t is
32-bit, struct_stat::st_size is not off_t (this violates standard
expectations), therefore CONFIG_LFS=y does not build, and CONFIG_LFS=n
builds with warnings (printf'ing st->st_size with wrong specifier).
- 24 March 2016 -- BusyBox 1.24.2 (stable)
BusyBox 1.24.2.
(git,
patches,
how to add a patch)
Bug fix release. 1.24.2 has fixes for
build system (static build with glibc fixed),
truncate, gunzip and unzip.
- 24 October 2015 -- BusyBox 1.24.1 (stable)
BusyBox 1.24.1.
(git,
patches,
how to add a patch)
Bug fix release. 1.24.1 has fixes for
ftpd (DIR parameter works for non-root too),
httpd (heap overflow fix),
sort (fix for a a problem affecting glibc build).
Build system has a fix for the lost link-time optimizations. In 1.24.0 announcement,
you might have noticed that sizes unexpectedly grew relative to 1.23.2. Now it is fixed:
text data bss dec hex filename
860126 486 7272 867884 d3e2c busybox-1.23.2
869074 516 7364 876954 d619a busybox-1.24.0 (buggy link script)
858906 486 7180 866572 d390c busybox-1.24.0 (fixed link script)
858941 486 7180 866607 d392f busybox-1.24.1
Check out a new applet, "uevent". It is a netlink listener. It provides
alternative to having mdev as kernel hotplug helper. Instead of setting up
the former via "echo /sbin/mdev >/proc/sys/kernel/hotplug", start "uevent mdev"
early during boot. "uevent" will run "mdev" for each hotplug event, waiting
for each child to terminate before starting a next one.
The former method does not require a long-lived listener process,
but it is racy: many copies of mdev can run in parallel.
- 12 October 2015 -- BusyBox 1.24.0 (unstable)
BusyBox 1.24.0.
(git,
patches,
how to add a patch)
Sizes of busybox-1.23.2 and busybox-1.24.0 (with equivalent config, static uclibc build):
text data bss dec hex filename
860126 486 7272 867884 d3e2c busybox-1.23.2
869074 516 7364 876954 d619a busybox-1.24.0
I would like to feature some less-known useful tools in Busybox.
Let me talk about "nmeter" applet. I find myself using it
surprisingly often. For example, it helped me to correctly parallelize
a very large multiple kernel build job (~30000 kernel builds)
so that all CPUs are loaded, but machine isn't evicting file cache
because it has too many jobs for installed RAM.
When dealing with a machine which seems to be sluggish, it takes some time
to pinpoint the cause. It can be lack of free memory. It can be excessive
CPU load. It can be misbehaving (slow) storage or network.
nmeter allows to monitor many such parameters and presents them in a
compact one-line form. This lets you see the time evolution as well.
Here is an example:
# nmeter '%t %c x %x m %[mf] f%p p %[pn] b %b net%[neth0]'
20:51:22 .......... x 837 m 2.2g f 0 p 377 b 0 0 net 0 0
20:51:23 .......... x 1195 m 2.2g f 0 p 377 b 0 0 net 128 0
20:51:24 .......... x 1687 m 2.2g f 0 p 377 b 0 0 net 64 0
20:51:25 .......... x 1829 m 2.2g f 0 p 377 b 0 0 net 875 70
20:51:26 U......... x 1567 m 2.2g f 6 p 377 b 0 0 net 64 0
20:51:27 U......... x 1451 m 2.2g f 0 p 377 b 0 0 net 64 0
20:51:28 .......... x 1332 m 2.2g f 0 p 377 b 0 0 net 64 0
20:51:29 .......... x 1698 m 2.2g f 0 p 377 b 0 0 net 64 0
20:51:30 .......... x 1640 m 2.2g f 0 p 377 b 0 0 net 64 0
20:51:31 .......... x 1397 m 2.2g f 0 p 377 b 0 0 net 64 0
20:51:32 .......... x 1244 m 2.2g f 0 p 377 b 0 4096 net 64 0
20:51:33 U......... x 1660 m 2.2g f 0 p 377 b 0 0 net 128 0
20:51:34 U......... x 1793 m 2.2g f 0 p 377 b 0 0 net 64 0
20:51:35 .......... x 1583 m 2.2g f 0 p 377 b 0 0 net 64 0
20:51:36 .......... x 1308 m 2.2g f 0 p 377 b 0 0 net 64 0
If CPU load is high, the CPU bar will immediately show this.
%x column shows context switches per second, allowing to detect cases
where processes are waking and waiting on each other excessively.
%[mf] is free memory, and it is smart enough to show actual usable memory:
unlike many other tools, it considers buffer cache as free memory.
%p and %[pn] columns show forks and number of processes, they let you
detect a case where a daemon is respawning continuously.
Two %b numbers are block IO read and write rates. %[neth0] is network IO
rate on the specified interface. More specifiers exist - please read
"nmeter --help" output.
With -d MSEC option and small values of MSEC, this tool allows to see a
detailed view of bursty activity. Sometimes you can literally see every
network packet arriving. To make this possible, this tool is written
so that it reads the minimum of informaion it needs from /proc.
In this example, we can see how a packet arrived to eth0, complete with
its IRQ#30 firing:
# nmeter -d10 '%4t irq%30i net%[neth0]'
21:07:58.2301 irq 0 net 0 0
21:07:58.2401 irq 0 net 0 0
21:07:58.2502 irq 0 net 0 0
21:07:58.2601 irq 1 net 64 0
21:07:58.2701 irq 0 net 0 0
21:07:58.2802 irq 0 net 0 0
21:07:58.2902 irq 0 net 0 0
As you see, each update takes about 0.2 millisecond of processing
time. You can run even -d1, if you want. -d0 also works, it is a mode
where updates are continuous.
On the other hand, with large update interval,
you can run this tool continuously on a server machine and save its output,
to be able to investigate mysterious drops in performance at a time when
there was no operator present. If you have an oopsing server, it is useful
to have another nmeter instance's output to be constantly printed to
its console, if you want to see what was going on just before oops.
"Is my server occasionally dies in an IRQ storm?" situation.
Changes since previous release:
Aaro Koskinen (3):
gzip: add support for compression levels 4-9
diff: fix -B with single line changes
diff.tests: add testcases for -B and single line changes
Adam Tkac (1):
ntpd: relicense ntpd applet to ISC-style license
Alex Dowad (1):
ifupdown: 'prio' should have been 'metric' in static_up and static_up6
Alexander Korolkov (1):
arping: fix iface name in error messages
Alfonso Ranieri (1):
volume_id: fix a buglet introduced by is_prefixed_with() conversion
Andrew Fuller (1):
vi: basic undo feature shouldn't depend on yankmark
Ari Sundholm (3):
dd: add optional support for status=noxfer/none
dd: move suffix struct to xatonum.c
truncate: new applet
Arthur Gautier (1):
udhcpc: dns labels can actually start with a number
Bartosz Golaszewski:
Makefile: fix cscope target
i2cget, i2cset, i2cdetect, i2cdump: new applets
i2c-tools: fix 'i2cdetect -l'
i2c-tools: only try /dev/i2c/* if opening /dev/i2c-* fails with ENOENT
unit-tests: remove unnecesary field from struct bbunit_listelem
unit-tests: remove code depending on WANT_TIMING
Makefile: add missing libraries to LDLIBS
libbb: add unit tests for is_prefixed_with()
libbb: add a comment describing the way is_prefixed_with() works
libbb: add is_suffixed_with() function
i2c-tools: remove duplicate definitions
i2c-tools: rename remaining defines
Bernhard Reutner-Fischer (5):
dc: tweak parsing
wget: fix --header to not append duplicate headers
*: Switch to POSIX utmpx API
include: Fallback to UTMP unless there is UTMPX support
adduser: Add -k /path/to/skel
Christoph J. Thompson (1):
iproute: don't hardcode the path to config files
Clayton Shotwell (1):
applets: add installation of individual binaries
Daniel Thompson (1):
libbb: enable support for !CONFIG_MULTIUSER
Denys Vlasenko:
truncate: new applet
uevent: new applet
build system: -fno-builtin-printf
build system: make CONFIG_EXTRA_LDFLAGS go to LDFLAGS, not EXTRA_LDFLAGS
build system: remove special-casing for extra libs
examples/mdev_fat.conf: document that newer mdev exposes path
update example ntp.script
updated android_ndk_defconfig
platform.h: add compat mempcpy
platform.h: enable mempcpy for FreeBSD
platform.h: mempcpy needs <string.h>
libbb: add setsockopt_foo helpers
libbb: auto_string() for efficient handling of temporary malloced stirngs
libbb: code shrink by factoring out common update_utmp_DEAD_PROCESS
libbb: introduce and use is_prefixed_with()
libbb: make INET[6]_rresolve use sockaddr2{host,dotted}_noport
libbb: make is_suffixed_with() return pointer inside string, not key.
libbb: more compact API for bb_parse_mode()
libiproute: use itoa() where appropriate
libpwdgrp: fix a memory leak in getXXnam (we did not save address of string buf)
libpwdgrp: fix counting of commas in group list
libpwdgrp: getgrXXX: empty string is not a member name, do not store it
libpwdgrp: reinstate Tito's optional atexit freeing
libpwdgrp: store getXXnam result in a single malloc block
libpwdgrp: use FAST_FUNC to make "matching ABI" optimization more likely to succeed
libpwdgrp: use a better estimate of max struct size
libpwdgrp: use getpwent() instead of getpwent_r()
ash: a bunch of trivial simplifications
ash: add tests adapted from hush glob tests. glob2.tests currently fails
ash: explain what "local -" does
ash: fix a SEGV case in an invalid heredoc
ash: fix a SEGV in ${#1}
ash: fix handling of duplicate "local"
ash: make dowait() a bit more readable. Logic is unchanged
ash: simplify "you have mail" code
hush: add recent ash tests to hush testsuite too (they all pass for hush)
hush: document buggy handling of duplicate "local"
hush: fix a nommu bug where a part of function body is lost if run in a pipe
hush: fix umask: umask(022) was setting umask(755)
awk: support "length" form of "length()". Closes 8371
dc: fix "dc p" printing bogus data
deluser: also remove user from /etc/group
deluser: implement --remove-home
depmod: fix recent breakage in modules.dep generation
dhcpd: fix an improper widening conversion
diff: fix a bug in diffing against stdin. Closes 7784
dpkg: update supported compression methods
find: support "find . -delete" idiom - do not try rmdir(".")
ftpd: change_identity() must be after chroot()
ftpd: prevent zombies. Closes 7832
gzip: speed up and shrink put_16bit()
ifconfig: fix double free fatal error in INET_sprint
ifplugd: discovered why it needed net/ethernet.h: just for ETH_ALEN
inetd: fix order of array index check and array access
ip: increased max ID for /etc/iproute2/rt_tables to 1023
ipaddress: better formatting, no code changes
less: improve regular file detection in line counting code
ls: fix year 9999 bug :)
mdev: if a "future" mdev.seq is seen, do not overwrite it with ours
mdev: improve logging
modinfo: fix fallout from basename removal
modprobe-small: fix and simplify rmmod
modprobe-small: fix recent breakage: modprobe -r was using full path
modprobe-small: if concurrent module load did not succeed, wait
modprobe: fix "modprobe devname:snd/timer" case (alias with a slash)
modprobe: fix recent breakage: modules.dep reading code needs to strip dirname
modprobe: revert checking for /, stop doing basename() on modprobe args
ntpd: change help text about -l to say that it doesn't disable client code
ntpd: get rid of G.initial_poll_complete
patch: segfault fix. Closes 7916
ping: fix recently introduced build breakage for non-optimizing builds
ps: fix SEGV on narrow screens. Closes 8176
remove global "jmp_buf die_jmp" from !FEATURE_PREFER_APPLETS builds
route: fix bogus read error when route table is empty
route: improve -A inet6
runsvdir: (almost) close a signal race
runsvdir: do not block SIGCHLD around poll/sleep
runsvdir: if pid==1, also intercept SIGINT for -s SCRIPT
sed: implement ",+N" range end
sort: fix -kN,M handling (was including last separator into the comparison)
ssl_helper: tweaks discovered while building 32-bit version
sync: add support for -d -f FILE
tar: do not try to decode GNU extended headers as pax headers
tc: fix print_rate
trim extra newlines in help texts
udhcpc: fix for some Android toolchain breakage
umount: always use umount2 syscall with specified flags
unzip: prevent attacks via malicious filenames
uudecode: tolerate text input with CR+LF line ends
vi: make BACKSPACE and DELETE join lines at start/end of line
wget: make openssl/ssl_helper choice configurable
Eugene Rudoy (1):
ash: consider "local -" case while iterating over local variables in mklocal.
Felix Fietkau (1):
find: fix regression in status processing for path arguments
Frank Bergmann (1):
ifupdown: correct ifstate update during 'ifup -a'. Closes 6212
Guillermo Rodriguez (1):
free: handle "cached" value too
Isaac Dunham (1):
mount: -T OTHERTAB support
John Schroeder (1):
udhcpd: account for script delay in lease
Junling Zheng (1):
chown: fix help text
Kevin Wallace (1):
libbb/loop: don't try to re-use existing loop device
Linus Walleij (1):
fbset: fix rgba parsing
Maninder Singh (4):
typo fixes
fix if(p)/free(p) construct
fix whitespaces
Removes stray empty line from code
Martin Kaiser (1):
telnetd: we only need CONFIG_UNIX98_PTYS from the Linux kernel
Matt Whitlock (4):
Bionic lacks ttyname_r; provide a workaround
Bionic lacks tcdrain; provide a workaround
Bionic lacks mempcpy; enable existing workaround
Conditionalize Bionic workarounds on __ANDROID_API__
Michael Tokarev (1):
ip addr: support change and replace commands
Micke Prag (1):
ubiattach: add option -O
Mike Frysinger (3):
trylink: use mktemp instead of hardcoding paths
trylink: respect compiler settings when probing features
echo: make escape sequences depend on fancy mode
Natanael Copa (1):
modprobe: fix modprobe -r and parsing of /etc/modprobe.d
Peter Korsgaard (2):
dmesg: add -r option to print raw format even when FEATURE_DMESG_PRETTY is enabled
modprobe: handle module arguments containing spaces
Phil Sutter (1):
logread: implement dumpfollow mode of operation
René Rhéaume (1):
swaponoff: add support for -e
Rich Felker (1):
gzip: do not store timestamp in gzip header
Ron Yorston:
libbb: remove unnecessary argument to nonblock_immune_read
libbb: add a function to make a copy of a region of memory
ash: do not split the result of tilde expansion
ash: code shrink around varvalue
ash: perform tilde expansion in all parameter expansion words
ash: do not expand tilde in parameter expansion within quotes
ash: remove superfluous code in arithmetic mode
ash: remove arithmetic expansion collapsing at parse time
ash: move parse-time quote flag detection to run-time
ash: fix breakage of ${v/pat/str}
ash: remove parsebackquote flag
ash: use alloca to get rid of setjmp
ash: fix slash treatment in expmeta
less: document -S flag and make it independently configurable
less: fix display of line numbers
less: correctly account for tabs when rewrapping lines
less: improvements to verbose status messages
less: fix numeric input
less: move code to count lines into a separate function
less: rearrange detection of non-regular files
less: add a function to detect when display is at end of file
less: fix line number confusion
less: allow use of last column of terminal
less: further tweaks to regular file detection
less: fix botched attempt to use last column
vi: failure to open file is not an error when initialising buffer
vi: fix reading of file after last line
od: fix printing of high-bit chars
uname: make OS name configurable
ipcalc: fix trivial usage message
Serj Kalichev (1):
acpid: fix logging
Sören Tempel (1):
login: don't print motd if .hushlogin exists in users home
Thiago Jung Bauermann (2):
libarchive: auto-detect .Z files as well
bzcat.tests: Run both .gz and .bz2 tests, and add .Z tests
Tito Ragusa (4):
libpwdgrp: rewritten to use malloced implementation
libpwdgrp: line counting in error meesages is broken, remove it
libpwdgrp: fix thinko in getpwnam
libbb: another unit test for is_suffixed_with
Vladislav Grishenko (1):
zcip: fix wrong comparison of source IP with our IP
- 23 March 2015 -- BusyBox 1.23.2 (stable)
BusyBox 1.23.2.
(git,
patches,
how to add a patch)
Bug fix release. 1.23.2 has fixes for
dc (more tolerant to lack of whitespace),
modinfo (was not ignoring directory component of path names in a few places),
modprobe (better compatibility for "rmmod" alias),
wget (--header now overrides built-in headers, not appends to).
- 27 January 2015 -- BusyBox 1.23.1 (stable)
BusyBox 1.23.1.
(git,
patches,
how to add a patch)
Bug fix release. 1.23.1 has fixes for
ash (fixed a problem with ${#N} expansion),
ftpd (fixed "zombie apocalypse"),
modprobe (was not ignoring directory component of path names in a few places),
vi.
- 23 December 2014 -- BusyBox 1.23.0 (unstable)
BusyBox 1.23.0.
(git,
patches,
how to add a patch)
Sizes of busybox-1.22.1 and busybox-1.23.0 (with equivalent config, static uclibc build):
text data bss dec hex filename
873357 489 7072 880918 d7116 busybox-1.22.1
876323 490 7072 883885 d7cad busybox-1.23.0
Changes since previous release:
Aaro Koskinen (2):
less: make -E work
install: implement -t DIR
Ari Sundholm (2):
df: implement -T option
df: fix -T option when ENABLE_FEATURE_HUMAN_READABLE=0
Bartosz Golaszewski (17):
gitignore: ignore files generated by 'make test'
sort: remove a magic number from compare_keys()
sort: check global flags on fallback sort
ntpd: fix compilation warnings
top: fix compilation warnings
grep: properly handle grep -w "^str" in !EXTRA_COMPAT case too
Kbuild: move CONFIG_PAM to general configuration
shuf: fix a segfault on 'shuf -e'
shuf: improve help text
docs: update new-applet-HOWTO.txt
find: add optional support for '-exec ... {} +'
libbb: use a wrapper around sysconf(_SC_CLK_TCK) to save a few bytes
unit-tests: implement the unit-testing framework
Rename INIT_LAST to INIT_FUNC to avoid confusion
gitignore: add testsuite/echo-ne
libbb: use sendfile() to copy data between file descriptors
Config: select PLATFORM_LINUX if using sendfile()
Baruch Siach (2):
nandwrite: fix build when long options are disabled
nanddump: don't show --bb in usage when disabled
Bernhard Reutner-Fischer (1):
libbb: provide usleep() fallback implementation
Cristian Ionescu-Idbohrn (1):
tail: adjust help/usage texts
David Marchand (1):
modinfo: fix module parsing with kernel >= 2.6.37
Denys Vlasenko:
*: add conditional support for -v / --verbose
*: exit with 127 if applet name wasn't found - it's more POSIXy
ash,hush: do not segfault on $((2**63 / -1))
ash,hush: fix a thinko about 2^64-1 factorization
ash,hush: improve randomness of $RANDOM, add easy-ish way to test it
ash,hush: run reinit_unicode() only if makes sense
ash,hush: set $HOSTNAME is bash compat. Closes 7028
ash: factor out ASH_HELP config option
ash: fix handling of negative start value in ${v:start:len}
ash: fix off-by-one in "jobs %4" handling. Closes 7310
ash: in bash compat mode, always export $SHLVL
ash: make "local VAR" unset VAR (bash does that)
ash: make ${#var} unicode-aware
awk: fix handling of "if ... break ; else ..." - closes 7226
crond: implement "SHELL=prog" in crontab. Export LOGNAME as POSIX wants
crond: simplify logging code
du, copy_file: fix file matching on cramfs. Closes 5456
fakeidentd: simplify ndelay manipulations
false: make "false --help" exit with 1
find: exit code fixes for find -exec
find: fix a regression introduced with -HLP support
find: support -perm /BITS. Closes 7340
find: use sysconf(_SC_ARG_MAX) to determine the command-line size limit
ftpd: do not use root_fd if we are not in chroot
ftpd: escape chroot prior to re-executing ls helper
ftpd: for LIST, open current directory *in the child*
ftpd: make LIST command show dotfiles too
ftpd: support deprecated XPWD command
getty: set tty attrs so that control chars are shown as ^c
grep: fix "grep -r PATTRN SYMLINK_TO_DIR"
grep: fix -w match if first match isn't a word, but second is. Closes 4520
grep: fix two bugs with -w
hush: make "true" built-in
hush: make ${#var} unicode-aware
hwclock: fix setting of tz_minuteswest. Closes 5414
init: do not run shutdown/reexec actions from signal handler
init: if libc-based Unicode support is on, run setlocale(LC_ALL, "") at startup
ip link: add support for "address ETHADDR". Closes 4862
less: accept and ignore -s
less: disable "suppress empty wraparound" optimization
less: fix bugs discovered with "git log -p | less -m" on kernel tree
less: move "retry-on-EAGAIN" logic closer to read ops
libarchive: add capability to unpack to mem.buffer
libarchive: open_zipped() does not need to check extensions for e.g. gzip
libbb/obscure.c: code shrink. Suggested by Tito.
libbb: FreeBSD fix for B<num> baud rate constants not fitting into a short
libbb: don't die if crypt() returns NULL
libbb: fix a bad check for uclibc >= 0.9.31
libbb: fix bb_ask() to flush input before prompt, not after. Closes 7190
libbb: fix compile failure if both ARG_MAX and _SC_ARG_MAX are defined
libbb: fix empty PATH components handling
libbb: fix parsing of "10101010" date/time form
libbb: fix thinko in rtc_xopen()
libbb: if opening /dev/loopN returns ENXIO, don't try N++
libbb: make rtc_xopen try harder on EBUSY
libbb: make syslog level for bb_error_msg's configurable. use it in crond
libbb: open_zipped() should not fail on non-compressed files
libbb: use ARG_MAX for bb_arg_max() only if it's 60k+
lineedit: don't fall back to simple line input if tty is in raw mode
ls: make "ls -s DIR" show total too. Closes 4946
lzop: add overflow check
make xmalloc_open_zipped_read_close result NUL terminated
man: accept a list of dirs in $MANPATH
man: default to ascii
man: do not mangle $MANPATH in memory
mdev: treat zero-length /dev/mdev.seq the same as "\n" one. Closes 7334
modprobe,rmmod: reject module names with slashes
modprobe-small: (un)load all modules which match the alias, not only first one
modprobe-small: fix help messages for aliased module-related applets
modprobe-small: fix safe_strncpy truncating last char of module name
modprobe-small: remove redundant aliases from modules.dep.bb
nc: fix option bit positions. Closes 6926
networking/ssl_helper: experimental matrixssl-based ssl helper
networking: explain isrv_run() API
ntpd: add optional support for /etc/ntp.conf
ntpd: add support for -I IFACE
ntpd: adjust last packet's recv time after a step
ntpd: be less eager to use shorter poll intervals
ntpd: fix wrong delay value in one of the printed messages
ntpd: remove now unnecessary check for IP_PKTINFO definition
ntpd: truly ignore high delay packet
ping: revert "try SOCK_DGRAM if no root privileges"
platform.h: undef HAVE_STRCHRNUL only on correct versions of FreeBSD
rtcwake: fix incorrect (reversed) rtc/sys adjuestment; code shrink
script: make it work even if fd 0 is closed
sed: fix "sed CMD -i nonexistent_file". Closes 7484
sed: fix a buglet in s///NUM handling
sendmail: make -f optional, document its default value
sha3: add 32-bit optimized bit-sliced implementation
sha3: code shrink (and speedup for SHA3_SMALL=0)
shuf: new applet
sysctl: do not error out showing write-only data. Closes 6386
syslogd: make "-O -" log to stdout
tar: fix "tar -cJ" ignoring -J option. Closes 7706
tar: tighten up pax header validity check
taskset: fix logic error in "if it doesn't start with 0x..."
taskset: support CPU masks for more than 64 CPUs
test: fix mishandling of "test '(' = '('" and similar
tftpd: support full 512-byte requests
tftpd: tweak HP PA-RISC firmware bug compatibility
top: fix memset length (sizeof(ptr) vs sizeof(array) problem)
trylink: emit names of linked executables
ubiupdatevol: fix -t to not require an option. Closes 7466
udhcpc: account for script run time
udhcpc: don't use BPF filter, users report problems (bugs 4598, 6746)
udhcpc: fix BPF filter. Hopefully fixes the root cause of 4598 and 6746
udhcpc: ignore NAKs from "wrong" servers. Closes 4267
udhcpc: in comments, explain the kind of raw socket we create
udhcpc: make hostname sanitization optional. Closes 3979
udhcpd: if a lease from lease file coincides with a static one, ignore it
vi: clear undo buffer when we change to another file
vi: fix incorrect memory access on brace matching. Closes 7256
wget: add commented-out code to use ssl_helper instead of openssl
wget: add support for https using "openssl s_client" as a helper
wget: fix a case where progress bar isn't updated if writes are very slow
wget: fix use-after-free of ->user. Closes 6836
xargs: add support for -I and -i. Closes 493
zcat: complain if input is not compressed
Drew Moseley (1):
build system: specify '-nostldlib' when linking to .o files
Eugene Rudoy (1):
iplink: fix build with kernel versions prior to 2.6.23
Florian Fainelli (1):
ping: add -p to specify data pattern
Isaac Dunham (1):
unlink: new applet
Jacob Kjaergaard (1):
flashcp: change BUFSIZE to 4k
Jeremy Kerr (1):
udhcp: add PXELINUX path prefix option (code 210) definition
Jody Bruchon (1):
vi: undo support for vi with intermediate queuing
John Spencer (1):
man: parse "DEFINE pager" in config
Joshua Judson Rosen (5):
syslogd: avoid spurious ftrunctate() calls for "-b 0"
syslogd: remember to un-writelock log-files even when called with "-b 0"
syslogd: Unify unlink/truncate + unlock log-rotation logic
syslogd: syslogd: don't *decrement* log_file->size on write failures
syslogd: make "reopen log file every second" logic work for multiple logs
Kaarle Ritvanen (2):
ifupdown: support 'link' address family
sendmail: use FQDN in default envelope sender
Ken Sharp (1):
zcip: fix link-local IP conflict detection
Matt Whitlock (3):
avoid calling bb_strtou twice in MIN macro expansion
fix interaction of -a and -p options in swapon
add discard option -d to swapon
Matthias Andree (1):
build system: fix non-portable sed constructs.
Michael Gernoth (1):
stat: fix printing selinux context and null-dereference
Michael Tokarev (3):
testsuite: fix last "which" change
init: do not fail build if SIGPWR is not defined
iproute: support onelink route option and print route flags
Michel Stam (3):
udhcpd: add option for tweaking arpping
zcip: allow our own class B range to be used for ZeroConf
zcip: Add environment variable for overriding log functionality
Mike Frysinger (2):
uname: fix up usage documentation
appletlib: fix set-but-unused warning
Miroslav Lichvar (4):
ntpd: don't wait for good offset before disabling burst mode
ntpd: split out poll adjusting code
ntpd: don't stay at short polling interval
ntpd: calculate offset to jitter ratio before updating jitter
Morten Kvistgaard (1):
ftpd: add optional support for authentication
Pascal Bellard (1):
fatattr: new applet
Peter Kümmel (1):
Make it possible to override LOGIN_FAIL_DELAY in CONFIG_EXTRA_CFLAGS
Richard Genoud (4):
nanddump: correct rounding to next page (lead to infinite loop)
nanddump: add options --bb=skipbad and padbad
nanddump: kill -b Omit bad block
nanddump: change default to --bb=skipbad
Romain Naour (1):
su: add a delay if the password is incorrect
Ron Yorston (1):
lineedit: don't block when looking for escape sequence in vi-mode
Ryan Mallon (1):
fakeidentd: fix use-after-free
Timo Teräs (1):
top: fix and merge code to parse /proc/meminfo
Tito Ragusa (4):
adduser,addgroup: introduce and use CONFIG_LAST_ID
swapon/swapoff: size reduction, cleanup, fixes, improvements
swapon/swapoff: -a returns 0 on ignored errors
which: rewrite
- 20 January 2014 -- BusyBox 1.22.1 (stable)
BusyBox 1.22.1.
(git,
patches,
how to add a patch)
Bug fix release. 1.22.1 has fixes for
find (was requiring the path argument in some cases, unlike GNU find),
grep (fixes for -w handling),
ntpd (wasn't slewing time after large negative step),
compile fixes for some configurations.
- 1 January 2014 -- BusyBox 1.22.0 (unstable)
BusyBox 1.22.0.
(git,
patches,
how to add a patch)
Sizes of busybox-1.21.1 and busybox-1.22.0 (with equivalent config, static uclibc build):
text data bss dec hex filename
891522 497 7584 899603 dba13 busybox-1.21.1
893754 497 7568 901819 dc2bb busybox-1.22.0
Changes since previous release:
Aaro Koskinen (9):
fdisk_sun: fix corrupted partition data with blank disk
fdisk_sun: fix partition alignment
sendmail: avoid sending mail to wrong addresses
sendmail: don't mangle e-mail headers
sendmail: support addresses inside angle brackets
sendmail: support address lists
sendmail: support long header fields for recipients
sendmail: don't add To: header if it already exists
sendmail: don't add multiple To: headers
Alexander Shiyan (2):
nanddump: fix build if nandwrite isn't enabled
flash_eraseall: implement -N
Bartosz Golaszewski (6):
grep: don't bail out on first mismatch if '-w' option is set
networking: code shrink
date: accept 'yyyy-mm-dd HH' and 'yyyy-mm-dd' date formats
Refactor catv. Move visible() from stty to libbb.
tail compat: fix header printing for tail -f
bloat-o-meter: add usage info
Bernhard Reutner-Fischer (11):
awk: Fix handling of functions with empty body
setserial: Fix typo: s/baund_rate/baud_rate/g
chrt: remove warning for _POSIX_PRIORITY_SCHEDULING
buildsys: Add helper to list suid applets
awk: Fix handling of functions with empty body
swaponoff: shrink
ash: Use setvar2 some more
ash: Set SHLVL in ASH_BASH_COMPAT
fstrim: -17b
fstrim: Indicate failure on error
fstrim: Needs to fire at the mp, not bd
Bernhard Walle:
pgrep: fix -x option
Bogdan Purcareata:
init: halt on SIGPWR too
Cristian Ionescu-Idbohrn:
foo*sum: Correct syntax error
Cédric Cabessa:
syslogd: use _PATH_LOG when available
Daniel Borca (4):
platform: strchrnul is missing if __APPLE__
dpkg-deb: cosmetic correction to usage text
ping: try SOCK_DGRAM if no root privileges
build system: fix make gconfig
David A. Wheeler (2):
sed: accept -E as a synonym for -r
sed: accept s///i as a synonym for s///I ("ignore case")
Denys Vlasenko:
Call setlocale("") , not "C", if we want to set the default one
Commonalize typical [b,]k,m suffix struct
Make smart_ulltoa return pointer to end (allows for code shrink in callers)
Makefile.custom: make "make release" delete .gitignore files too
Move create_icmp[6]_socket to its only user, and simplify it
Use unsigned printf/scanf conversion where more appropriate
adduser: check whether run with no USERNAME. Closes 6728
awk: fix a bug in argc counting in recent change
awk: fix length(array)
awk: use "long long" as integer type, not "int"
bootchartd: warn if .config looks wrong
build system: use od -b instead of od -t x1
bunzip2: fix off-by-one check
chpst: fix a bug where -U USER was using wrong USER (one from -u USER)
cryptpw: do not segfault on EOF. Closes 6350
dd: do not reuse local variables for unrelated values
dd: fail if swab is attempted on odd-sized block
dd: support conv=swab
decompress_unlzma: 10% speedup in "small" code
decompress_unlzma: make "fast" version a bit smaller
devfsd: remove static variable
ether-wake: shorten help text, reduce packet buffer size
find: support -HLP
find: get rid of nested function (it's a gcc-ism)
fix assorted unused code and wrong format specs found by cppcheck (bug 6716)
fix build error with musl libc due to if_slip.h
fix error message on failure to open /dev/null; fix zcat's help text
flashcp: pad output to BUFSIZE. Hopefully closes 5882
foo*sum: report I/O errors, don't merely exit with 1
head,tail: use common suffix struct. simplify help text
head: support -n -NUM and -c -NUM
hexdump: don't unconditionally limit the usable address range
hexdump: need to use xstrtoull for off_t
hostid: do not output sign-extended host id. Closes 6056
httpd: don't allow tabs and multiple spaces in request string
httpd: make sure pfd[TO_CGI].revents is cleared before poll()
httpd: treat errors from stdin correctly.
hush: fix build failure if FEATURE_EDITING=y && !HUSH_INTERACTIVE
hush: fix for "while false && true; do echo BUG; break; done". Closes 6170
hush: source builtin should override $N only if it has args
hush: typo fixes in comments
ifplugd: make -k send SIGINT, not SIGQUIT
ifupdown: support "source" stanza in /etc/network/interfaces
init: don't use fixed size buffer for command
init: remove special-case code for machines with less tham 1 MB of RAM
iplink: comment out include <net/if_packet.h>
iplink: fix build error (IFLA_VLAN_PROTOCOL defined before include)
less: support "less 1<>TTY"
libbb: introduce and use strftime_[YYYYMMDD]HHMMSS()
lineedit: \W on "/bin" should show "bin", not "/bin"
lineedit: add handling of \H in prompt
lineedit: fix multi-line PS1 handling: calculate PS1 length from last \n
lineedit: implement \T \t \A \@ prompts escapes, fix \W escape, drop \!
lineedit: improve Unicode handling (still buggy though)
lineedit: use unicode_strwidth instead of unicode_strlen
loadkmap: explain what happens with K_ALLOCATED key value
logread: don't call shmdt() before exit, kernel does it for us
logread: flush output. Closes 6710
logread: intercept all fatal signals, not just SIGINT
losetup: assorted fixes. Closes 6314
lzop: fiq -q and OPTION_DECOMPRESS mismatch
make --help return exitcode 0. Closes 5612
man: install to /usr/bin, not /sbin
md5/sha512: a better fix for strict aliasing warnings
mdev: add environment variable match
mdev: call index_in_strings on $ACTION only after we checked it for NULL
mdev: chdir back to /dev after trying to read firmware
mdev: extend debug logging output
mdev: improve $SEQ handling; improve debug logging
mkfs_minix: use get_volume_size_in_bytes instead of local version
nc: don't redirect stderr to network in -e PROG mode
nc: exit when both stdin and network are closed
nc: fix build failure ("subscripted value is neither array nor pointer")
nc: remove some dead code
nc: remove unnecessary "errno = 0"
nc: use symbolic SHUT_WR instead of literal 1
nc_bloaty: support -ll and -lk. Closes 2245
nslookup: set default DNS server again. Hopefully helps with 675
ntpd: do not invalidate datapoints after step
ntpd: drop delay outliers; run "unsync" handler if no replies for some time
ntpd: let user know if spike was detected
ntpd: make "unsync" code actually work
ntpd: promote log level 3 to production
ntpd: set G.last_script_run even if script isn't configured
ntpd: set offset to 0.0 in "unsync" event
ntpd: speed up resyncing if our clock is seriously off
ping[6]: accept and ignore -n. Code shrink
ps: fix sscanf format specifier (%l); make uptime unsigned
ps: seconds_since_boot: uint64_t -> ulong
pstree: fix theoretically unsafe code
rfkill: use new-style config/kbuild/applet
rpm: make -ql display more compatible; improve help text
rpm: stop using statics; move main() to the end of the source file
rpm: unmap rpm file before working with next one
rpm: use "create+rename" method of replacing existing files
run-parts: stop providing incompatible short options
sed: document where we are more liberal then GNU
sed: fix "sed clusternewline" testcase
sed: fix matching of newlines by $
sed: fix memory leak in 'r FILE' command
sed: open input files sequentially to avoid EMFILE
sed: remove now-redundant backslash-newline handling
stty: disable CIBAUD leak check - it is not necessary on Linux
sulogin: use common password-checking routine
tail: track file size only in -f mode
tar: add a testcase for previous commit
tar: fix exitcode check for MMU-spawned unpacking helpers
tar: prevent empty file to be treated as valid tarball
testsuite: fix false positives for du
touch: add conditional support for -h
ubi_tools: add forgotten argv++
ubi_tools: enhance -s option to allow size multiplier to match mtd-utils
ubi_tools: extend supported volume size to 64 bits; shrink code
udhcpc6: fix port numbers used if !FEATURE_UDHCP_PORT
udhcpc: allow zero server-id. Closes 6614
udhcpc: fix a problem with binary-encoded options #2
udhcpd: add -I LOCAL_ADDR option
unicode: check $LC_ALL to detect Unicode mode, not only $LANG
unicode: check $LC_CTYPE too to detect Unicode mode
unpackers: by users' request, print compression percentage if -v and DESKTOP
unzip: increase PEEK_FROM_END from 16k to 64k
unzip: survive lack of CDF on non-streaming zip files
vasprintf: do not use xmalloc, it will deadlock on OOM
vasprintf: return -1 on strdup failure
vi: make regexp search case-insensitive if ":set ignorecase" is active
volume_id_internal.h: drop unoptimized byteswap routines
wall: access FILE under real user's credentials
wget: do not abort if "_" is encountered in a HTTP header
zcat: fix "zcat FILE" trying to do detection twice
zcat: if seamless uncompressors are defined, autodetect file's format
Flemming Madsen:
ash,hush: history builtin
Guilherme Maciel Ferreira (2):
traceroute: free some memory allocated by xzalloc()
wget: if FEATURE_CLEAN_UP, free(ptr_to_globals)
James Hogan:
grep: fix grep -x to not set REG_NOSUB
Jeremy Kerr:
udhcp: add PXELINUX config file option (code 209) definition
Jody Bruchon:
fdisk: fix GPT size math errors
Johannes Stezenbach:
udhcpc: make DHCP packets to have at least 300 DHCP bytes
John Spencer:
man: find posix man pages
Jonathan Liu:
sulogin: allow system maintenance login if root password is empty
Kang Kai:
testsuite/du/du-k-works: fix false positive
Kuleshov Aleksey:
arp: fix -H/-t handling.
Lasse Collin (11):
xz: omit explicit \0 from HEADER_MAGIC
xz: update README
xz: avoid "NOTE:" in xz.h
xz: add a comment about using uint32_t as vli_type
xz: make bcj_x86_test_msbyte() an inline function
xz: remove an empty line from xz_dec_lzma2.c
xz: add C++ support to xz.h
xz: fix decoding of LZMA2 streams having no uncompressed data.
xz: fix incorrect XZ_BUF_ERROR
xz: mention xzminidec.c in README
xz: support concatenated .xz streams
Lauri Kasanen (2):
wget: add support for connect timeout
wget: user-friendly fallback to http
Leonid Lisovskiy:
xz: fix put_unaligned_{l,b}e32
Malek Degachi:
fstrim: New applet
Mandeep Singh Baines:
losetup: fix util-linux compatibility
Michael Tokarev (4):
fix bashisms in testsuite/
expand: use printable_string instead of hard-coding implementation
do not fail build if MAXSYMLINKS isn't defined
hostname: do not use gethostbyname() for "hostname -s"
Mike Frysinger (12):
udhcpc: support resolv.conf symlinks
udhcpc: tweak math shell style with the metric var
bbunzip: ignore the -q flag with the decompressors
bbunzip: fix order of flags vs bit defines
archival: note implicit dependencies between lzop & bbunzip
udhcpc: use readlink rather than realpath
platform: use KERNEL_VERSION to simplify uClibc version checking
readlink: uClibc supports automatic allocation too now
readlink: note that our -f is really -e
pstree: stop truncating thread names
md5/sha512: fix strict aliasing warnings
trylink: only prefix libs with -l
Nicolas Dichtel:
networking: fix potential overflow in ife_print6()
Nikolaus Voss:
mdev: use $DEVNAME in uevent sysfs file for device node name
Oliver Metz:
volume_id: fix ntfs attribute search
Patrick McHardy:
ip link: add VLAN support
Paul B. Henson (2):
ubimkvol: add -m option to create volume of maximum size
ubi_tools: fix typo in strcpy
Paulius Zaleckas:
init: don't srop unterminated processes' entries during inittab reload
Peter Korsgaard (3):
run-parts: add --exit-on-error | -e support
run-parts: fix unicode creep in --help
ar: read_num(): fix reading fields using the entire width
Rich Felker:
*: change execl sentinels from NULL to (char*)0
Ron Yorston:
vi: fix adjustment of buffer on partial file read
Ryan Mallon (2):
libbb: Add xsetegid(), xseteuid(), xopen_as_uid_gid() functions
wall,crontab: use xopen_as_uid_gid()
SASAKI Suguru:
tar: fix tar -T to add entries in the exact order as the input list
Shawn J. Goff:
lineedit: initialize delptr
Stefan Hellermann (2):
ash: move code to allow setting $HOME in /etc/profile
ash: read $HOME/.profile instead of $(pwd)/.profile
Sven-Göran Bergh (5):
volume_id: Adopt to new kbuild style.
volume_id: Adopt to new config style.
volume_id: nilfs config description.
volume_id: add f2fs detection
awk: optionally support -e AWK_PROG
Thomas De Schampheleire (2):
nameif: fix use-after-free in ENABLE_FEATURE_CLEAN_UP code
lsof: correct check for symbolic link
Thomas Petazzoni:
libbb: use <poll.h> instead of <sys/poll.h>
Tito Ragusa (2):
ifplugd: use a larger netlink buffer
swapon: support "pri=NNN" in fstab
Uros Vampl:
killall5: return 2 if no processes got killed
Yuan-Hsiang Lee:
init: fix illegal memory access when max message length is reached
- 29 June 2013 -- BusyBox 1.21.1 (stable)
BusyBox 1.21.1.
(git,
patches,
how to add a patch)
Bug fix release. 1.21.1 has fixes for
ntfs detection (big-endian fix),
xz decompression of concatenated streams,
mdev acquired a [ENV=regex;] extension instead of undocumented subsystem match hack
it used to have prior to 1.21.x.
- 21 January 2013 -- BusyBox 1.21.0 (unstable)
BusyBox 1.21.0.
(git,
patches,
how to add a patch)
Sizes of busybox-1.20.2 and busybox-1.21.0 (with equivalent config, static uclibc build):
text data bss dec hex filename
895377 497 7584 903458 dc922 busybox-1.20.2
897317 497 7584 905398 dd0b6 busybox-1.21.0
Changes since previous release:
Alexey Froloff (1):
udhcpc: gracefully handle packets with CHECKSUM_PARTIAL
Andreas Oberritter (2):
ifupdown: improve compatibility with Debian
get_linux_version_code: don't fail on Linux version strings like "3.0-foo"
Anthony G. Basile (2):
build system: fix build failure when only gunzip is selected
CONFIG_PID_FILE_PATH: new configuration option for pidfile paths
Aurelien Jarno (1):
*: declare strings with ALIGN1, as appropriate
Baruch Siach (3):
nanddump: use the right operator of logic AND
nanddump: skip bad blocks when instructed to do so
nanddump: invert the meaning of the -o parameter to match upstream
Bernhard Reutner-Fischer (1):
mount: fix -o user=foo mishandling, fix unc= generation, add prefixpath=
Bernhard Walle (1):
build system: fix build of kconfig on Darwin
Boris Reisig (1):
tar: support -J, --xz explicit compression option
Bradley M. Kuhn (1):
Simplify copyright/license notice that appears in the binary
Christoph Lohmann (1):
mdev: tell kernel that we didn't find the firmware
Cliff Frey (1):
lineedit: fix Alt-D when cursor==0
Dennis Groenen (1):
lineedit: histfile can get emptied when CONFIG_FEATURE_EDITING_SAVE_ON_EXIT=y
Denys Vlasenko:
build system: stop .eh_frame generation
build system: fix build failure when compressed help is selected, but bz2 compression is not
scripts/kconfig/mconf: work on systems w/o SIGWINCH
platform.h: disable ALIGNn macros for s390[x]
adduser: install to /usr, not /, like all other similar tools
ash: fix "read -s" + ^C. Closes 5504
ash: fix a bug in >${varexp} handling. Closes 5282
ash: implement export -n
ash: revert wrong "fix" for an apparent memory leak. Closes 5822
awk: fix FS assignment behavior. Closes 5108
awk: make -F STR interpret escape sequences. Closes 5126
brctl: fix build failure by s/strtotimeval/bb_strtotimeval/ (android has strtotimeval)
busybox: tweak help text and copyright year
decompress_uncompress: comment out debug printout on corrupted data
decompress_uncompress: move 'code' variable into loop - sole user
dhcpd: write lease file on exit
dpkg: fix creation of .list files (were empty since b768aeb). Closes 5324
du: document incompatibility with standard tool
examples/mdev_fat.conf: small addition
find: if DESKTOP=y, support -wholename (synonym for -path)
find: make -mindepth N -xdev correctly stop on mountpoints
ftpd: fix MDTM's month value. Closes 5336
ftpd: free allocated string on error path
getty: fix for NOCTTY killing us with SIGHUP
grep: fix grep -Fw not respecting the -w option. Closes 5792
ifconfig: do not accept "ifconfig eth0 up 1.2.3.4/17" (ip with mask). Closes 5786
libbb: correctness/size tweaks in signal-related helpers
lineedit: in !EDITING config, return -1 on fgets error
login: increase login name size limit from 32 to 64
lpr: don't send 0-byte print jobs (compat)
man: fix handling of gzipped manpages
mdev: add support for $DEVNAME and /dev/mdev.log debug aid
mdev: fix mode of dir1 in =dir1/dir2/file rule
mdev: remove undocumented subsystem/devname matching hack
mdev: when found, print major,minor into mdev.log
modprobe_small: make rmmod to NOT remove dependencies. Closes 5162
mount: do not pass "comment=ANYTHING" option to kernel. Closes 5240
mount: fix the wrongly stored fs creation time
mount: set up RO loop device if mount -o ro. Closes 4784
mount: support strictatime option. Closes 5240
ntpd: on time step, kill all outstanding replies from other peers
sed: fix handling of s/// which has empty matches
sed: fix zero chars match/replace
sha3: make size/speed optimization decision configurable
syslogd: do not segfault on parse error when using default config. Closes 5762
telnet: convert CR -> CR LF, not CR -> CR NUL when sending data to server
telnet: convert Enter -> CR LF in line mode too
tftpd: fix -u USER to work with chroot. Closes 5348
top/ps: argv0:"gdm-session-worker [pam/gdm-password]" == comm:"gdm-session-wor"
top: do not touch stdin if -b
top: fix "last CPU" parsing
top: implement scrolling up/down (_very_ useful)
udhcp[cd]: fix binding to network aliases. Closes 5432, 5438
udhcpc: make -O <numeric_opt> work. Closes 5402
udhcpc[6]: show select timeout in log
unzip: make options parsing more robust on getopt w/o gnu extensions
vi: do not set autoindent by default
vi: nuke FEATURE_VI_OPTIMIZE_CURSOR
vi: save/restore screen upon invocation
volume_id/ext: detect ext4 too
wget: correctly handle failure to -c (continue)
wget: make -c _not_ truncate the file
wget: reorder fread and poll: poll only if fread returns EAGAIN. Closes 5426
wget: try reading after poll timeout - stdio may have buffered data. Closes 5426
Eric Martin (1):
acpid: add missing lid switch definition
Etienne Le Sueur (1):
tar: fix 256-bit encoded number decoding
Felix Fietkau (1):
udhcpc[6]: allow discover_retries == 0 (infinite)
Jon Tollefson (1):
ash: fix a memory leak
Joshua Kahlenberg (1):
sysctl: implement -q
Lauri Hintsala (1):
powertop: fix error message
Lauri Kasanen (1):
sha3sum: new applet
Linus Walleij (2):
fbset: respect rgba configuration lines in fb.modes
fbsplash: support non-RGB565 pixels in 16-bit mode
Manuel Zerpies (1):
flashcp: remove unused variable opts
Martin Santesson (1):
mount: add unc option to CIFS mount (needed for Linux 3.4+)
Matt Reimer (1):
nanddump: make dumping read-only partitions work
Michael Tokarev (2):
ps: use separate get_uptime() and make it work on non-linux too
*: declare strings with ALIGN1, as appropriate
Mike Frysinger (5):
udhcpc6: depend on ipv6
include sys/resource.h where needed
disable format security warnings
build system: use pkg-config to look up selinux libs
ifenslave: fix missing close paren
Mimi Li (1):
sed: allow 'w' cmd to use two address form
Natanael Copa (2):
tar: implement --no-recursion
unzip: ignore chmod errors
Nicolas Thill (1):
brctl: fix description and usage
Pascal Bellard (1):
su: do not change to home dir unless -l
Paul Marks (1):
ntpd: fix incorrect m_status field in outgoing packets. Closes 5120
Peter Korsgaard (4):
dmesg: handle multi-char log levels
klogd: handle multi-char log levels
syslogd: add option to log to Linux kernel printk buffer
syslogd: convert dummy functions to statics and get rid of IF_FEATURE_* checks
Pierre Carrier (1):
config: do not refer to HTTPS for wget
Ron Yorston (2):
sendmail: use host rather than NIS domain name for HELO
mktemp: fix mktemp -u temp.XXXXXX returning garbage when TMPDIR is set
S-G Bergh (2):
blkid: show filesystem when both label and UUID are missing, but type is known
volume_id: add exFAT detection
Simon B (4):
ln: support -T and -v
sed: support long opts and -iSFX
mkdir,rmdir: accept and ignore -v, --verbose
mv: accept but ignore -v
Sven-Göran Bergh (6):
blkid: add type display for btrfs
blkid: add support for nilfs2
blkid: add type display for hfsplus
volume_id: display hfs[+] 128-bit UUID properly
volume_id: uuid_format small code shrink
volume_id: add squashfs detection
Tanguy Pruvot (2):
testsuite: some more awk tests related to conditions
modinfo: match more standard module fields and fix version field
Tias Guns (5):
inetd: fix build failure in Android
android: fix 'stat', ifdef S_TYPEIS* in coreutiles/stat.c
platform.h: Android tweaks: ioprio defines, BB_ADDITIONAL_PATH
android: some sensible defconfig changes
libbb: add missing_syscalls.c: for now, only Android syscalls
Timo Teräs (1):
fbsplash: fix regression from e4fa7b7
Tito Ragusa (1):
adduser: make it accept "adduser USER GROUP" form
Vladimir Dronnikov (1):
wget: add dummy --no-cache
Yao Zhao (1):
testsuite: make mkfs.minix test not fail spuriously on big endian
walter harms (1):
refactor correct_password.c to avoid one if
- 2 July 2012 -- BusyBox 1.20.2 (stable)
BusyBox 1.20.2.
(git,
patches,
how to add a patch)
Bug fix release. 1.20.2 has fixes for
ash (fix for variable expansion in redirection),
ifup/down (fix for "pre-up" and "pre-down" handling),
man (fixes for compressed man pages handling),
mke2fs (important fix! due to misplaced s_mkfs_time field, ext4 driver couldn't mount our images),
ps (fix for getting uptime on non-Linux platforms),
tar (fix base-256 decoding).
- Old News
Click here to read older news
|