|
About
Documentation
Get BusyBox
Development
Links
Developer Pages
|
-
The Software Freedom Conservancy
acts as the GPL enforcement agent for various BusyBox copyright holders.
If you wish to report a GPL violation on BusyBox,
please write to gpl@busybox.net.
-
I want to thank the following companies which are providing support for the BusyBox project:
- 22 June 2016 -- BusyBox 1.25.0 (unstable)
BusyBox 1.25.0.
(git,
patches,
how to add a patch)
Sizes of busybox-1.24.2 and busybox-1.25.0 (with equivalent config, static uclibc build):
text data bss dec hex filename
894406 494 7420 902320 dc4b0 busybox-1.24.2
893717 489 7304 901510 dc186 busybox-1.25.0
Changes since previous release:
Aaro Koskinen (5):
cpio: implement -R/--owner
xargs: make -I imply -r
gunzip: add support for long options
gzip: add support for --no-name long option
nandwrite: implement -n (read/write without ecc)
Ari Sundholm (2):
blkdiscard: new applet
truncate: always set mode when opening file to avoid fortify errors
Arnout Vandecappelle (Essensium/Mind) (1):
taskset: fix non-fancy cpuset printing on big-endian
Bartosz Golaszewski (7):
i2cdetect: fix address skipping in auto mode
i2cdump: don't read block data in non-block modes
i2cdump: use I2C block mode for the 'i' mode parameter
i2cdump: bail-out if block read fails
i2cdump: display the numeric value for block read ioctl() errors
unshare: new applet
nsenter: new applet
Bjørn Forsman (1):
kconfig/lxdialog: get ncurses CFLAGS with pkg-config
Chris Renshaw (1):
Resolve linker issues with Android API 21 (dprintf, tcdrain)
Christian Lindeberg (1):
udhcpd: keep expired leases at startup
Curt Brune (1):
networking: add 'ip neigh' command
Denys Vlasenko:
make MKPASSWD a separate config option, not an automatic alias to cryptpw
rename FEATURE_INITRD to LINUXRC and make it separate, not an alias to init
fixes for problems found by bionic build
build system: finer-grained selection of search speedup table
build system: fix generate_BUFSIZ.sh to not alternate 1k and malloc builds
scripts/trylink: fix bit-rotted linker option verification
scripts/trylink: libbusybox fix
scripts/trylink: remove $CPPFLAGS
scripts/trylink: on failure, print a hint about CONFIG_EXTRA_LDLIBS
generate_BUFSIZ.sh: catch BUFSIZE < 1024 also on "big" builds
libbb: constify *bb_common_bufsiz1 (if it is compiled to be a pointer)
libbb: factor out code which queries screen width
libbb: get_uidgid() always called with allow_numeric=1
libbb: make "COMMON_BUFSIZE = 1024 bytes, the buffer will be malloced" work
libbb: make bb_common_bufsiz1 1 kbyte, add capability to use bss tail for it
libbb: make parse_chown_usergroup_or_die() set unspecified uid/gid to -1
libbb: speed up error_msg functions
libbb: two new functions: wait_for_exitstatus(pid), xfchdir(fd)
libarchive: fix open_zipped()
libarchive: fix xmalloc_open_zipped_read_close()
networking: allow dot at the end of the domain name in dhcp response
arping: avoid use of ether_ntoa(). Closes 8926
ash: fix command -- crash
cp: add -u/--update and --remove-destination
dos2unix: try to preserve ownership. closes 8311
du: extra compat: with -k and -m, round sizes up
dumpleases: make host names sanitized to shell-friendly condition
find_applet_by_name: add an example of faster linear search code
flock: fix -c; improve error handling of fork+exec
flock: merge spawn_and_wait() code patchs for -c and sans-c uses
fsck: do not use statics
fsck: use printf for message, not bb_info_msg
ftpd: make DIR parameter work for non-root too: chdir to it instead of chroot
grep: make errors other than "not found" result in exit code 2. Closes 8796
httpd: fix heap buffer overflow. Closes 8426
i2c_tools: suppress "'blen' may be used uninitialized in this function"
ifupdowm: fix "warning: unused variable 'iface_list'"
inotifyd: swap meaning of 'y' and 'm' events in help text. Closes 8726
iproute: support "scope". Closes 8561
libiproute: make rt_addr_n2a() and format_host() return auto strings
libiproute: rename invarg(a,b) to invarg_1_to_2(a,b)
login: add commented-out PAM double password avoidance from BZ 4003
ls: fix columnar output. Closes 8731
lzop: eliminate variable, use "int" as return type
mkfs_vfat: use bb_error_msg for logging, not bb_info_msg
modinfo: fix "-F firmware", add "intree" field display
modprobe-small: fix bogus handling of unpack errors
modprobe: skip non-.conf files only in subdirectories
modutils: fix build error with !DEPMOD
mount: support "nofail" option. Closes 8551
nmeter: convert field list to bit list
nmeter: fix a bug with unterminated varargs
nmeter: reinstate and document -d-1
nmeter: remove undocumented %NNNd specifier
ntpd: do not use a peer more than once (say, if two peers resolve to the same IP)
ntpd: if peer does not reply anymore, try re-resolving its hostname
ntpd: more informative poll lowering message
ntpd: print packet delay in clock update message
ntpd: retry initial DNS resolution (forever, no timeout for now)
ntpd: step when |offset| > 1 sec, not 0.125 sec
od: get rid of (almost all) statics
patch: correctly handle "patch FILE_TO_PATCH" form. Closes 7736
pmap: fix bogus {no such process} comm field text
rmmod: fix bad error message
sed: fix append command to match GNU sed 4.2.1
sed: make 's///w FILE' actually write to FILE. Closes 8251
sed: support "-f -" idiom
sed: understand \n, \r and \t in i and a commands. Closes 8871
setarch: add support for '-R' (disable randomization)
setfiles: switch bb_info_msg to printf
setsid: implement -c
sort: fix ENDCHAR handling in "-kSTART,N.ENDCHAR"
sort: fix key with delimiters breakage
stat: make -f optional. This allows to build stat for non-linux systems
sulogin: drop incorrect comment about suid-ness
sulogin: remove suid paranoia code, explain why it's not necessary
sulogin: use bb_error_msg instead of bb_info_msg; better message
tar: add a test that we don't write into symlinks
tar: add support for --strip-components=N
tar: fix files skipped with --strip_components not resetting selinux context
tar: implement --version for buildroot
tar: shrink hardlink name handling code
top: make sort field for 's' mode less confusing
udhcp: add setup_common_bufsiz() as needed
udhcp: fix a SEGV on malformed RFC1035-encoded domain name
udhcp: get rid of bb_info_msg()
udhcpc: do not use -t NUM for counting "select" packets, use 3
udhcpc: fix OPTION_6RD parsing (could overflow its malloced buffer)
umount: build fix for older glibc
unzip: better match for "standard" unzip's output; string shrinkage
unzip: fix a case where we find wrong CDE. Closes 8821
unzip: fix percent overflow; show "stored" files properly
unzip: shorter code for date/time generation
unzip: test for bad archive SEGVing
wget: if stderr is not a tty, progress bar shouldn't use tty-tricks
wget: make -T timeout work on header reads too. Closes 8636
wget: make Bartosz's "wget --passive-ftp -nd -t 3" work
zcip: do not query current time if we won't use the result
zcip: use bb_error_msg for logging, not bb_info_msg
Felix Fietkau (1):
busybox: fix uninitialized memory when displaying IPv6 addresses
Hans Dedecker (1):
dhcpc: Use client IP address as source address for DHCP renew/rebind messages
Isaac Dunham (1):
dumpleases: new option -d to show time in seconds
Jean Delvare (1):
kbuild: Fix gcc -x syntax
Junio C Hamano (1):
kconfig: fix menuconfig on debian lenny
Justin Lecher (1):
menuconfig: optionally use pkg-config to detect ncurses libs
Krzysztof Mazur (1):
menuconfig: fix extended colors ncurses support
Kylie McClain (1):
Fix compiling with musl's utmp stubs
Michal Marek (1):
kbuild: Make scripts executable
Mike Frysinger (12):
trylink: include LDFLAGS when checking linkage
swapon/swapoff: refine the -e (ifexists) option
blkid: add bcache support
truncate: use O_WRONLY|O_NONBLOCK
build: add a sanitizer debug option
modprobe: only parse files that end in .conf
ash_test: printenv: fix missing includes
ash_test: ignore generated files
Revert "lxdialog: fix ncursesw include detection"
syslogd: minor tweaks to text
undeb: clean up
unrpm: clean up
Natanael Copa (2):
ifupdown: use -x hostname:NAME with udhcpc
libbb: fix time parsing of [[CC]YY]MMDDhhmm[.SS]. Closes 8951
Nicolas Carrier (1):
init: make the command-line rewrite optional
Nicolas Cavallari (1):
ifupdown: allow duplicate interface definitions
Pascal Bach (1):
chpasswd: support -c argument and respect DEFAULT_PASSWD_ALGO
Rafał Miłecki (1):
dd: support iflag=skip_bytes
Richard Genoud (1):
tr: support octal ranges
Ron Yorston (26):
Rewrite iteration through applet names to save a few bytes
libbb: move common code into run_applet_and_exit
lineedit: search applets as well as PATH for tab completion
ash: add tests for failures of the exec and command builtins
ash: fix EXEXEC status clobbering
ash: allow popredir to be called if the stack is empty
ash: copy function tests from hush testsuite
ash: add support for bash 'function' keyword
ash: add test for issue with here document
ash: allow newline after variable name in for loop
ash: save a few bytes in code to parse case statements
ash: respect -p flag when command builtin is run with -v/-V
ash: only allow local variables in functions
ash: fix error during recursive processing of here document
ash: simplify EOF/newline handling in list parser
ash: fix corruption of ${#var} if $var contains UTF-8 characters
ash: bash-compatible $'...' shouldn't expand in double quotes
busybox: alter help message in standalone shell mode
busybox: make busybox an optional applet
Allow "busybox APPLET" to work when busybox is disabled
wget: shrink code if https isn't supported
libiproute: use if_nametoindex
printf: short-circuit output when argument to %b includes \c
applet_tables: save space by removing applet name offsets
find_applet_by_name: loop index should be signed
Sven Eisenberg (2):
ubirename: new applet
ubirmvol: implement -N switch for ubirmvol
Szabolcs Nagy (1):
ip: fix problem on mips64 n64 big endian musl systems
Timo Teräs (4):
ifupdown: pass interface device name for ipv6 route commands
fbsplash: use virtual y size in mmap size calculations
modutils: merge module_entry and module_info to common
networking: properly initialize ipv6 scope id for printing it
Yaakov Selkowitz (2):
kconfig: check ncursesw headers first in check-lxdialog
kconfig: fix check-lxdialog for DLL platforms
Yann E. MORIN (1):
kconfig/lxdialog: rationalise the include paths where to find {.n}curses{,w}.h
- 25 March 2016 -- Building on an Android tablet.
Android is based on Linux kernel, but sadly and unexplicably,
Android userspace is not Unix-friendly: in many cases,
things are done differently than in "usual" Unix systems.
For example, there is no /bin directory (and therefore ubiquitous #!/bin/sh
scripts won't work). Instead, there is /system/bin.
I have a Samsung Galaxy Tab S (SM-T700 model) and I made it compile Busybox as follows:
- "Rooted" the tablet (acquired root access). This step is device-specific.
- Installed the SuperSU application.
- Installed the Termux application -
it provides a small repository of essential tools: gcc-based toolchain,
git, ncurses, etc.
- Ran its terminal, installed packages I needed, pulled Busybox git tree.
- Created a /bin symlink to /system/bin, to make #!/bin/sh scripts work
(the build fails otherwise).
- Now the usual "make defconfig", "make menuconfig", "make" work.
Some parts won't compile (not all kernel headers are present, libc API
different or incomplete, etc). The maximal config which did compile
is now in the git tree, in configs/android_502_defconfig.
The toolchain provided by Termux is based on Android's Bionic libc
and Bionic has some design problems. An annoying one is that off_t is
32-bit, struct_stat::st_size is not off_t (this violates standard
expectations), therefore CONFIG_LFS=y does not build, and CONFIG_LFS=n
builds with warnings (printf'ing st->st_size with wrong specifier).
- 24 March 2016 -- BusyBox 1.24.2 (stable)
BusyBox 1.24.2.
(git,
patches,
how to add a patch)
Bug fix release. 1.24.2 has fixes for
build system (static build with glibc fixed),
truncate, gunzin and unzip.
- 24 October 2015 -- BusyBox 1.24.1 (stable)
BusyBox 1.24.1.
(git,
patches,
how to add a patch)
Bug fix release. 1.24.1 has fixes for
ftpd (DIR parameter works for non-root too),
httpd (heap overflow fix),
sort (fix for a a problem affecting glibc build).
Build system has a fix for the lost link-time optimizations. In 1.24.0 announcement,
you might have noticed that sizes unexpectedly grew relative to 1.23.2. Now it is fixed:
text data bss dec hex filename
860126 486 7272 867884 d3e2c busybox-1.23.2
869074 516 7364 876954 d619a busybox-1.24.0 (buggy link script)
858906 486 7180 866572 d390c busybox-1.24.0 (fixed link script)
858941 486 7180 866607 d392f busybox-1.24.1
Check out a new applet, "uevent". It is a netlink listener. It provides
alternative to having mdev as kernel hotplug helper. Instead of setting up
the former via "echo /sbin/mdev >/proc/sys/kernel/hotplug", start "uevent mdev"
early during boot. "uevent" will run "mdev" for each hotplug event, waiting
for each child to terminate before starting a next one.
The former method does not require a long-lived listener process,
but it is racy: many copies of mdev can run in parallel.
- 12 October 2015 -- BusyBox 1.24.0 (unstable)
BusyBox 1.24.0.
(git,
patches,
how to add a patch)
Sizes of busybox-1.23.2 and busybox-1.24.0 (with equivalent config, static uclibc build):
text data bss dec hex filename
860126 486 7272 867884 d3e2c busybox-1.23.2
869074 516 7364 876954 d619a busybox-1.24.0
I would like to feature some less-known useful tools in Busybox.
Let me talk about "nmeter" applet. I find myself using it
surprisingly often. For example, it helped me to correctly parallelize
a very large multiple kernel build job (~30000 kernel builds)
so that all CPUs are loaded, but machine isn't evicting file cache
because it has too many jobs for installed RAM.
When dealing with a machine which seems to be sluggish, it takes some time
to pinpoint the cause. It can be lack of free memory. It can be excessive
CPU load. It can be misbehaving (slow) storage or network.
nmeter allows to monitor many such parameters and presents them in a
compact one-line form. This lets you see the time evolution as well.
Here is an example:
# nmeter '%t %c x %x m %[mf] f%p p %[pn] b %b net%[neth0]'
20:51:22 .......... x 837 m 2.2g f 0 p 377 b 0 0 net 0 0
20:51:23 .......... x 1195 m 2.2g f 0 p 377 b 0 0 net 128 0
20:51:24 .......... x 1687 m 2.2g f 0 p 377 b 0 0 net 64 0
20:51:25 .......... x 1829 m 2.2g f 0 p 377 b 0 0 net 875 70
20:51:26 U......... x 1567 m 2.2g f 6 p 377 b 0 0 net 64 0
20:51:27 U......... x 1451 m 2.2g f 0 p 377 b 0 0 net 64 0
20:51:28 .......... x 1332 m 2.2g f 0 p 377 b 0 0 net 64 0
20:51:29 .......... x 1698 m 2.2g f 0 p 377 b 0 0 net 64 0
20:51:30 .......... x 1640 m 2.2g f 0 p 377 b 0 0 net 64 0
20:51:31 .......... x 1397 m 2.2g f 0 p 377 b 0 0 net 64 0
20:51:32 .......... x 1244 m 2.2g f 0 p 377 b 0 4096 net 64 0
20:51:33 U......... x 1660 m 2.2g f 0 p 377 b 0 0 net 128 0
20:51:34 U......... x 1793 m 2.2g f 0 p 377 b 0 0 net 64 0
20:51:35 .......... x 1583 m 2.2g f 0 p 377 b 0 0 net 64 0
20:51:36 .......... x 1308 m 2.2g f 0 p 377 b 0 0 net 64 0
If CPU load is high, the CPU bar will immediately show this.
%x column shows context switches per second, allowing to detect cases
where processes are waking and waiting on each other excessively.
%[mf] is free memory, and it is smart enough to show actual usable memory:
unlike many other tools, it considers buffer cache as free memory.
%p and %[pn] columns show forks and number of processes, they let you
detect a case where a daemon is respawning continuously.
Two %b numbers are block IO read and write rates. %[neth0] is network IO
rate on the specified interface. More specifiers exist - please read
"nmeter --help" output.
With -d MSEC option and small values of MSEC, this tool allows to see a
detailed view of bursty activity. Sometimes you can literally see every
network packet arriving. To make this possible, this tool is written
so that it reads the minimum of informaion it needs from /proc.
In this example, we can see how a packet arrived to eth0, complete with
its IRQ#30 firing:
# nmeter -d10 '%4t irq%30i net%[neth0]'
21:07:58.2301 irq 0 net 0 0
21:07:58.2401 irq 0 net 0 0
21:07:58.2502 irq 0 net 0 0
21:07:58.2601 irq 1 net 64 0
21:07:58.2701 irq 0 net 0 0
21:07:58.2802 irq 0 net 0 0
21:07:58.2902 irq 0 net 0 0
As you see, each update takes about 0.2 millisecond of processing
time. You can run even -d1, if you want. -d0 also works, it is a mode
where updates are continuous.
On the other hand, with large update interval,
you can run this tool continuously on a server machine and save its output,
to be able to investigate mysterious drops in performance at a time when
there was no operator present. If you have an oopsing server, it is useful
to have another nmeter instance's output to be constantly printed to
its console, if you want to see what was going on just before oops.
"Is my server occasionally dies in an IRQ storm?" situation.
Changes since previous release:
Aaro Koskinen (3):
gzip: add support for compression levels 4-9
diff: fix -B with single line changes
diff.tests: add testcases for -B and single line changes
Adam Tkac (1):
ntpd: relicense ntpd applet to ISC-style license
Alex Dowad (1):
ifupdown: 'prio' should have been 'metric' in static_up and static_up6
Alexander Korolkov (1):
arping: fix iface name in error messages
Alfonso Ranieri (1):
volume_id: fix a buglet introduced by is_prefixed_with() conversion
Andrew Fuller (1):
vi: basic undo feature shouldn't depend on yankmark
Ari Sundholm (3):
dd: add optional support for status=noxfer/none
dd: move suffix struct to xatonum.c
truncate: new applet
Arthur Gautier (1):
udhcpc: dns labels can actually start with a number
Bartosz Golaszewski:
Makefile: fix cscope target
i2cget, i2cset, i2cdetect, i2cdump: new applets
i2c-tools: fix 'i2cdetect -l'
i2c-tools: only try /dev/i2c/* if opening /dev/i2c-* fails with ENOENT
unit-tests: remove unnecesary field from struct bbunit_listelem
unit-tests: remove code depending on WANT_TIMING
Makefile: add missing libraries to LDLIBS
libbb: add unit tests for is_prefixed_with()
libbb: add a comment describing the way is_prefixed_with() works
libbb: add is_suffixed_with() function
i2c-tools: remove duplicate definitions
i2c-tools: rename remaining defines
Bernhard Reutner-Fischer (5):
dc: tweak parsing
wget: fix --header to not append duplicate headers
*: Switch to POSIX utmpx API
include: Fallback to UTMP unless there is UTMPX support
adduser: Add -k /path/to/skel
Christoph J. Thompson (1):
iproute: don't hardcode the path to config files
Clayton Shotwell (1):
applets: add installation of individual binaries
Daniel Thompson (1):
libbb: enable support for !CONFIG_MULTIUSER
Denys Vlasenko:
truncate: new applet
uevent: new applet
build system: -fno-builtin-printf
build system: make CONFIG_EXTRA_LDFLAGS go to LDFLAGS, not EXTRA_LDFLAGS
build system: remove special-casing for extra libs
examples/mdev_fat.conf: document that newer mdev exposes path
update example ntp.script
updated android_ndk_defconfig
platform.h: add compat mempcpy
platform.h: enable mempcpy for FreeBSD
platform.h: mempcpy needs <string.h>
libbb: add setsockopt_foo helpers
libbb: auto_string() for efficient handling of temporary malloced stirngs
libbb: code shrink by factoring out common update_utmp_DEAD_PROCESS
libbb: introduce and use is_prefixed_with()
libbb: make INET[6]_rresolve use sockaddr2{host,dotted}_noport
libbb: make is_suffixed_with() return pointer inside string, not key.
libbb: more compact API for bb_parse_mode()
libiproute: use itoa() where appropriate
libpwdgrp: fix a memory leak in getXXnam (we did not save address of string buf)
libpwdgrp: fix counting of commas in group list
libpwdgrp: getgrXXX: empty string is not a member name, do not store it
libpwdgrp: reinstate Tito's optional atexit freeing
libpwdgrp: store getXXnam result in a single malloc block
libpwdgrp: use FAST_FUNC to make "matching ABI" optimization more likely to succeed
libpwdgrp: use a better estimate of max struct size
libpwdgrp: use getpwent() instead of getpwent_r()
ash: a bunch of trivial simplifications
ash: add tests adapted from hush glob tests. glob2.tests currently fails
ash: explain what "local -" does
ash: fix a SEGV case in an invalid heredoc
ash: fix a SEGV in ${#1}
ash: fix handling of duplicate "local"
ash: make dowait() a bit more readable. Logic is unchanged
ash: simplify "you have mail" code
hush: add recent ash tests to hush testsuite too (they all pass for hush)
hush: document buggy handling of duplicate "local"
hush: fix a nommu bug where a part of function body is lost if run in a pipe
hush: fix umask: umask(022) was setting umask(755)
awk: support "length" form of "length()". Closes 8371
dc: fix "dc p" printing bogus data
deluser: also remove user from /etc/group
deluser: implement --remove-home
depmod: fix recent breakage in modules.dep generation
dhcpd: fix an improper widening conversion
diff: fix a bug in diffing against stdin. Closes 7784
dpkg: update supported compression methods
find: support "find . -delete" idiom - do not try rmdir(".")
ftpd: change_identity() must be after chroot()
ftpd: prevent zombies. closes 7832
gzip: speed up and shrink put_16bit()
ifconfig: fix double free fatal error in INET_sprint
ifplugd: discovered why it needed net/ethernet.h: just for ETH_ALEN
inetd: fix order of array index check and array access
ip: increased max ID for /etc/iproute2/rt_tables to 1023
ipaddress: better formatting, no code changes
less: improve regular file detection in line counting code
ls: fix year 9999 bug :)
mdev: if a "future" mdev.seq is seen, do not overwrite it with ours
mdev: improve logging
modinfo: fix fallout from basename removal
modprobe-small: fix and simplify rmmod
modprobe-small: fix recent breakage: modprobe -r was using full path
modprobe-small: if concurrent module load did not succeed, wait
modprobe: fix "modprobe devname:snd/timer" case (alias with a slash)
modprobe: fix recent breakage: modules.dep reading code needs to strip dirname
modprobe: revert checking for /, stop doing basename() on modprobe args
ntpd: change help text about -l to say that it doesn't disable client code
ntpd: get rid of G.initial_poll_complete
patch: segfault fix. Closes 7916
ping: fix recently introduced build breakage for non-optimizing builds
ps: fix SEGV on narrow screens. closes 8176
remove global "jmp_buf die_jmp" from !FEATURE_PREFER_APPLETS builds
route: fix bogus read error when route table is empty
route: improve -A inet6
runsvdir: (almost) close a signal race
runsvdir: do not block SIGCHLD around poll/sleep
runsvdir: if pid==1, also intercept SIGINT for -s SCRIPT
sed: implement ",+N" range end
sort: fix -kN,M handling (was including last separator into the comparison)
ssl_helper: tweaks discovered while building 32-bit version
sync: add support for -d -f FILE
tar: do not try to decode GNU extended headers as pax headers
tc: fix print_rate
trim extra newlines in help texts
udhcpc: fix for some Android toolchain breakage
umount: always use umount2 syscall with specified flags
unzip: prevent attacks via malicious filenames
uudecode: tolerate text input with CR+LF line ends
vi: make BACKSPACE and DELETE join lines at start/end of line
wget: make openssl/ssl_helper choice configurable
Eugene Rudoy (1):
ash: consider "local -" case while iterating over local variables in mklocal.
Felix Fietkau (1):
find: fix regression in status processing for path arguments
Frank Bergmann (1):
ifupdown: correct ifstate update during 'ifup -a'. Closes 6212
Guillermo Rodriguez (1):
free: handle "cached" value too
Isaac Dunham (1):
mount: -T OTHERTAB support
John Schroeder (1):
udhcpd: account for script delay in lease
Junling Zheng (1):
chown: fix help text
Kevin Wallace (1):
libbb/loop: don't try to re-use existing loop device
Linus Walleij (1):
fbset: fix rgba parsing
Maninder Singh (4):
typo fixes
fix if(p)/free(p) construct
fix whitespaces
Removes stray empty line from code
Martin Kaiser (1):
telnetd: we only need CONFIG_UNIX98_PTYS from the Linux kernel
Matt Whitlock (4):
Bionic lacks ttyname_r; provide a workaround
Bionic lacks tcdrain; provide a workaround
Bionic lacks mempcpy; enable existing workaround
Conditionalize Bionic workarounds on __ANDROID_API__
Michael Tokarev (1):
ip addr: support change and replace commands
Micke Prag (1):
ubiattach: add option -O
Mike Frysinger (3):
trylink: use mktemp instead of hardcoding paths
trylink: respect compiler settings when probing features
echo: make escape sequences depend on fancy mode
Natanael Copa (1):
modprobe: fix modprobe -r and parsing of /etc/modprobe.d
Peter Korsgaard (2):
dmesg: add -r option to print raw format even when FEATURE_DMESG_PRETTY is enabled
modprobe: handle module arguments containing spaces
Phil Sutter (1):
logread: implement dumpfollow mode of operation
René Rhéaume (1):
swaponoff: add support for -e
Rich Felker (1):
gzip: do not store timestamp in gzip header
Ron Yorston:
libbb: remove unnecessary argument to nonblock_immune_read
libbb: add a function to make a copy of a region of memory
ash: do not split the result of tilde expansion
ash: code shrink around varvalue
ash: perform tilde expansion in all parameter expansion words
ash: do not expand tilde in parameter expansion within quotes
ash: remove superfluous code in arithmetic mode
ash: remove arithmetic expansion collapsing at parse time
ash: move parse-time quote flag detection to run-time
ash: fix breakage of ${v/pat/str}
ash: remove parsebackquote flag
ash: use alloca to get rid of setjmp
ash: fix slash treatment in expmeta
less: document -S flag and make it independently configurable
less: fix display of line numbers
less: correctly account for tabs when rewrapping lines
less: improvements to verbose status messages
less: fix numeric input
less: move code to count lines into a separate function
less: rearrange detection of non-regular files
less: add a function to detect when display is at end of file
less: fix line number confusion
less: allow use of last column of terminal
less: further tweaks to regular file detection
less: fix botched attempt to use last column
vi: failure to open file is not an error when initialising buffer
vi: fix reading of file after last line
od: fix printing of high-bit chars
uname: make OS name configurable
ipcalc: fix trivial usage message
Serj Kalichev (1):
acpid: fix logging
Sören Tempel (1):
login: don't print motd if .hushlogin exists in users home
Thiago Jung Bauermann (2):
libarchive: auto-detect .Z files as well
bzcat.tests: Run both .gz and .bz2 tests, and add .Z tests
Tito Ragusa (4):
libpwdgrp: rewritten to use malloced implementation
libpwdgrp: line counting in error meesages is broken, remove it
libpwdgrp: fix thinko in getpwnam
libbb: another unit test for is_suffixed_with
Vladislav Grishenko (1):
zcip: fix wrong comparison of source IP with our IP
- 23 March 2015 -- BusyBox 1.23.2 (stable)
BusyBox 1.23.2.
(git,
patches,
how to add a patch)
Bug fix release. 1.23.2 has fixes for
dc (more tolerant to lack of whitespace),
modinfo (was not ignoring directory component of path names in a few places),
modprobe (better compatibility for "rmmod" alias),
wget (--header now overrides built-in headers, not appends to).
- 27 January 2015 -- BusyBox 1.23.1 (stable)
BusyBox 1.23.1.
(git,
patches,
how to add a patch)
Bug fix release. 1.23.1 has fixes for
ash (fixed a problem with ${#N} expansion),
ftpd (fixed "zombie apocalypse"),
modprobe (was not ignoring directory component of path names in a few places),
vi.
- 23 December 2014 -- BusyBox 1.23.0 (unstable)
BusyBox 1.23.0.
(git,
patches,
how to add a patch)
Sizes of busybox-1.22.1 and busybox-1.23.0 (with equivalent config, static uclibc build):
text data bss dec hex filename
873357 489 7072 880918 d7116 busybox-1.22.1
876323 490 7072 883885 d7cad busybox-1.23.0
Changes since previous release:
Aaro Koskinen (2):
less: make -E work
install: implement -t DIR
Ari Sundholm (2):
df: implement -T option
df: fix -T option when ENABLE_FEATURE_HUMAN_READABLE=0
Bartosz Golaszewski (17):
gitignore: ignore files generated by 'make test'
sort: remove a magic number from compare_keys()
sort: check global flags on fallback sort
ntpd: fix compilation warnings
top: fix compilation warnings
grep: properly handle grep -w "^str" in !EXTRA_COMPAT case too
Kbuild: move CONFIG_PAM to general configuration
shuf: fix a segfault on 'shuf -e'
shuf: improve help text
docs: update new-applet-HOWTO.txt
find: add optional support for '-exec ... {} +'
libbb: use a wrapper around sysconf(_SC_CLK_TCK) to save a few bytes
unit-tests: implement the unit-testing framework
Rename INIT_LAST to INIT_FUNC to avoid confusion
gitignore: add testsuite/echo-ne
libbb: use sendfile() to copy data between file descriptors
Config: select PLATFORM_LINUX if using sendfile()
Baruch Siach (2):
nandwrite: fix build when long options are disabled
nanddump: don't show --bb in usage when disabled
Bernhard Reutner-Fischer (1):
libbb: provide usleep() fallback implementation
Cristian Ionescu-Idbohrn (1):
tail: adjust help/usage texts
David Marchand (1):
modinfo: fix module parsing with kernel >= 2.6.37
Denys Vlasenko:
*: add conditional support for -v / --verbose
*: exit with 127 if applet name wasn't found - it's more POSIXy
ash,hush: do not segfault on $((2**63 / -1))
ash,hush: fix a thinko about 2^64-1 factorization
ash,hush: improve randomness of $RANDOM, add easy-ish way to test it
ash,hush: run reinit_unicode() only if makes sense
ash,hush: set $HOSTNAME is bash compat. Closes 7028
ash: factor out ASH_HELP config option
ash: fix handling of negative start value in ${v:start:len}
ash: fix off-by-one in "jobs %4" handling. Closes 7310
ash: in bash compat mode, always export $SHLVL
ash: make "local VAR" unset VAR (bash does that)
ash: make ${#var} unicode-aware
awk: fix handling of "if ... break ; else ..." - closes 7226
crond: implement "SHELL=prog" in crontab. Export LOGNAME as POSIX wants
crond: simplify logging code
du, copy_file: fix file matching on cramfs. Closes 5456
fakeidentd: simplify ndelay manipulations
false: make "false --help" exit with 1
find: exit code fixes for find -exec
find: fix a regression introduced with -HLP support
find: support -perm /BITS. Closes 7340
find: use sysconf(_SC_ARG_MAX) to determine the command-line size limit
ftpd: do not use root_fd if we are not in chroot
ftpd: escape chroot prior to re-executing ls helper
ftpd: for LIST, open current directory *in the child*
ftpd: make LIST command show dotfiles too
ftpd: support deprecated XPWD command
getty: set tty attrs so that control chars are shown as ^c
grep: fix "grep -r PATTRN SYMLINK_TO_DIR"
grep: fix -w match if first match isn't a word, but second is. Closes 4520
grep: fix two bugs with -w
hush: make "true" built-in
hush: make ${#var} unicode-aware
hwclock: fix setting of tz_minuteswest. Closes 5414
init: do not run shutdown/reexec actions from signal handler
init: if libc-based Unicode support is on, run setlocale(LC_ALL, "") at startup
ip link: add support for "address ETHADDR". Closes 4862
less: accept and ignore -s
less: disable "suppress empty wraparound" optimization
less: fix bugs discovered with "git log -p | less -m" on kernel tree
less: move "retry-on-EAGAIN" logic closer to read ops
libarchive: add capability to unpack to mem.buffer
libarchive: open_zipped() does not need to check extensions for e.g. gzip
libbb/obscure.c: code shrink. Suggested by Tito.
libbb: FreeBSD fix for B<num> baud rate constants not fitting into a short
libbb: don't die if crypt() returns NULL
libbb: fix a bad check for uclibc >= 0.9.31
libbb: fix bb_ask() to flush input before prompt, not after. Closes 7190
libbb: fix compile failure if both ARG_MAX and _SC_ARG_MAX are defined
libbb: fix empty PATH components handling
libbb: fix parsing of "10101010" date/time form
libbb: fix thinko in rtc_xopen()
libbb: if opening /dev/loopN returns ENXIO, don't try N++
libbb: make rtc_xopen try harder on EBUSY
libbb: make syslog level for bb_error_msg's configurable. use it in crond
libbb: open_zipped() should not fail on non-compressed files
libbb: use ARG_MAX for bb_arg_max() only if it's 60k+
lineedit: don't fall back to simple line input if tty is in raw mode
ls: make "ls -s DIR" show total too. Closes 4946
lzop: add overflow check
make xmalloc_open_zipped_read_close result NUL terminated
man: accept a list of dirs in $MANPATH
man: default to ascii
man: do not mangle $MANPATH in memory
mdev: treat zero-length /dev/mdev.seq the same as "\n" one. Closes 7334
modprobe,rmmod: reject module names with slashes
modprobe-small: (un)load all modules which match the alias, not only first one
modprobe-small: fix help messages for aliased module-related applets
modprobe-small: fix safe_strncpy truncating last char of module name
modprobe-small: remove redundant aliases from modules.dep.bb
nc: fix option bit positions. Closes 6926
networking/ssl_helper: experimental matrixssl-based ssl helper
networking: explain isrv_run() API
ntpd: add optional support for /etc/ntp.conf
ntpd: add support for -I IFACE
ntpd: adjust last packet's recv time after a step
ntpd: be less eager to use shorter poll intervals
ntpd: fix wrong delay value in one of the printed messages
ntpd: remove now unnecessary check for IP_PKTINFO definition
ntpd: truly ignore high delay packet
ping: revert "try SOCK_DGRAM if no root privileges"
platform.h: undef HAVE_STRCHRNUL only on correct versions of FreeBSD
rtcwake: fix incorrect (reversed) rtc/sys adjuestment; code shrink
script: make it work even if fd 0 is closed
sed: fix "sed CMD -i nonexistent_file". Closes 7484
sed: fix a buglet in s///NUM handling
sendmail: make -f optional, document its default value
sha3: add 32-bit optimized bit-sliced implementation
sha3: code shrink (and speedup for SHA3_SMALL=0)
shuf: new applet
sysctl: do not error out showing write-only data. Closes 6386
syslogd: make "-O -" log to stdout
tar: fix "tar -cJ" ignoring -J option. Closes 7706
tar: tighten up pax header validity check
taskset: fix logic error in "if it doesn't start with 0x..."
taskset: support CPU masks for more than 64 CPUs
test: fix mishandling of "test '(' = '('" and similar
tftpd: support full 512-byte requests
tftpd: tweak HP PA-RISC firmware bug compatibility
top: fix memset length (sizeof(ptr) vs sizeof(array) problem)
trylink: emit names of linked executables
ubiupdatevol: fix -t to not require an option. Closes 7466
udhcpc: account for script run time
udhcpc: don't use BPF filter, users report problems (bugs 4598, 6746)
udhcpc: fix BPF filter. Hopefully fixes the root cause of 4598 and 6746
udhcpc: ignore NAKs from "wrong" servers. Closes 4267
udhcpc: in comments, explain the kind of raw socket we create
udhcpc: make hostname sanitization optional. Closes 3979
udhcpd: if a lease from lease file coincides with a static one, ignore it
vi: clear undo buffer when we change to another file
vi: fix incorrect memory access on brace matching. Closes 7256
wget: add commented-out code to use ssl_helper instead of openssl
wget: add support for https using "openssl s_client" as a helper
wget: fix a case where progress bar isn't updated if writes are very slow
wget: fix use-after-free of ->user. Closes 6836
xargs: add support for -I and -i. Closes 493
zcat: complain if input is not compressed
Drew Moseley (1):
build system: specify '-nostldlib' when linking to .o files
Eugene Rudoy (1):
iplink: fix build with kernel versions prior to 2.6.23
Florian Fainelli (1):
ping: add -p to specify data pattern
Isaac Dunham (1):
unlink: new applet
Jacob Kjaergaard (1):
flashcp: change BUFSIZE to 4k
Jeremy Kerr (1):
udhcp: add PXELINUX path prefix option (code 210) definition
Jody Bruchon (1):
vi: undo support for vi with intermediate queuing
John Spencer (1):
man: parse "DEFINE pager" in config
Joshua Judson Rosen (5):
syslogd: avoid spurious ftrunctate() calls for "-b 0"
syslogd: remember to un-writelock log-files even when called with "-b 0"
syslogd: Unify unlink/truncate + unlock log-rotation logic
syslogd: syslogd: don't *decrement* log_file->size on write failures
syslogd: make "reopen log file every second" logic work for multiple logs
Kaarle Ritvanen (2):
ifupdown: support 'link' address family
sendmail: use FQDN in default envelope sender
Ken Sharp (1):
zcip: fix link-local IP conflict detection
Matt Whitlock (3):
avoid calling bb_strtou twice in MIN macro expansion
fix interaction of -a and -p options in swapon
add discard option -d to swapon
Matthias Andree (1):
build system: fix non-portable sed constructs.
Michael Gernoth (1):
stat: fix printing selinux context and null-dereference
Michael Tokarev (3):
testsuite: fix last "which" change
init: do not fail build if SIGPWR is not defined
iproute: support onelink route option and print route flags
Michel Stam (3):
udhcpd: add option for tweaking arpping
zcip: allow our own class B range to be used for ZeroConf
zcip: Add environment variable for overriding log functionality
Mike Frysinger (2):
uname: fix up usage documentation
appletlib: fix set-but-unused warning
Miroslav Lichvar (4):
ntpd: don't wait for good offset before disabling burst mode
ntpd: split out poll adjusting code
ntpd: don't stay at short polling interval
ntpd: calculate offset to jitter ratio before updating jitter
Morten Kvistgaard (1):
ftpd: add optional support for authentication
Pascal Bellard (1):
fatattr: new applet
Peter Kümmel (1):
Make it possible to override LOGIN_FAIL_DELAY in CONFIG_EXTRA_CFLAGS
Richard Genoud (4):
nanddump: correct rounding to next page (lead to infinite loop)
nanddump: add options --bb=skipbad and padbad
nanddump: kill -b Omit bad block
nanddump: change default to --bb=skipbad
Romain Naour (1):
su: add a delay if the password is incorrect
Ron Yorston (1):
lineedit: don't block when looking for escape sequence in vi-mode
Ryan Mallon (1):
fakeidentd: fix use-after-free
Timo Teräs (1):
top: fix and merge code to parse /proc/meminfo
Tito Ragusa (4):
adduser,addgroup: introduce and use CONFIG_LAST_ID
swapon/swapoff: size reduction, cleanup, fixes, improvements
swapon/swapoff: -a returns 0 on ignored errors
which: rewrite
- 20 January 2014 -- BusyBox 1.22.1 (stable)
BusyBox 1.22.1.
(git,
patches,
how to add a patch)
Bug fix release. 1.22.1 has fixes for
find (was requiring the path argument in some cases, unlike GNU find),
grep (fixes for -w handling),
ntpd (wasn't slewing time after large negative step),
compile fixes for some configurations.
- 1 January 2014 -- BusyBox 1.22.0 (unstable)
BusyBox 1.22.0.
(git,
patches,
how to add a patch)
Sizes of busybox-1.21.1 and busybox-1.22.0 (with equivalent config, static uclibc build):
text data bss dec hex filename
891522 497 7584 899603 dba13 busybox-1.21.1
893754 497 7568 901819 dc2bb busybox-1.22.0
Changes since previous release:
Aaro Koskinen (9):
fdisk_sun: fix corrupted partition data with blank disk
fdisk_sun: fix partition alignment
sendmail: avoid sending mail to wrong addresses
sendmail: don't mangle e-mail headers
sendmail: support addresses inside angle brackets
sendmail: support address lists
sendmail: support long header fields for recipients
sendmail: don't add To: header if it already exists
sendmail: don't add multiple To: headers
Alexander Shiyan (2):
nanddump: fix build if nandwrite isn't enabled
flash_eraseall: implement -N
Bartosz Golaszewski (6):
grep: don't bail out on first mismatch if '-w' option is set
networking: code shrink
date: accept 'yyyy-mm-dd HH' and 'yyyy-mm-dd' date formats
Refactor catv. Move visible() from stty to libbb.
tail compat: fix header printing for tail -f
bloat-o-meter: add usage info
Bernhard Reutner-Fischer (11):
awk: Fix handling of functions with empty body
setserial: Fix typo: s/baund_rate/baud_rate/g
chrt: remove warning for _POSIX_PRIORITY_SCHEDULING
buildsys: Add helper to list suid applets
awk: Fix handling of functions with empty body
swaponoff: shrink
ash: Use setvar2 some more
ash: Set SHLVL in ASH_BASH_COMPAT
fstrim: -17b
fstrim: Indicate failure on error
fstrim: Needs to fire at the mp, not bd
Bernhard Walle:
pgrep: fix -x option
Bogdan Purcareata:
init: halt on SIGPWR too
Cristian Ionescu-Idbohrn:
foo*sum: Correct syntax error
Cédric Cabessa:
syslogd: use _PATH_LOG when available
Daniel Borca (4):
platform: strchrnul is missing if __APPLE__
dpkg-deb: cosmetic correction to usage text
ping: try SOCK_DGRAM if no root privileges
build system: fix make gconfig
David A. Wheeler (2):
sed: accept -E as a synonym for -r
sed: accept s///i as a synonym for s///I ("ignore case")
Denys Vlasenko:
Call setlocale("") , not "C", if we want to set the default one
Commonalize typical [b,]k,m suffix struct
Make smart_ulltoa return pointer to end (allows for code shrink in callers)
Makefile.custom: make "make release" delete .gitignore files too
Move create_icmp[6]_socket to its only user, and simplify it
Use unsigned printf/scanf conversion where more appropriate
adduser: check whether run with no USERNAME. Closes 6728
awk: fix a bug in argc counting in recent change
awk: fix length(array)
awk: use "long long" as integer type, not "int"
bootchartd: warn if .config looks wrong
build system: use od -b instead of od -t x1
bunzip2: fix off-by-one check
chpst: fix a bug where -U USER was using wrong USER (one from -u USER)
cryptpw: do not segfault on EOF. Closes 6350
dd: do not reuse local variables for unrelated values
dd: fail if swab is attempted on odd-sized block
dd: support conv=swab
decompress_unlzma: 10% speedup in "small" code
decompress_unlzma: make "fast" version a bit smaller
devfsd: remove static variable
ether-wake: shorten help text, reduce packet buffer size
find: support -HLP
find: get rid of nested function (it's a gcc-ism)
fix assorted unused code and wrong format specs found by cppcheck (bug 6716)
fix build error with musl libc due to if_slip.h
fix error message on failure to open /dev/null; fix zcat's help text
flashcp: pad output to BUFSIZE. Hopefully closes 5882
foo*sum: report I/O errors, don't merely exit with 1
head,tail: use common suffix struct. simplify help text
head: support -n -NUM and -c -NUM
hexdump: don't unconditionally limit the usable address range
hexdump: need to use xstrtoull for off_t
hostid: do not output sign-extended host id. Closes 6056
httpd: don't allow tabs and multiple spaces in request string
httpd: make sure pfd[TO_CGI].revents is cleared before poll()
httpd: treat errors from stdin correctly.
hush: fix build failure if FEATURE_EDITING=y && !HUSH_INTERACTIVE
hush: fix for "while false && true; do echo BUG; break; done". Closes 6170
hush: source builtin should override $N only if it has args
hush: typo fixes in comments
ifplugd: make -k send SIGINT, not SIGQUIT
ifupdown: support "source" stanza in /etc/network/interfaces
init: don't use fixed size buffer for command
init: remove special-case code for machines with less tham 1 MB of RAM
iplink: comment out include <net/if_packet.h>
iplink: fix build error (IFLA_VLAN_PROTOCOL defined before include)
less: support "less 1<>TTY"
libbb: introduce and use strftime_[YYYYMMDD]HHMMSS()
lineedit: \W on "/bin" should show "bin", not "/bin"
lineedit: add handling of \H in prompt
lineedit: fix multi-line PS1 handling: calculate PS1 length from last \n
lineedit: implement \T \t \A \@ prompts escapes, fix \W escape, drop \!
lineedit: improve Unicode handling (still buggy though)
lineedit: use unicode_strwidth instead of unicode_strlen
loadkmap: explain what happens with K_ALLOCATED key value
logread: don't call shmdt() before exit, kernel does it for us
logread: flush output. Closes 6710
logread: intercept all fatal signals, not just SIGINT
losetup: assorted fixes. Closes 6314
lzop: fiq -q and OPTION_DECOMPRESS mismatch
make --help return exitcode 0. Closes 5612
man: install to /usr/bin, not /sbin
md5/sha512: a better fix for strict aliasing warnings
mdev: add environment variable match
mdev: call index_in_strings on $ACTION only after we checked it for NULL
mdev: chdir back to /dev after trying to read firmware
mdev: extend debug logging output
mdev: improve $SEQ handling; improve debug logging
mkfs_minix: use get_volume_size_in_bytes instead of local version
nc: don't redirect stderr to network in -e PROG mode
nc: exit when both stdin and network are closed
nc: fix build failure ("subscripted value is neither array nor pointer")
nc: remove some dead code
nc: remove unnecessary "errno = 0"
nc: use symbolic SHUT_WR instead of literal 1
nc_bloaty: support -ll and -lk. Closes 2245
nslookup: set default DNS server again. Hopefully helps with 675
ntpd: do not invalidate datapoints after step
ntpd: drop delay outliers; run "unsync" handler if no replies for some time
ntpd: let user know if spike was detected
ntpd: make "unsync" code actually work
ntpd: promote log level 3 to production
ntpd: set G.last_script_run even if script isn't configured
ntpd: set offset to 0.0 in "unsync" event
ntpd: speed up resyncing if our clock is seriously off
ping[6]: accept and ignore -n. Code shrink
ps: fix sscanf format specifier (%l); make uptime unsigned
ps: seconds_since_boot: uint64_t -> ulong
pstree: fix theoretically unsafe code
rfkill: use new-style config/kbuild/applet
rpm: make -ql display more compatible; improve help text
rpm: stop using statics; move main() to the end of the source file
rpm: unmap rpm file before working with next one
rpm: use "create+rename" method of replacing existing files
run-parts: stop providing incompatible short options
sed: document where we are more liberal then GNU
sed: fix "sed clusternewline" testcase
sed: fix matching of newlines by $
sed: fix memory leak in 'r FILE' command
sed: open input files sequentially to avoid EMFILE
sed: remove now-redundant backslash-newline handling
stty: disable CIBAUD leak check - it is not necessary on Linux
sulogin: use common password-checking routine
tail: track file size only in -f mode
tar: add a testcase for previous commit
tar: fix exitcode check for MMU-spawned unpacking helpers
tar: prevent empty file to be treated as valid tarball
testsuite: fix false positives for du
touch: add conditional support for -h
ubi_tools: add forgotten argv++
ubi_tools: enhance -s option to allow size multiplier to match mtd-utils
ubi_tools: extend supported volume size to 64 bits; shrink code
udhcpc6: fix port numbers used if !FEATURE_UDHCP_PORT
udhcpc: allow zero server-id. Closes 6614
udhcpc: fix a problem with binary-encoded options #2
udhcpd: add -I LOCAL_ADDR option
unicode: check $LC_ALL to detect Unicode mode, not only $LANG
unicode: check $LC_CTYPE too to detect Unicode mode
unpackers: by users' request, print compression percentage if -v and DESKTOP
unzip: increase PEEK_FROM_END from 16k to 64k
unzip: survive lack of CDF on non-streaming zip files
vasprintf: do not use xmalloc, it will deadlock on OOM
vasprintf: return -1 on strdup failure
vi: make regexp search case-insensitive if ":set ignorecase" is active
volume_id_internal.h: drop unoptimized byteswap routines
wall: access FILE under real user's credentials
wget: do not abort if "_" is encountered in a HTTP header
zcat: fix "zcat FILE" trying to do detection twice
zcat: if seamless uncompressors are defined, autodetect file's format
Flemming Madsen:
ash,hush: history builtin
Guilherme Maciel Ferreira (2):
traceroute: free some memory allocated by xzalloc()
wget: if FEATURE_CLEAN_UP, free(ptr_to_globals)
James Hogan:
grep: fix grep -x to not set REG_NOSUB
Jeremy Kerr:
udhcp: add PXELINUX config file option (code 209) definition
Jody Bruchon:
fdisk: fix GPT size math errors
Johannes Stezenbach:
udhcpc: make DHCP packets to have at least 300 DHCP bytes
John Spencer:
man: find posix man pages
Jonathan Liu:
sulogin: allow system maintenance login if root password is empty
Kang Kai:
testsuite/du/du-k-works: fix false positive
Kuleshov Aleksey:
arp: fix -H/-t handling.
Lasse Collin (11):
xz: omit explicit \0 from HEADER_MAGIC
xz: update README
xz: avoid "NOTE:" in xz.h
xz: add a comment about using uint32_t as vli_type
xz: make bcj_x86_test_msbyte() an inline function
xz: remove an empty line from xz_dec_lzma2.c
xz: add C++ support to xz.h
xz: fix decoding of LZMA2 streams having no uncompressed data.
xz: fix incorrect XZ_BUF_ERROR
xz: mention xzminidec.c in README
xz: support concatenated .xz streams
Lauri Kasanen (2):
wget: add support for connect timeout
wget: user-friendly fallback to http
Leonid Lisovskiy:
xz: fix put_unaligned_{l,b}e32
Malek Degachi:
fstrim: New applet
Mandeep Singh Baines:
losetup: fix util-linux compatibility
Michael Tokarev (4):
fix bashisms in testsuite/
expand: use printable_string instead of hard-coding implementation
do not fail build if MAXSYMLINKS isn't defined
hostname: do not use gethostbyname() for "hostname -s"
Mike Frysinger (12):
udhcpc: support resolv.conf symlinks
udhcpc: tweak math shell style with the metric var
bbunzip: ignore the -q flag with the decompressors
bbunzip: fix order of flags vs bit defines
archival: note implicit dependencies between lzop & bbunzip
udhcpc: use readlink rather than realpath
platform: use KERNEL_VERSION to simplify uClibc version checking
readlink: uClibc supports automatic allocation too now
readlink: note that our -f is really -e
pstree: stop truncating thread names
md5/sha512: fix strict aliasing warnings
trylink: only prefix libs with -l
Nicolas Dichtel:
networking: fix potential overflow in ife_print6()
Nikolaus Voss:
mdev: use $DEVNAME in uevent sysfs file for device node name
Oliver Metz:
volume_id: fix ntfs attribute search
Patrick McHardy:
ip link: add VLAN support
Paul B. Henson (2):
ubimkvol: add -m option to create volume of maximum size
ubi_tools: fix typo in strcpy
Paulius Zaleckas:
init: don't srop unterminated processes' entries during inittab reload
Peter Korsgaard (3):
run-parts: add --exit-on-error | -e support
run-parts: fix unicode creep in --help
ar: read_num(): fix reading fields using the entire width
Rich Felker:
*: change execl sentinels from NULL to (char*)0
Ron Yorston:
vi: fix adjustment of buffer on partial file read
Ryan Mallon (2):
libbb: Add xsetegid(), xseteuid(), xopen_as_uid_gid() functions
wall,crontab: use xopen_as_uid_gid()
SASAKI Suguru:
tar: fix tar -T to add entries in the exact order as the input list
Shawn J. Goff:
lineedit: initialize delptr
Stefan Hellermann (2):
ash: move code to allow setting $HOME in /etc/profile
ash: read $HOME/.profile instead of $(pwd)/.profile
Sven-Göran Bergh (5):
volume_id: Adopt to new kbuild style.
volume_id: Adopt to new config style.
volume_id: nilfs config description.
volume_id: add f2fs detection
awk: optionally support -e AWK_PROG
Thomas De Schampheleire (2):
nameif: fix use-after-free in ENABLE_FEATURE_CLEAN_UP code
lsof: correct check for symbolic link
Thomas Petazzoni:
libbb: use <poll.h> instead of <sys/poll.h>
Tito Ragusa (2):
ifplugd: use a larger netlink buffer
swapon: support "pri=NNN" in fstab
Uros Vampl:
killall5: return 2 if no processes got killed
Yuan-Hsiang Lee:
init: fix illegal memory access when max message length is reached
- 29 June 2013 -- BusyBox 1.21.1 (stable)
BusyBox 1.21.1.
(git,
patches,
how to add a patch)
Bug fix release. 1.21.1 has fixes for
ntfs detection (big-endian fix),
xz decompression of concatenated streams,
mdev acquired a [ENV=regex;] extension instead of undocumented subsystem match hack
it used to have prior to 1.21.x.
- 21 January 2013 -- BusyBox 1.21.0 (unstable)
BusyBox 1.21.0.
(git,
patches,
how to add a patch)
Sizes of busybox-1.20.2 and busybox-1.21.0 (with equivalent config, static uclibc build):
text data bss dec hex filename
895377 497 7584 903458 dc922 busybox-1.20.2
897317 497 7584 905398 dd0b6 busybox-1.21.0
Changes since previous release:
Alexey Froloff (1):
udhcpc: gracefully handle packets with CHECKSUM_PARTIAL
Andreas Oberritter (2):
ifupdown: improve compatibility with Debian
get_linux_version_code: don't fail on Linux version strings like "3.0-foo"
Anthony G. Basile (2):
build system: fix build failure when only gunzip is selected
CONFIG_PID_FILE_PATH: new configuration option for pidfile paths
Aurelien Jarno (1):
*: declare strings with ALIGN1, as appropriate
Baruch Siach (3):
nanddump: use the right operator of logic AND
nanddump: skip bad blocks when instructed to do so
nanddump: invert the meaning of the -o parameter to match upstream
Bernhard Reutner-Fischer (1):
mount: fix -o user=foo mishandling, fix unc= generation, add prefixpath=
Bernhard Walle (1):
build system: fix build of kconfig on Darwin
Boris Reisig (1):
tar: support -J, --xz explicit compression option
Bradley M. Kuhn (1):
Simplify copyright/license notice that appears in the binary
Christoph Lohmann (1):
mdev: tell kernel that we didn't find the firmware
Cliff Frey (1):
lineedit: fix Alt-D when cursor==0
Dennis Groenen (1):
lineedit: histfile can get emptied when CONFIG_FEATURE_EDITING_SAVE_ON_EXIT=y
Denys Vlasenko:
build system: stop .eh_frame generation
build system: fix build failure when compressed help is selected, but bz2 compression is not
scripts/kconfig/mconf: work on systems w/o SIGWINCH
platform.h: disable ALIGNn macros for s390[x]
adduser: install to /usr, not /, like all other similar tools
ash: fix "read -s" + ^C. Closes 5504
ash: fix a bug in >${varexp} handling. Closes 5282
ash: implement export -n
ash: revert wrong "fix" for an apparent memory leak. Closes 5822
awk: fix FS assignment behavior. Closes 5108
awk: make -F STR interpret escape sequences. Closes 5126
brctl: fix build failure by s/strtotimeval/bb_strtotimeval/ (android has strtotimeval)
busybox: tweak help text and copyright year
decompress_uncompress: comment out debug printout on corrupted data
decompress_uncompress: move 'code' variable into loop - sole user
dhcpd: write lease file on exit
dpkg: fix creation of .list files (were empty since b768aeb). Closes 5324
du: document incompatibility with standard tool
examples/mdev_fat.conf: small addition
find: if DESKTOP=y, support -wholename (synonym for -path)
find: make -mindepth N -xdev correctly stop on mountpoints
ftpd: fix MDTM's month value. Closes 5336
ftpd: free allocated string on error path
getty: fix for NOCTTY killing us with SIGHUP
grep: fix grep -Fw not respecting the -w option. Closes 5792
ifconfig: do not accept "ifconfig eth0 up 1.2.3.4/17" (ip with mask). Closes 5786
libbb: correctness/size tweaks in signal-related helpers
lineedit: in !EDITING config, return -1 on fgets error
login: increase login name size limit from 32 to 64
lpr: don't send 0-byte print jobs (compat)
man: fix handling of gzipped manpages
mdev: add support for $DEVNAME and /dev/mdev.log debug aid
mdev: fix mode of dir1 in =dir1/dir2/file rule
mdev: remove undocumented subsystem/devname matching hack
mdev: when found, print major,minor into mdev.log
modprobe_small: make rmmod to NOT remove dependencies. Closes 5162
mount: do not pass "comment=ANYTHING" option to kernel. Closes 5240
mount: fix the wrongly stored fs creation time
mount: set up RO loop device if mount -o ro. Closes 4784
mount: support strictatime option. Closes 5240
ntpd: on time step, kill all outstanding replies from other peers
sed: fix handling of s/// which has empty matches
sed: fix zero chars match/replace
sha3: make size/speed optimization decision configurable
syslogd: do not segfault on parse error when using default config. Closes 5762
telnet: convert CR -> CR LF, not CR -> CR NUL when sending data to server
telnet: convert Enter -> CR LF in line mode too
tftpd: fix -u USER to work with chroot. Closes 5348
top/ps: argv0:"gdm-session-worker [pam/gdm-password]" == comm:"gdm-session-wor"
top: do not touch stdin if -b
top: fix "last CPU" parsing
top: implement scrolling up/down (_very_ useful)
udhcp[cd]: fix binding to network aliases. Closes 5432, 5438
udhcpc: make -O <numeric_opt> work. Closes 5402
udhcpc[6]: show select timeout in log
unzip: make options parsing more robust on getopt w/o gnu extensions
vi: do not set autoindent by default
vi: nuke FEATURE_VI_OPTIMIZE_CURSOR
vi: save/restore screen upon invocation
volume_id/ext: detect ext4 too
wget: correctly handle failure to -c (continue)
wget: make -c _not_ truncate the file
wget: reorder fread and poll: poll only if fread returns EAGAIN. Closes 5426
wget: try reading after poll timeout - stdio may have buffered data. Closes 5426
Eric Martin (1):
acpid: add missing lid switch definition
Etienne Le Sueur (1):
tar: fix 256-bit encoded number decoding
Felix Fietkau (1):
udhcpc[6]: allow discover_retries == 0 (infinite)
Jon Tollefson (1):
ash: fix a memory leak
Joshua Kahlenberg (1):
sysctl: implement -q
Lauri Hintsala (1):
powertop: fix error message
Lauri Kasanen (1):
sha3sum: new applet
Linus Walleij (2):
fbset: respect rgba configuration lines in fb.modes
fbsplash: support non-RGB565 pixels in 16-bit mode
Manuel Zerpies (1):
flashcp: remove unused variable opts
Martin Santesson (1):
mount: add unc option to CIFS mount (needed for Linux 3.4+)
Matt Reimer (1):
nanddump: make dumping read-only partitions work
Michael Tokarev (2):
ps: use separate get_uptime() and make it work on non-linux too
*: declare strings with ALIGN1, as appropriate
Mike Frysinger (5):
udhcpc6: depend on ipv6
include sys/resource.h where needed
disable format security warnings
build system: use pkg-config to look up selinux libs
ifenslave: fix missing close paren
Mimi Li (1):
sed: allow 'w' cmd to use two address form
Natanael Copa (2):
tar: implement --no-recursion
unzip: ignore chmod errors
Nicolas Thill (1):
brctl: fix description and usage
Pascal Bellard (1):
su: do not change to home dir unless -l
Paul Marks (1):
ntpd: fix incorrect m_status field in outgoing packets. Closes 5120
Peter Korsgaard (4):
dmesg: handle multi-char log levels
klogd: handle multi-char log levels
syslogd: add option to log to Linux kernel printk buffer
syslogd: convert dummy functions to statics and get rid of IF_FEATURE_* checks
Pierre Carrier (1):
config: do not refer to HTTPS for wget
Ron Yorston (2):
sendmail: use host rather than NIS domain name for HELO
mktemp: fix mktemp -u temp.XXXXXX returning garbage when TMPDIR is set
S-G Bergh (2):
blkid: show filesystem when both label and UUID are missing, but type is known
volume_id: add exFAT detection
Simon B (4):
ln: support -T and -v
sed: support long opts and -iSFX
mkdir,rmdir: accept and ignore -v, --verbose
mv: accept but ignore -v
Sven-Göran Bergh (6):
blkid: add type display for btrfs
blkid: add support for nilfs2
blkid: add type display for hfsplus
volume_id: display hfs[+] 128-bit UUID properly
volume_id: uuid_format small code shrink
volume_id: add squashfs detection
Tanguy Pruvot (2):
testsuite: some more awk tests related to conditions
modinfo: match more standard module fields and fix version field
Tias Guns (5):
inetd: fix build failure in Android
android: fix 'stat', ifdef S_TYPEIS* in coreutiles/stat.c
platform.h: Android tweaks: ioprio defines, BB_ADDITIONAL_PATH
android: some sensible defconfig changes
libbb: add missing_syscalls.c: for now, only Android syscalls
Timo Teräs (1):
fbsplash: fix regression from e4fa7b7
Tito Ragusa (1):
adduser: make it accept "adduser USER GROUP" form
Vladimir Dronnikov (1):
wget: add dummy --no-cache
Yao Zhao (1):
testsuite: make mkfs.minix test not fail spuriously on big endian
walter harms (1):
refactor correct_password.c to avoid one if
- 2 July 2012 -- BusyBox 1.20.2 (stable)
BusyBox 1.20.2.
(git,
patches,
how to add a patch)
Bug fix release. 1.20.2 has fixes for
ash (fix for variable expansion in redirection),
ifup/down (fix for "pre-up" and "pre-down" handling),
man (fixes for compressed man pages handling),
mke2fs (important fix! due to misplaced s_mkfs_time field, ext4 driver couldn't mount our images),
ps (fix for getting uptime on non-Linux platforms),
tar (fix base-256 decoding).
- Old News
Click here to read older news
|