- 21 August 2008 -- BusyBox 1.12.0 (unstable)
BusyBox 1.12.0.
(svn,
patches,
how to add a patch)
Sizes of busybox-1.11.1 and busybox-1.12.0 (with equivalent config, static uclibc build):
text data bss dec hex filename
829687 617 7052 837356 cc6ec busybox-1.11.1/busybox
822961 594 6832 830387 cabb3 busybox-1.12.0/busybox
New applets: rdev (Grant Erickson), setfont, showkey (both by Vladimir)
Most significant changes since previous release (please report any regression):
- ash: bash compat: "shift $BIGNUM" is equivalent to "shift 1"
- ash: dont allow e.g. exec <&10 to attach to script's fd!
- ash: fix a bug where redirection fds were not closed afterwards. optimize close+fcntl(DUPFD) into dup2
- ash: fix segfault in "command -v"
- ash: fix very weak $RANDOM generator
- ash: prevent exec NN>&- from closing fd used for script reading
- ash: teach ash about 123>file. It could take only 0..9 before
- hush: add #defines to switch off break/continue if loops are not supported
- hush: delete unused field in struct child. Reinstate needed check for invalid syntax
- hush: fix a case where "$@" must expand to no word at all
- hush: fix mishandling of a'b'c=fff as assignments. They are not
- hush: fix non-detection of builtins and applets in "v=break; ...; $v; ..." case
- hush: fix "while false; ..." exitcode; add testsuites
- hush: support "case...esac" statements (~350 bytes of code)
- hush: support "break N" and "continue N" statements
- hush: support "for if in do done then; do echo $if; done" case
- hush: support "for v; do ... done" syntax (implied 'in "$@"')
- hush: support $_NUMBERS variable names
- libbb: unified config parser (by Vladimir). This change affected many applets
Other changes:
- libbb: dump: do not use uninitialized memory (closes bug 4364)
- libbb: fix bb_strtol[l]'s check for "-" (closes bug 4174)
- libbb: fix --help to not affect "test --help"
- libbb: fix mishandling of "all argv are opts" in getopt32()
- libbb: getopt32() should not ever touch argv[0] (even read)
- libbb: introduce and use xrealloc_vector
- libbb: [x]fopen_for_{read,write} introduced and used (by Vladimir)
- lineedit: fix use-after-free
- arp: without -H type, assume "ether" (closes bug 4564)
- ar: reuse existing ar unpacking code
- awk: fix a case with multiple -f options. Simplify -f file reading.
- bb_strtoXXX: close bug 4174 (potential use of buf[-1])
- build system: introduce and use FAST_FUNC: regparm on i386, otherwise no-op
- bunzip2: fix an uncompression error (by Rob Landley rob AT landley.net)
- b[un]zip2, g[un]zip: unlink destination if -f is given (closes bug 3854)
- comm: almost total rewrite
- cpio: fix -m to actually work as expected (by Pascal Bellard)
- cpio: internalize archive_xread_all_eof, add a few paranoia checks for corrupted cpio files
- cpio: make long opts depend only on ENABLE_GETOPT_LONG
- cpio: on unpack, limit filename length to 8k
- cpio: support some long options
- crond: use execlp instead of execl
- cut: fix buffer overflow (closes bug 4544)
- envdir: fix "envdir with no params" and "envdir dir" cases
- findfs: make it use setuid-ness of busybox binary
- fsck: use getmntent_r instead of open-coded parsing (by Vladimir)
- fuser: a bit of safety in scanf
- grep: option to use GNU regex matching instead of POSIX one. This fixes problems with NULs in files being scanned, but costs +800 bytes
- halt: signal init regardless of ENABLE_INIT
- httpd: add homedir directive specially for (and by) Walter Harms wharms AT bfs.de
- ifupdown: /etc/network/interfaces can have comments with leading blanks
- ifupdown: fixes for custom MAC address (by Wade Berrier wberrier AT gmail.com)
- ifupdown: fixes for shutdown of DHCP-managed interfaces (by Wade Berrier wberrier AT gmail.com)
- inetd: do not trash errno in signal handlers; in CHLD handler, stop looping through services when pid is found
- insmod: users report that "|| defined(__powerpc__)" is missing
- install: do not chown intermediate directories with install -d (by Natanael Copa)
- install: fix long option not taking params (closes bug 4584)
- lpd,lpr: send/receive ACKs after filenames, not only after file bodies
- ls: fix a bug where we may use uninintialized variable
- man: add handling of "man links", by Ivana Varekova varekova AT redhat.com
- man: fix a case when a full pathname to manpage is given
- man: fix inverted cat/man bool variable
- man: fix missed NULL termination of an array
- man: mimic "no manual entry for 'bogus'" message and exitcode
- man: support cat pages too (by Jason Curl jcurlnews AT arcor.de)
- man: teach it to use .lzma if requested by .config
- mdev: check for "/block/" substring for block dev detection
- mdev: do not complain if mdev.conf does not exist
- mdev: if device was moved at creation, at removal correctly remove it from moved location and also remove symlinks to it
- mdev: support for serializing hotplug
- mdev, init: use shared code for fd sanitization
- mkdir: fix "uname 0222; mkdir -p foo/bar" case (by Doug Graham dgraham AT nortel.com)
- modprobe: support for /etc/modprobe.d (by Timo Teras)
- modprobe: use buffering line reads (fgets()) instead of reads()
- modutils: optional modprobe-small (by Vladimir), 15kb smaller than standard one
- mount: support for "-o mand" and "[no]relatime"
- mount: support nfs mount option nordiplus (by Octavian Purdila opurdila AT ixiacom.com)
- mount: support relatime / norelatime
- mount: testsuite for "-o mand"
- msh: fix "while...continue" (closes bug 3884)
- mv: fix a case when we move dangling symlink across mountpoints
- netstat: optional -p support (by L. Gabriel Somlo somlo AT cmu.edu)
- nmeter: fix read past the end if a buffer (closes bug 4594)
- od, hexdump: fix bug where xrealloc may move pointer, leaving other pointers dangling (closes bug 4104)
- open_transformer: don't leak compressed descriptor anymore
- open_transformer: fix bug of calling exit instead of _exit
- pidof/killall: allow find_pid_by_name to find running processes started as scripts_with_name_longer_than_15_bytes.sh (closes bug 4054)
- printf: do not print garbage on "%Ld" (closes bug 4214)
- printf: fix %b, fix several bugs in %*.*, fix compat issues with aborting too early, support %zd; expand testsuite
- printf: protect against bogus format specifiers (closes bug 4184)
- libunarchive: refactor handling of archived files. "tar f file.tar.lzma" now works too
- sendmail: updates from Vladimir:
- sendmail: do not discard all headers
- sendmail: do not ignore CC; accept to: and cc: case-insensitively. +20 bytes
- sendmail: fixed mail recipient address
- sendmail: fixed SEGV if sender address is missed
- sendmail: use HOSTNAME instead of HOST when no server is explicitly specified
- sleep: if FANCY && DESKTOP, support fractional seconds, minutes, hours and so on (coreutils compat)
- ssd: CLOSE_EXTRA_FDS in MMU case too
- ssd: do not stat -x EXECUTABLE, it is not needed anymore
- ssd: fix -a without -x case
- ssd: use $PATH
- tar: fix handling of tarballs with symlinks with size field != 0
- tar: handle autodetection for tiny .tar.gz files too, simplify autodetection
- taskset: fix some careless code in both fancy and non-fancy cases. -5 bytes for fancy, +5 for non-fancy
- tee: fix infinite looping on open error (echo asd | tee "")
- tee: "-" is a name for stdout, handle it that way
- telnetd: fix issue file printing
- test: fix parser to prefer binop over unop, as coreutils does
- testsuite: uniformly use $ECHO with -n -e
- time: don't segfault with no arguments
- touch: support -r REF_FILE if ENABLE_DESKTOP (needed for blackfin compile)
- tr: fix "access past the end of a string" bug 4354
- tr: fix "tr [=" case (closes bug 4374)
- tr: fix yet another access past the end of a string (closes bug 4374)
- unlzma: fix memory leak (by Pascal Bellard)
- vi: fix reversed checks for underflow
- vi: using array data after it fell out of scope is stupid
- xargs: fix -e default to match newer GNU xargs, add SUS mandated -E (closes bug 4414)
- other fixes and code size reductions in many applets
The email address gpl@busybox.net is the recommended way to contact
the Software Freedom Law Center to report BusyBox license violations.
- 12 July 2008 -- BusyBox 1.11.1 (stable)
BusyBox 1.11.1.
(svn,
patches,
how to add a patch)
Bugfix-only release for 1.11.x branch. It contains fixes for awk,
bunzip2, cpio, ifupdown, ip, man, start-stop-daemon, uname and vi.
- 11 July 2008 -- HOWTO is updated
"How to build static busybox for i486-linux-uclibc" is updated
and tested on a fresh Fedora 9 install. Please report if it doesn't
work for you.
- 25 June 2008 -- BusyBox 1.11.0 (unstable), BusyBox 1.10.4 (stable)
BusyBox 1.11.0.
(svn,
patches,
how to add a patch)
BusyBox 1.10.4.
(svn,
patches,
how to add a patch)
Sizes of busybox-1.10.4 and busybox-1.11.0 (with equivalent config, static uclibc build):
text data bss dec hex filename
800675 636 7080 808391 c55c7 busybox-1.10.4
798392 611 6900 805903 c4c0f busybox-1.11.0
New applets: inotify (Vladimir Dronnikov), man (Ivana Varekova),
fbsplash (Michele Sanges), depmod (Bernhard Fischer)
Changes since previous release:
- build system: reinstate CONFIG_CROSS_COMPILE_PREFIX
- ash: optional bash compatibility features added; other fixes
- hush: lots and lots of fixes
- msh: fix the case where the file has exec bit but can't be run directly (runs "$SHELL file" instead)
- msh: fix exit codes when command is not found or can't be execed
- udhcpc: added workaround for buggy kernels
- mount: fix mishandling of proto=tcp/udp
- diff: make it work on non-seekable streams
- openvt: made more compatible with "standard" one
- mdev: fix block/char device detection
- ping: add -w, -W support (James Simmons)
- crond: add handling of "MAILTO=user" lines
- start-stop-daemon: make --exec follow symlinks (Joakim Tjernlund)
- date: make it accept ISO date format
- echo: fix echo -e -n "msg\n\0" (David Pinedo)
- httpd: fix several bugs triggered by relative path in -h DIR
- printf: fix printf -%s- foo, printf -- -%s- foo
- syslogd: do not error out on missing files to rotate
- ls: support Unicode in names
- ip: support for the LOWER_UP flag (Natanael Copa)
- mktemp: make argument optional (coreutil 6.12 compat)
- libiproute: fix option parsing, so that "ip -o link" works again
- other fixes and code size reductions in many applets
The email address gpl@busybox.net is the recommended way to contact
the Software Freedom Law Center to report BusyBox license violations.
- 12 June 2008 -- Sponsors!
We want to thank the following companies which are providing support
for BusyBox project:
- 5 June 2008 -- BusyBox 1.10.3 (stable)
BusyBox 1.10.3.
(svn,
patches,
how to add a patch)
Bugfix-only release for 1.10.x branch. It contains fixes for dnsd, fuser, hush,
ip, mdev and syslogd.
- 8 May 2008 -- BusyBox 1.10.2 (stable)
BusyBox 1.10.2.
(svn,
patches,
how to add a patch)
Bugfix-only release for 1.10.x branch. It contains fixes for echo, httpd, pidof,
start-stop-daemon, tar, taskset, tab completion in shells, build system.
Please note that mdev was backported from current svn trunk. Please
report if you encounter any problems with it.
- 19 April 2008 -- BusyBox 1.10.1 (stable)
BusyBox 1.10.1.
(svn,
patches,
how to add a patch)
Bugfix-only release for 1.10.x branch. It contains fixes for
fuser, init, less, nameif, tail, taskset, tcpudp, top, udhcp.
- 21 March 2008 -- BusyBox 1.10.0 (unstable)
BusyBox 1.10.0.
(svn,
patches,
how to add a patch)
Sizes of busybox-1.9.2 and busybox-1.10.0 (with almost full config, static uclibc build):
text data bss dec hex filename
781405 679 7500 789584 c0c50 busybox-1.9.2
773551 640 7372 781563 becfb busybox-1.10.0
Top 10 stack users:
busybox-1.9.2: busybox-1.10.0:
echo_dg 4116 bb_full_fd_action 4112
bb_full_fd_action 4112 find_list_entry2 4096
discard_dg 4108 readlink_main 4096
discard_dg 4096 ipaddr_list_or_flush 3900
echo_stream 4096 iproute_list_or_flush 3680
discard_stream 4096 insmod_main 3152
find_list_entry2 4096 fallbackSort 2952
readlink_main 4096 do_iproute 2492
ipaddr_list_or_flush 3900 cal_main 2464
iproute_list_or_flush 3680 readhere 2308
New applets: brctl, chat (by Vladimir Dronnikov <dronnikov AT gmail.com>),
findfs, ifenslave (closes bug 115), lpd (by Vladimir Dronnikov <dronnikov AT gmail.com>),
lpr+lpq (by Walter Harms), script (by Pascal Bellard <pascal.bellard AT ads-lu.com>),
sendmail (Vladimir Dronnikov <dronnikov AT gmail.com>), tac, tftpd.
Made NOMMU-compatible: crond, crontab, ifupdown, inetd, init, runsv, svlogd, tcpsvd, udpsvd.
Changes since previous release:
- globally: add -Wunused-parameter
- globally: add optimization barrier to all "G trick" locations
- adduser/addgroup: check username for invalid chars (by Tito <farmatito AT tiscali.it>)
- adduser: optional support for long options. Closes bug 2134
- ash: handle "A=1 A=2 B=$A; echo $B". Closes bug 947
- ash: make ash -c "if set -o barfoo 2>/dev/null; then echo foo; else echo bar; fi" work. Closes bug 1142
- build system: don't use "gcc -o /dev/null", old gcc can delete /dev/null in this case
- build system: fixes for cross-compiling on an OS X host
- build system: make it do without "od -t"
- build system: pass CFLAGS to link stage too. Closes bug 1376
- build system: add CONFIG_NOMMU
- cp: add ENABLE_FEATURE_VERBOSE_CP_MESSAGE. Closes bug 1470
- crontab: almost complete rewrite
- dnsd: properly set _src_ IP:port on outgoing UDP packets
- dpkg: fix bug where existence check was reversed
- eject: add -s for SCSI- and USB-devices (Nico Erfurth)
- fdisk: fix a case where break was reached only for DOS labels
- fsck: don't kill pid -1! (Roy Marples <roy at marples.name>)
- fsck_minix: fix bug in map_block2: s/(blknr >= 256 * 256)/(blknr < 256 * 256)/
- fuser: substantial rewrite
- getopt: add support for "a+" specifier for nonnegative int parameters. By Vladimir Dronnikov <dronnikov at gmail.com>
- getty: don't try to detect parity on local lines (Joakim Tjernlund <Joakim.Tjernlund at transmode.se>)
- halt: write wtmp entry if wtmp support is enabled
- httpd: "HEAD" support. Closes bug 1530
- httpd: fix bug 2004: wrong argv when interpreter is invoked
- httpd: fix bug where we did chdir("") if CGI path had only one "/"
- httpd: fix for POST upload
- httpd: support for "I:index.xml" syntax (Peter Korsgaard <jacmet AT uclibc.org>)
- hush: fix a case where none of pipe members could be started because of fork failure
- hush: more correct handling of piping
- hush: reinstate `cmd` handling for NOMMU
- hush: report [v]fork failures
- hush: set CLOEXEC on script file being executed
- hush: try to add a bit more of vfork-friendliness
- inetd: make "udp nowait" work
- inetd: make inetd IPv6-capable
- init: add FEATURE_KILL_REMOVED (Eugene Bordenkircher <eugebo AT gmail.com>)
- init: allow last line of config file to be not terminated by "\n"
- init: do not die if "/dev/null" is missing
- init: fix bug 1111: restart actions were not splitting words
- init: wait for orphaned children too while waiting for sysinit-like processes (harald-tuxbox AT arcor.de)
- ip route: "ip route" was misbehaving (extra argv+1 ate 1st env var)
- last: do not go into endless loop on read error
- less,klogd,syslogd,nc,tcpudp: exit on signal by killing itself, not exit(1)
- less: "examine" command will not bomb out on bad file name now
- less: fix bug where backspace wasn't actually deleting chars
- less: make it a bit more resistant against status line corruption
- less: improve search when data is not supplied fast enough by stdin - now will try reading for 1-2 seconds before declaring that there is no match. This fixes a very common annoyance with long manpages
- less: update line input so that it doesn't interfere with screen update. Makes "man bash", [enter], [/], <enter search pattern>, [enter] more usable - manpage now draws even as you enter the pattern!
- libbb: filename completion matches dangling symlinks too
- libbb: fix getopt state corruption for NOFORK applets
- libbb: full_read/write now will report partial data counts prior to error
- libbb: intrduce and use safe_gethostname. By Tito <farmatito AT tiscali.it>
- libbb: introduce and use nonblock_safe_read(). Yay! Our shells are immune from this nasty O_NONBLOCK now!
- login,su: avoid clearing environment with some options, as was intended
- microcom: read more than 1 byte from device, if possible
- microcom: split -d (delay) option away from -t
- mktemp: support -p DIR (Timo Teras <timo.teras at iki.fi>)
- mount: #ifdef out MOUNT_LABEL code parts if it is not selected
- mount: add another mount helper call method
- mount: allow and ignore _netdev option
- mount: make -f work even without mtab support (Cristian Ionescu-Idbohrn <cristian.ionescu-idbohrn at axis.com>)
- mount: optional support for -vv verbosity
- mount: plug a hole where FEATURE_MOUNT_HELPERS could allow execution of arbitrary command
- mount: recognize "dirsync" (closes bug 835)
- mount: sanitize environment if called by non-root
- mount: support for mount by label. Closes bug 1143
- mount: with -vv -f, say what mount() calls we were going to make
- msh: create testsuite (based on hush one)
- msh: don't use floating point in "times" builtin
- msh: fix Ctrl-C handling with line editing
- msh: fix for bug 846 ("break" didn't work second time)
- msh: glob0/glob1/glob2/glob3 were just a sorting routine, removed
- msh: instead of fixing "ls | cd", "cd | ls" etc disallow builtins in pipes. They make no sense there anyway
- msh: stop trying to parse variables in "msh SCRIPT VAR=val param". They are passed as ordinary parameters
- netstat: print control chars as "^C" etc
- nmeter: fix bug where %[mf] behaves as %[mt]
- nohup: compat patch by Christoph Gysin <mailinglist.cache at gmail.com>
- od: handle /proc files (which have filesize 0) correctly
- patch: don't trash permissions of patched file
- ps: add conditional support for -o [e]time
- ps: fix COMMAND column adjustment; overflow in USER and VSZ columns
- reset: call "stty sane". Closes bug 1414
- rmdir: optional long options support for Debian users. By Roberto Gordo Saez <roberto.gordo AT gmail.com>
- run-parts: add --reverse
- script: correctly handle buffered "tail" of output
- sed: "n" command must reset "we had successful subst" flag. Closes bug 1214
- sort: -z outputs NUL terminated lines. Closes bug 1591
- stty: fix mishandling of control keywords (Ralf Friedl <Ralf.Friedl AT online.de>)
- switch_root: stop at first non-option. Closes bug 1425
- syslogd: avoid excessive time() system calls
- syslogd: don't die if remote host's IP cannot be resolved. Retry resolutions every two minutes instead
- syslogd: fix shmat error check
- syslogd: optional support for dropping dups. Closes bug 436
- syslogd: send "\n"-terminated messages over the network. Fully closes bug 1574
- syslogd: tighten up hostname handling
- tail: fix "tail -c 20 /dev/huge_disk" (was taking ages)
- tar: compat: handle tarballs with only one zero block at the end
- tar: autodetection of gz/bz2 compressed tarballs. Closes bug 992
- tar: real support for -p. By Natanael Copa <natanael.copa at gmail.com>
- tcpudp: narrow down time window where we have no wildcard socket
- telnetd: use login always, not "sometimes login, sometimes shell"
- test: fix mishandling of "test ! arg1 op arg2 more args"
- trylink: instead of build error, disable --gc-sections if GLIBC and STATIC are selected
- udhcp: make file paths configurable
- udhcp: optional support for non-standard DHCP ports
- udhcp: set correct op byte in the packet for DHCPDECLINE
- udhcpc: filter unwanted packets in kernel (Cristian Ionescu-Idbohrn <cristian.ionescu-idbohrn AT axis.com>)
- udhcpc: fix wrong options in decline and release packets (Jonas Danielsson <jonas.danielsson AT axis.com>)
- umount: do not complain several times about the same mountpoint
- umount: do not try to free loop device or erase mtab if remounted ro
- umount: instead of non-standard -D, use -d with opposite meaning. Closes bug 1604
- unlzma: shrink by Pascal Bellard <pascal.bellard AT ads-lu.com>
- unzip: do not try to read entire compressed stream at once (it can be huge)
- unzip: handle short reads correctly
- vi: many fixes
- zcip: don't chdir to root
- zcip: open ARP socket before openlog (else we can trash syslog socket)
- 21 March 2008 -- BusyBox old stable releases
Bugfix-only releases for four past branches. Links to locations
for future hot patches are in parentheses.
1.9.2
(patches),
1.8.3
(patches),
1.7.5
(patches),
1.5.2
(patches).
How to add a patch.
- Old News
Click here to read older news