BusyBox Changelog

What's new in BusyBox 1.31.0

Jun 11, 2019
  • 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

New in BusyBox 1.30.1 (Feb 18, 2019)

  • 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).

New in BusyBox 1.30.0 (Jan 4, 2019)

  • 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

New in BusyBox 1.29.3 (Sep 10, 2018)

  • Bug fix release. 1.29.3 has a fix in libbb for xmalloc_fgets().

New in BusyBox 1.29.2 (Jul 31, 2018)

  • This release has fixes for fdisk (compat fixes, allow 2TB+ sizes), gzip (FEATURE_GZIP_LEVELS was producing badly-compressed .gz), hexedit (segfault fix).

New in BusyBox 1.29.1 (Jul 16, 2018)

  • This release has fixes for wget (http->https redirect) and sendmail (angle bracket parsing).

New in BusyBox 1.28.4 (May 23, 2018)

  • This release has fixes for nsenter option parsing and dpkg symlink extraction.

New in BusyBox 1.28.1 (Feb 19, 2018)

  • 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
  • less,microcom,lineedit: use common routine to set raw termios
  • 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 "#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

New in BusyBox 1.28.0 (Jan 2, 2018)

  • 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
  • less,microcom,lineedit: use common routine to set raw termios
  • 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 "#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

New in BusyBox 1.27.0 (Jul 7, 2017)

  • 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

New in BusyBox 1.26.1 (Jan 3, 2017)

  • 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.

New in BusyBox 1.26.0 (Dec 20, 2016)

  • 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: always rewrite NUM_APPLETS.h
  • build system: different fix for include/applet_tables.h/include/NUM_APPLETS.h
  • 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/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: expand comments
  • 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 a thinko in the last commit
  • ash: fix arithmetic closing )) split by backslash-newline
  • ash: fix bit-rotten debug infrastructure
  • ash: fix globbing bugs when using glibc glob()
  • ash: fix handling of ${VAR: -2}
  • ash: fix handling of NULs in $'abc00defx00asd'. 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: fix signed char expansion bug
  • 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: style fixes
  • 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: bit better comments in redirect code. No logic changes
  • hush: case logic for setting $? was still wrong
  • 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 a possible bug
  • 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 typo in comment
  • 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: renumber PIPE_foo, make PIPE_SEQ = 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: rework input char buffering to allow more than one-deep peek
  • hush: simplify insert_bg_jobs
  • hush: small optimization in run_list
  • hush: speed optimizations
  • sh: do not print empty line at the end of "help" output
  • 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 and -B 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
  • dpkg-deb: shorten code, improve help text
  • 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 " 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
  • service/fw example: do not ruin $if[], use different name
  • sha3: fix to conform to final SHA3 padding standard, add -a BITS option
  • sha3sum: fix config text (it's no longer only 512-bit)
  • ssl_helper.sh: strip was invoked incorrectly
  • 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" error message less likely to show garbage
  • wget/ssl_helper: update to wolfssl-3.9.8
  • 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

New in BusyBox 1.25.1 (Oct 9, 2016)

  • 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" optio

New in BusyBox 1.24.1 (Oct 24, 2015)

  • Bug fix release. 1.24.1 has fixes for ftpd (now DIR parameter will work 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 than data section size unexpectedly grew relative to 1.23.2. Now it is fixed: sizes of busybox-1.23.2, busybox-1.24.0, busybox-1.24.1 (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 (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", run "uevent mdev" early during boot. "uevent" will run "mdev" for each hotplug event, waiting for each child to terminate before starting a next one.

New in BusyBox 1.24.0 (Oct 12, 2015)

  • 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
  • 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" prinitng 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

New in BusyBox 1.23.2 (Mar 23, 2015)

  • 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).

New in BusyBox 1.23.1 (Jan 28, 2015)

  • 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.

New in BusyBox 1.22.1 (Jan 20, 2014)

  • 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.

New in BusyBox 1.22.0 (Jan 3, 2014)

  • 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 shink 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
  • ash: add comment about failures in source builtin. No code changes.
  • 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: fix example in a comment. No code changes.
  • dd: support conv=swab
  • decompress_unlzma: 10% speedup in "small" code
  • decompress_unlzma: make "fast" version a bit smaller
  • decompress_unlzma: move function, no code changes
  • 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
  • iplink: fix build error (IFLA_VLAN_PROTOCOL defined before include)
  • less: support "less 1TTY"
  • 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 "usync" 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 instead of
  • 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

New in BusyBox 1.21.1 (Jul 1, 2013)

  • 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.

New in BusyBox 1.19.4 (Feb 6, 2012)

  • Bug fix release. 1.19.4 has fixes for getty (build fix for systems without CBAUD), mdev (error in mdev.seq handling if sequence number is >999), modinfo (made it select PLATFORM_LINUX), wget (fixed use-after-free on redirect).

New in BusyBox 1.19.3 (Nov 29, 2011)

  • Bug fix release. 1.19.3 has fixes for build system, chpasswd, crond, inetd (fix open fd leak), syslogd (fix problem with in-memory log buffer), tail (fix for 'tail: -c +N' with large N), tftp (made mode check case-insensitive).

New in BusyBox 1.18.4 (Jun 9, 2011)

  • Bug fix release. 1.18.4 has fixes for cksum, klogd (fix "delayed" death on signals), modutils (handling of spaces in module arguments for Linux 2.4), wget (fix for downloads encoded using chunked encoding), build system fix for "make install" and "make menuconfig".

New in BusyBox 1.17.3 (Oct 11, 2010)

  • Bug fix release. 1.17.3 has fixes for ip (build fix for older systems), hush (fix for handlind of backslashes in unquoted $var expansion), line editing (fixed handling of EIO error and tab expansion for non-ASCII filenames).

New in BusyBox 1.17.2 (Aug 31, 2010)

  • Bug fix release. 1.17.2 has fixes for build system (now works with make 3.82), grep (zero length match could loop forever with -o), mdev (/dev nodes were never deleted), mktemp (fix for patterns with slashes), sed (fixes to -i option and N command), shell ($! was sometimes set to a wrong value; ulimit without both -H and -S now sets both hard and soft limits)
  • Patch applet is completely replaced by a more capable implementation from toybox (Rob Landley's code). Aboriginal Linux needs it.

New in BusyBox 1.17.0 (Jul 7, 2010)

  • New applets:
  • conspy by Pascal Bellard (pascal.bellard AT ads-lu.com),
  • rev by Marek Polacek (mmpolacek AT gmail.com),
  • ubiattach,ubidetach by Baruch Siach (baruch AT tkos.co.il),
  • modinfo by Pascal Bellard (pascal.bellard AT ads-lu.com),
  • fgconsole by Grigory Batalov (bga AT altlinux.org),
  • fkill by Souf Oued (souf_oued AT yahoo.fr),
  • flock by Timo Teras (timo.teras AT iki.fi),
  • smemcap, bootchartd, unxz (complete with xzcat and xz -d aliases)
  • Other changes:
  • build system: make it possible to have include/applets.h-esque entries in .c files, to keep Config/Kbuild snippets in *.c files, to keep usage texts in .c files
  • build system: gold may not support --sort-common (yet)
  • unicode: support for it is significantly improved, by Tomas Heinrich (heinrich.tomas AT gmail.com)
  • libbb: teach tar et. al. to understand .xz
  • libbb: fix bb_ask() to operate on correct fd
  • libbb: locate PAGE_SIZE on Hurd
  • libbb: make index_in_substrings return -1 on ambiguous matches
  • libbb/copyfd.c: don't mmap a largish buffer if we only want to copy a few kb
  • libbb/read_key: fix buffer length calculation
  • *: hurd compat fixes by Jérémie Koenig (jk AT jk.fr.eu.org)
  • *: s/"/bin/sh"/DEFAULT_SHELL by Ladislav Michl (Ladislav.Michl AT seznam.cz)
  • ash,hush: make it possible to alias one of shells to "bash"
  • ash,hush: make "source" a synonym for . if bash compat is on
  • ash,hush: make bare "." set exitcode to 2
  • ash: FILE does not truncate FILE anymore. By Andreas Bühmann (buehmann AT users.berlios.de)
  • ash: fix ". EMPTY_FILE" exitcode
  • ash: fix bug which causes signal6.tests to fail
  • ash: fix SEGV on empty command with redirection (bug 1087). Fix by Leonid (lly.dev AT gmail.com)
  • ash: fix cubic matching slowdown is ${v/*foo*/repl} (really bad one)
  • ash: fix obscure case of replacing + globbing + backslashes
  • ash: fix redirection of fd 0 in scripts are sourced from interactive ash
  • ash: fix signal5.tests
  • ash: fix unset in standalone mode
  • ash: fix var_leak testcase
  • ash: fix var_leak.tests so that it actually catches the NOFORK bug
  • ash: refresh stack pointers after makestrspace in rmescapes. By Colin Watson (cjwatson AT ubuntu.com)
  • ash: make trap with bad signal name not abort
  • ash: use CONFIG_FEATURE_EDITING_MAX_LEN
  • hush: fix "hush -c 'echo $#'" showing -1
  • hush: fix a=abc; c=c; echo ${a%${c}}
  • hush: fix hush -c 'echo $0' - was showing empty string
  • hush: fix hush-bugs/parse_err.tests
  • hush: fix more obscure ${var%...} cases
  • hush: fix segfault in ${?:N:M}
  • hush: fix var=`exit 2` not setting $? to 2
  • hush: handle expansions in ${var?expanded_word} constructs
  • hush: optional support for ${var:N:M} bashism
  • hush: support "cd -- DIR" and other such double-dash constructs in builtins
  • hush: support ${var:EXPR:EXPR}
  • hush: use ash's ulimit builtin; make it more more bash-like while at it
  • adduser: copy /etc/skel to mew homes. +100 bytes
  • ar: add archive creation support. By Alexander Shishkin (virtuoso AT slind.org)
  • ar: fix a regression: "ar t arch.a" stopped showing files. By Nguyá»…n Thái Ngọc Duy (pclouds AT gmail.com)
  • awk: be more paranoid when freeing loop variable; make code less obfuscated
  • awk: don't append bogus data after NUL in sub()
  • awk: fix the case where nested "for" loops with the same variable misbehave
  • awk: skip whitespace between array name and subscript. By Alexander Shishkin (virtuoso AT slind.org)
  • beep: the -d option takes milliseconds, not microseconds. By Natanael Copa (natanael.copa AT gmail.com)
  • brctl: fix parsing of timespec to allow 0 (setfd, sethello..), fix stp parameters incompatibility. By Maciek Borzecki (maciek.borzecki AT gmail.com)
  • busybox --list option. +140 bytes. Rob wanted it
  • cmp: ifdefectomy by Rob Landley (rob AT landley.net)
  • cpio: "NNN blocks" message should go to stderr. By Matheus Izvekov (mizvekov AT gmail.com)
  • cttyhack: don't do anything if ctty is already available
  • data_extract_all(): do not chmod symlink. Closes bug 2053
  • date,touch: accept "Jan 7 00:00:00 2010" format. By Alexander Shishkin (virtuoso AT slind.org)
  • date: optional support for %N. Closes bug 1861
  • date: support -d @SECONDS_SINCE_1970
  • devmem: map two pages only if it is necessary
  • dnsd: add -s option. This allows (clumsy) operation with real DNS servers
  • dnsd: enforce alignment on packet buffer
  • dnsd: fix one big-endian goof; add a TODO about RA bit
  • dnsd: fix unaligned access problem
  • dpkg: add support for lzma compression, by Pascal Bellard (pascal.bellard AT ads-lu.com)
  • dpkg: better check for validity of options
  • dpkg: support config file overwrite options. By Kim B. Heino (Kim.Heino AT bluegiga.com)
  • dpkg: enable tar compability even if tar applet is not enabled
  • [un]expand: account for different character widths
  • fbsplash: reinstate drawing of over/undersized images
  • fdisk: do not treat names ending in '0' as partitions
  • fdisk: make 'b' command optionally adjust C/H/S; "fdisk IMAGE_FILE" sets cylinders
  • find: fix -name matching for dotfiles. -1 byte
  • ftpd: work around LIST -aXYZ too, not only LIST -lXYZ
  • fuser: fix default signal, exitcode and PID display. By Maksym Kryzhanovskyy (xmaks AT email.cz)
  • getty: do not emit bogus error message on EOF
  • grep: fix -Fi. By Ian Wienand (ianw AT vmware.com)
  • grep: make -w support unconditional
  • gunzip: inflate_codes(): add fix from upstream gzip to prevent false CRC error
  • head,tail: make suffixes unconditional for head too
  • hexdump: fix "hexdump NONEXISTENT_FILE" handling
  • hexdump: make -s 0xNNNNN work
  • httpd: fix proxy mode bug (annoying but harmless)
  • ifconfig: do not truncate interface names. Closes bug 1795
  • ifdown: use /var/run/udhcpc.%iface%.pid only if it exists
  • ifplugd: more robust interface name match check
  • ifplugd: replace potentially-leaking setenv with malloc/putenv/free
  • init: clear utmp entries for dead processes, if they (entries) exist
  • ip a: fix SEGV if "dev IFACE" is not specified
  • ip addr/rule/tunnel: unify parsing args. By Bernhard Reutner-Fischer (rep.dot.nop AT gmail.com)
  • ip link: add qlen. By Bernhard Reutner-Fischer (rep.dot.nop AT gmail.com)
  • ipaddress: print OPERSTATEs and NO-CARRIER. By Bernhard Reutner-Fischer (rep.dot.nop AT gmail.com)
  • ipcalc: more correct checking for proper number of arguments
  • iplink: support add/delete. By Bernhard Reutner-Fischer (rep.dot.nop AT gmail.com)
  • loadfont/setfont: optional PSF2 font support
  • loop: correct minor device number limit
  • losetup: support /dev/loop10 and higher. Closes bug 1627
  • lsusb: 2.6.32 compat. By Souf Oued (souf_oued AT yahoo.fr)
  • mdev: add "!" syntax support
  • mdev: fix a SEGV when subsystem is not known
  • mdev: fix subsystem passing (new kernels broke it again). Closes bugs 639, 721
  • mkswap: support [KBYTES] parameter
  • mkXXXX: unify [KBYTES] parameter handling
  • mkfs_ext2: fix handling of -I argument. By Bernhard Reutner-Fischer (rep.dot.nop AT gmail.com)
  • mktemp: be more compatible: bare "mktemp" creates tempfile in /tmp, not cwd
  • modinfo: needs DEFAULT_MODULES_DIR and DEFAULT_DEPMOD_FILE
  • modinfo: support relative paths in modules.dep
  • modprobe: add support for -l and -s. By Pascal Bellard (pascal.bellard AT ads-lu.com)
  • modprobe: pick up module options from /proc/cmdline too
  • modprobe: remove 2k limit on /proc/cmdline
  • modutils-24: [mips] modutlis-24 segfault fix for 2.4 kernel modules, by Ralf Rösch (ralf.roesch AT rw-gmbh.de)
  • mount: add an optional capability to create new /dev/loopN as needed. By Lauri Kasanen (curaga AT operamail.com)
  • mount: fix a case when sometimes error message is not printed
  • mount: handle EDQUOT > 255 properly. Closes bug 1579
  • nc: introduce CONFIG_NC_110_COMPAT option
  • tftp/tftp: make tftp/tftpd-related options less confusing in config. Closes bug 2017
  • ntpd: step correction to variables had wrong sign, fixing
  • passwd: make 'echo -e "foo\nfoo" | passwd USER' work
  • ping: do not leak data from stack
  • provide safe_gethostname() for non-linux systems
  • ps: fix non-DESKTOP option handling code
  • ps: make "ps -o BAD" emit list of good -o params
  • rpm: use open_zipped's logic (factored out into setup_unzip_on_fd())
  • rpm: make rpm -i SRPM.rpm install it to surrent dir
  • rpm2cpio: teach it to understand xz format
  • sed: fix a case when one-line range matches past lines. Closes bug 1867
  • sed: fix a command with multiple trailing backslashes
  • sed: fix c cmd
  • sed: fix nested {} case
  • setkeycodes: fix handling of 0exx scancodes
  • setsid: check for setsid error directly
  • shaNNNsum: accept and ignore -b and -t
  • stat: make output more similar to GNU stat. By Seb (sbb AT tuxfamily.org)
  • swapon: skip noauto entries. By Lauri Kasanen (curaga AT operamail.com)
  • syslogd: allow multiple -R options. By Thomas Geulig (geulig AT nentec.de)
  • syslogd: remove stray umask(0) - was giving log files bad mode
  • syslogd: make maximum message length configurable. By Janne Kiviluoto (janne.kiviluoto AT bluegiga.com)
  • tail: document FANCY flags in helptext
  • tar: fix "hardlinks to symlinks chown" bug 1519
  • tar: fix mishandling of repeated hardlink in tarball
  • tar: make typical extraction less memory-hungry
  • tar: optional support for --to-command. By Ladislav Michl (Ladislav.Michl AT seznam.cz)
  • tar: optional support for restoring selinux context. By J. Tang (tang AT jtang.org)
  • tar: support GNU 256-bit encoding in all numeric fields
  • telnet: prevent SEGV if we are requested TELOPT_NEW_ENVIRON
  • telnetd: fill hostname field in utmp/wtmp records
  • telnetd: write LOGIN/DEAD_PROCESS utmp records. Closes bug 1363
  • test: "" is not a valid number. Closes bug 1915
  • tftp: do not show progress bar if we get error right away. +13 bytes
  • tftp: increase initial retry timeout from 50 to 100 ms
  • tftp: make message about 512 byte block less confusing
  • tftpd: fix file creation with bogus mode. Closes bug 1021
  • top: make 's' display easier to understand
  • touch: do not ignore argument of -d/-t option. By Mikhail Gusarov (dottedmag AT dottedmag.net)
  • udhcp: abort if we see unknown option, and show valid options if so
  • udhcp: disable time and log server options
  • udhcp: fix DNS domain codec bug: bad compression flag checks
  • udhcp: handle errors in read_staticlease
  • udhcp: implement "raw" binary options. Closes bug 735
  • udhcp: remove support for some really old and odd options
  • udhcp: s/sipservers/sipsrv/ to match other similar option names
  • udhcp: we call DNS name encoder with NULL, this can SEGV. added a check
  • udhcp: truncate packets instead of padding them to 574 bytes. Closes bug 1849
  • udhcpc: add -x OPT:VAL option
  • udhcpc: make it possible to disable vendor id
  • udhcpd: apparently, sometimes IP is in ciaddr, not requested_ip
  • udhcpd: fix -v/-P mixup
  • udhcpd: fix daemonize crash on nommu systems. By Mike Frysinger (vapier AT gentoo.org)
  • udhcpd: fix hostname truncation bug 1663
  • udhcpd: support decoding of option 120 "SIP servers". Closes bug 737
  • udhcpd: untangle incredibly messy handling of DHCPREQUEST
  • unexpand: fix "a b"\n" input case. By Tomas Heinrich (heinrich.tomas AT gmail.com)
  • unlzma: add "lzma -d" alias, add -t support, rename lzmacat to lzcat
  • unzip: restore unix file mode if possible. Closes bug 1045
  • unzip: improve handling of stream ZIP files
  • vi: save/restore errno in signal handlers
  • vi: discover window size even on serial consoles (optional)
  • vi: fix "set ic" command. Closes bug 1765
  • vi: fix NUM + "$" handling
  • volume_id/linux_swap: detect suspended image signatures too
  • wc: compat: make "wc -c ONE_FILE" not print leading spaces. +2 bytes
  • wget: fix bug 1057 "busybox wget segfaults with http_proxy environment set"
  • wget: ignore --no-check-certificate
  • who: fix attempts to open '/dev/dev/ttyX'; make columns a bit wider, add -H
  • xargs: bump default -sNUM up to 32k. Use sysconf() to trim it down if necessary
  • xargs: make -s NUM accept practically unlimited range

New in BusyBox 1.16.0 (Jan 27, 2010)

  • New applets:
  • lspci: new applet. +573 bytes. By Souf Oued (souf_oued AT yahoo.fr)
  • lsusb: new applet. +400 bytes. By Souf Oued (souf_oued AT yahoo.fr)
  • flashcp: new applet. +900 bytes. By Stefan Seyfried (stefan.seyfried AT googlemail.com)
  • mkfs.reiser: new applet. Needs much polishing. By Vladimir Dronnikov (dronnikov AT gmail.com)
  • mkfs_ext2: new applet. By Vladimir Dronnikov (dronnikov AT gmail.com)
  • ntpd: new applet, +5k. By Adam Tkac (vonsch AT gmail.com)
  • traceroute6: new applet. +1562 bytes. By Leonid Lisovskiy (lly.dev AT gmail.com)
  • tune2fs: new applet by Vladimir. Only supports -L LABEL
  • wall: new applet. By Bernhard Reutner-Fischer (rep.dot.nop AT gmail.com)
  • Other changes:
  • ash,hush: check that variable names are sane
  • ash,hush: fix "'read' without parameters" bash compat thingy
  • ash,hush: fix $RANDOM in children being repeated
  • ash: do not let EXIT trap to fire in `trap`
  • ash: error out on ${#1#}, ${#$11}, ${#11#}. By Cristian Ionescu-Idbohrn (cristian.ionescu-idbohrn AT axis.com)
  • ash: factor out $RANDOM support and read builtin
  • ash: fix `trap`
  • ash: fix bad interaction of "stty -echo" + ASK_TERMINAL
  • ash: fix bug 585 (>"$VAR_WITH_UNICODE_CHARS" problem)
  • ash: fix for read $IFS splitting. Closes bug 235
  • ash: fix handling of Unicode chars in redirects. Closes bug 585
  • ash: fix mishandling of bash-style redirects. By Chris Metcalf (cmetcalf AT tilera.com)
  • ash: implement set -o pipefail (conditional on bash compat). By Michael Abbott (michael AT araneidae.co.uk)
  • ash: make "jobs -l" more similar to bash. By Earl Chew. Closes bug 481
  • ash: re-enable SIGHUP on entry. Closes bug 771
  • hush: add printf builtin. By Mike Frysinger (vapier AT gentoo.org)
  • hush: add support for $RANDOM
  • hush: code shrink by Dan Fandrich (dan AT coneharvesters.com)
  • hush: do not reset to default "" traps in subshell
  • hush: export PWD
  • hush: fix `trap`
  • hush: fix exec builtin in a better way (+ "glob in exec" bug fixed)
  • hush: fix exit code propagation from `cmd`
  • hush: fix exitcodes of killed processes
  • hush: fix handling of empty arguments
  • hush: fix handling of words with braces
  • hush: fix potential buffer overflow on NOMMU
  • hush: fix subshell.tests failure on NOMMU
  • hush: handle empty execs. By Mike Frysinger (vapier AT gentoo.org)
  • hush: make memleak debugging more robust
  • hush: plug a memory leak
  • hush: small speed optimization
  • hush: support $PPID
  • hush: two NOMMU fixes for bugs 877 and 883
  • hush: unify handling of builtin applets. By Mike Frysinger (vapier AT gentoo.org)
  • hush: use ash's read builtin
  • hush: wait for `cmd` to complete, and immediately store its exitcode in $?
  • build system: fix for coarse mtime problem
  • build system: fix parallel make
  • build system: more fixes to parallel build
  • build system: update documentation generator so that it sucks less
  • libbb: add and use xopen_nonblocking (-18b). By Bernhard Reutner-Fischer (rep.dot.nop AT gmail.com)
  • libbb: add mallopt tweaks for reduced memory consumption
  • libbb: added xfdopen_for_read/write
  • libbb: better unicode width support. Hopefully fixes bug 839
  • libbb: make spawn() print "can't execute '%s'" on execv error
  • libbb: move generate_uuid from mkswap to libbb. By Vladimir Dronnikov (dronnikov AT gmail.com)
  • libbb: optimize most of isXXXXX() macros
  • libbb/lineedit: fix the case when we configured history to have 0 lines
  • libbb/lineedit: restore ^D handling for unicode
  • libbb/lineedit: try to make FEATURE_EDITING_ASK_TERMINAL less ugly
  • libbb/lineedit: do not hardcode ctrl-C and ctrl-D, use termios fields
  • libbb/lineedit: handle Ctrl-arrows
  • libbb/read_key,lineeedit: parse position answerback faster; sanitize its use
  • libbb/read_key: ignore unknown keys (do not return them to caller byte-by-byte)
  • libunarchive: fix a bug where mode and time is no longer restored. Introduced by vda in 1.15.x. Found by Rob Landley
  • libunarchive: fix reversed test for older/newer
  • libunarchive: move dpkg-specific things into dpkg.c. 0 byte size differences
  • *: add more compat code for non GNU environments. By Dan Fandrich (dan AT coneharvesters.com)
  • *: do not assign to stdout/stderr, it's not portable. Based on patch by Aaron Carroll (xaaronc AT gmail.com)
  • *: platform compatibility work. By Dan Fandrich (dan AT coneharvesters.com)
  • *: use utimes() rather than obsolescent utime(). By Bernhard Reutner-Fischer (rep.dot.nop AT gmail.com)
  • INSTALL: update obsolete doc, as suggested by Doug Clapp (doug.clapp AT triad.rr.com)
  • adduser: create a group for net user too
  • adduser: fix a logical inversion which made -G GRP inoperative. By Tito Ragusa (farmatito AT tiscali.it)
  • all_sourcecode.tests: check commented out applet order too. By Mike Frysinger (vapier AT gentoo.org)
  • applets/usage_compressed: combine many seds in one; hide dd stats. By Bernhard Reutner-Fischer (rep.dot.nop AT gmail.com)
  • applets: fix alphabetical order. By Mike Frysinger (vapier AT gentoo.org)
  • ar: fix long filenames handling. Closes bug 611
  • awk: fix an incorrect casting to string (bug 725)
  • awk: implement mktime. By Leonid Lisovskiy (lly.dev AT gmail.com)
  • btrfs: check first two superblocks, for additional robustness
  • chown: support long options. By Matheus Izvekov (mizvekov AT gmail.com)
  • chpst: tiny shrinkage and add possible TODO. By Bernhard Reutner-Fischer (rep.dot.nop AT gmail.com)
  • cp: add support for --parents and long option synonyms of short opts. By Ian Wienand (ianw AT vmware.com)
  • cp: fix -H handling
  • cpio: fix -o-less cpio -F FILE
  • cpio: fix unpacking of names with leading slashes
  • crond: do not log info messages at LOG_ERR. Closes bug 681
  • date: handle long options. By Bernhard Reutner-Fischer (rep.dot.nop AT gmail.com)
  • dc: make "dc -1.23 ..." work
  • dd: fix conv=noerror w/o sync to not write out zeroed blocks
  • dd: speed measurement. optional. By Gabor Heja (kakaopor AT kakaopor.hu)
  • df: unicode-aware column formatting. By Tomas Heinrich (theinric AT redhat.com)
  • diff: rewrite. much smaller and more correct. By Matheus Izvekov (mizvekov AT gmail.com)
  • documentation and typo fixes. By Dan Fandrich (dan AT coneharvesters.com)
  • dpkg: fix handling of names with leading dots. Closes bug 783
  • dumpleases: unicode spport. By Tomas Heinrich (heinrich.tomas AT gmail.com)
  • echo et al: support e escape
  • env: don't SEGV on bare "env -"
  • ether-wake: can use ether_hostton on uclibc >= 0.9.30. By Leonid Lisovskiy (lly.dev AT gmail.com)
  • examples: add ENABLE_FEATURE_MDEV_RENAME_REGEXP examples to mdev documentation. By Bernhard Reutner-Fischer (rep.dot.nop AT gmail.com)
  • examples: add mdev.conf and mdev_fat.conf
  • examples: adding runit-style service directory
  • fbset: add possibility to set timing and sync polarity. By Michael Grzeschik (m.grzeschik AT pengutronix.de)
  • fbsplash: allow compressed image files. By Vladimir Dronnikov (dronnikov AT gmail.com)
  • fdisk: add a warning and truncate disks with >= 2^32 sectors
  • find: -follow should not error out on dangling links
  • find: add optional support for -links. By Matheus Izvekov (mizvekov AT gmail.com)
  • find: add zeroing of G.xxx; ftpd - remove extraneous zeroing of G.xxx. Brought "G trick" to the same shape in a few more places
  • find: correct handling of -xdev
  • find: do not recurse into directories with depth == --maxdepth. This may avoid many, many unnecessary stat() calls
  • fold: fix a corner case. By Tomas Heinrich (heinrich.tomas AT gmail.com)
  • fold: unicode support. Based on a patch by Tomas Heinrich (heinrich.tomas AT gmail.com)
  • ftpd: conditional support for broken clients. By Stefan Seyfried (stefan.seyfried AT googlemail.com)
  • ftpget/put: make 3rd parameter optional. By Vladimir Dronnikov (dronnikov AT gmail.com)
  • grep: fix a case when -o loops forever
  • gzip: add optional support for --long-opts. By Matheus Izvekov (mizvekov AT gmail.com)
  • httpd: -m: output salted MD5 hash. By (forrest AT hifulltech.com)
  • httpd: fix bug 601 "I:index.php does not run interpreter on DIR/ url"
  • httpd: shrink mime type matching code (suggested by Bernhard)
  • httpd_indexcgi: fix off-by-one error
  • httpd_post_upload.txt example: handle binary files too
  • hwclock: fix sizeof bug (used it on pointer, not array)
  • hwclock: make --systohc exact
  • ifplugd: mention iff mode in help; restore auto-ifup unless -a; make iff method less iffy :D
  • ifup: make /etc/network/interfaces parser tolerant to trailing spaces
  • inetd: be more careful with syslog socket; other small fixes
  • init: fix "while true; do reboot; done" bug. Closes bug 781
  • init: fix logically inverted FEATURE_EXTRA_QUIET check
  • init: for paranoid reasons, restore SIGCONT too
  • init: make FEATURE_EXTRA_QUIET more consistent. +1 byte
  • init: restore possibility to reload inittab even before we finish initialization
  • init: use applet_name instead of "init" (we can be linuxrc)
  • login: log PAM errors to syslog, not stderr. By Ian Wienand (ianw AT vmware.com)
  • ls: add "total NNNN" header if DESKTOP. By Johannes Stezenbach (js AT sig21.net)
  • ls: fix for !FEATURE_LS_RECURSIVE (forgotten free); cleanups
  • ls: fix sort of very large files
  • ls: make it so that group never glues itself to file size
  • lsmod: unicode-aware column formatting. By Tomas Heinrich (heinrich.tomas AT gmail.com)
  • mdev: adjust error message. By Bernhard Reutner-Fischer (rep.dot.nop AT gmail.com)
  • mdev: do not die on mknod errors
  • mdev: handle string modes. By Bernhard Reutner-Fischer (rep.dot.nop AT gmail.com)
  • mdev: tiny shrinkage by index_in_strings. By Bernhard Reutner-Fischer (rep.dot.nop AT gmail.com)
  • mkfs_vfat: fixes for large image cases
  • mkswap: add -L LABEL option. Closes bug 689
  • modprobe-small: hopefully fix bug 591 (incorrect detection of alias with '-')
  • modprobe-small: make string buffer code robust; fix help text
  • modprobe: it's not an error if module is already loaded. Closes bug 833
  • modprobe: protect against possible SEGV
  • modutils: add FEATURE_INSMOD_TRY_MMAP option
  • mount: "already mounted" msg appears only if -v
  • mount: add support for -O list. By Michael Abbott (michael AT araneidae.co.uk)
  • mount: do not execute "mount.(null)" :)
  • mount: if we mount //host/xxx, add ip=IPADDR to options
  • mount: prevent second mount -a from mounting everything again
  • mount: support -o union. By Vladimir Dronnikov (dronnikov AT gmail.com)
  • mountpoint: btrfs fix. By Vladimir Dronnikov (dronnikov AT gmail.com)
  • nc: fix "nc -nl -p LPORT RHOST" case (was expecting remote port 0). Closes bug 837
  • networking/httpd_ssi.c: new example CGI handler
  • od: fix -tx without length spec
  • passwd: do not complain if /etc/shadow is missing
  • patch: add longopts, --dry-run, add one more test
  • patch: ignore -g NUM. By Matheus Izvekov (mizvekov AT gmail.com)
  • pidof/killall: fix bug 625 (kernel threads get stale "binary name")
  • ping6: do not play dirty tricks with argv
  • ping: fix unaligned access. Closes bug 745
  • ping: use ICMP_MINLEN. By Bernhard Reutner-Fischer (rep.dot.nop AT gmail.com)
  • ps,top: add an option to show threads. +260 bytes
  • ps: conditionally enable -T on non-DESKTOP build too
  • ps: document -T option
  • ps: show longer COMMAND
  • rpm2cpio: handle bz2 too. By Pascal Bellard (pascal.bellard AT ads-lu.com)
  • rpm2cpio: handle unseekable input correctly
  • sed: fix bug 623 (SEGV on some sed commands)
  • sed: minor usage tweak. By Rob Landley (rob AT landley.net)
  • sed: on output file, set not only mode, but owner too
  • sendmail: accept -i too, not only -oi. By Vladimir Dronnikov (dronnikov AT gmail.com)
  • sendmail: fix for long headers. By Vladimir Dronnikov (dronnikov AT gmail.com)
  • sendmail: update by Vladimir Dronnikov (dronnikov AT gmail.com)
  • sort: make sort -o FILE FILE (same FILE) work. Closes bug 785
  • split: handle - as "use stdin". Closes bug 741
  • start-stop-daemon: we could need ssd -d (fancy). By Bernhard Reutner-Fischer (rep.dot.nop AT gmail.com)
  • stty: add B921600. By Bernhard Reutner-Fischer (rep.dot.nop AT gmail.com)
  • stty: fix columns command. Closes bug 791
  • swaponoff: add uuid/label support. By Natanael Copa (natanael.copa AT gmail.com)
  • tar: accept spaces at the end of header fields (compat)
  • tar: add support for --overwrite
  • tar: add support for -o as synonym to --no-same-owner. By Bernhard Reutner-Fischer (rep.dot.nop AT gmail.com)
  • tar: do chown, not lchown to restore mode (compat)
  • tar: fix --numeric-owner, --no-same-owner, --no-same-permissions bits
  • tar: fix bug 673 (misdetection of repeated dir as hardlink)
  • tar: fix problem handling tarballs with chksums prepended by spaces
  • tar: handle "tar fx TARFILE" etc
  • tar: optional support for -m (--touch). By Mikhail Gusarov (dottedmag AT dottedmag.net)
  • telnetd: optional support for -w ("inetd wait")
  • tests: fix POSIX shell source style. By Mike Frysinger (vapier AT gentoo.org)
  • tftp: add optional support for progress bar. By Magnus Damm (magnus.damm AT gmail.com)
  • tftp: extend tsize support a little. By Magnus Damm (magnus.damm AT gmail.com)
  • top: add -m ("memory") option
  • tty: use defines rather than constants. By Bernhard Reutner-Fischer (rep.dot.nop AT gmail.com)
  • udhcpc: fix bug 629: use bcast receive when we perform rebinding
  • udp_io: fix two potential cases of unaligned accesses
  • uniq: plug memory leak. Patch from OpenWRT project
  • volume_id: add support for btrfs. By Vladimir Dronnikov (dronnikov AT gmail.com)
  • wc: fix a hang gue to isprint(EOF). By Dan Fandrich (dan AT coneharvesters.com)
  • wget: check for close success; fix chunked; do not bother to send QUIT to ftp
  • wget: factor out progress bar code. By Magnus Damm (magnus.damm AT gmail.com)
  • wget: fix for code 302. By Vladimir Dronnikov (dronnikov AT gmail.com)
  • [un]expand: unicode support. By Tomas Heinrich (heinrich.tomas AT gmail.com)

New in BusyBox 1.15.2 (Oct 9, 2009)

  • fixes for ash and hush (`trap` handling), dd (fixed handling of I/O errors), find (fix for -follow and symlinks), pidof (corrected recognition of kernel thread names), sed (SEGV), uniq (memory leak), line editing (Ctrl-D works again), build system.

New in BusyBox 1.14.2 (Jun 22, 2009)

  • Bug fix release. Contains fixes in ash ('.' builtin), ftpd, httpd, modprobe (better exit code compatibility), readlink (more options supported), telnetd (now closes file descriptors in childred, it was forgetting to do so).

New in BusyBox 1.14.1 (May 29, 2009)

  • Bug fix release. Contains fixes in acpid, awk, depmod, dhcp, gzip, mdev, modprobe, sysctl; libbb fixes. hush is significantly updated.

New in BusyBox 1.13.3 (Mar 8, 2009)

  • It has fixes for awk, depmod, init, killall, mdev, modprobe, printf, syslogd, tar, top, unzip, wget.

New in BusyBox 1.12.1 (Oct 29, 2008)

  • Major feature enhancements.