![]() |
干练的羽毛球 · 中石化胜利石油工程有限公司2024年度校园招聘简章· 2 月前 · |
![]() |
果断的闹钟 · “if” statement using ...· 4 月前 · |
![]() |
气势凌人的跑步机 · Python之把字符串写入文件然后从文件中读 ...· 5 月前 · |
![]() |
乐观的春卷 · 关于前往中国旅客疫情防控要求的通知· 6 月前 · |
![]() |
急躁的伤疤 · 阎百兴-中国科学院大学-UCAS· 7 月前 · |
Bug fix release. 1.36.1 has fixes for line editing, detection of hardware sha1/sha256 support, unzip (do not create suid/sgid files unless -K), shell (printf and sleep with no args, handing of SIGINT in sleep),
BusyBox 1.36.0 . ( git , patches , how to add a patch )
Note: udhcpc6 now uses a different helper script by default (/usr/share/udhcpc/default6.script).
Sizes of busybox-1.35.0 and busybox-1.36.0 (with equivalent config, static uclibc build):
text data bss dec hex filename 1044070 908 14328 1059306 1029ea busybox-1.35.0 1046317 908 14328 1061553 1032b1 busybox-1.36.0Changes since previous release:
Aaro Koskinen: devmem: add 128-bit width Bernhard Reutner-Fischer (3): kbuild: fix building sha256 kbuild: Prefer -Oz over -Os seedrng: manually inline seed_rng Brandon Maier: xxd: fix typo in trivial usage Dario Binacchi (2): fbset: abort on not handled options fbset: support setting pixel clock rate David Leonard: tsort: new applet Denys Vlasenko: Makefile.flags: add resolv to LDLIBS for linux compilers too (not only gnu ones) build system: detect if build host has no bzip2 scripts/echo.c: fix NUL handling in "abc\0 def" libbb/loop: fix compile failure (name collision) libbb/loop: optionally use ioctl(LOOP_CONFIGURE) to set up loopdevs libbb/loop: restore the correct return value of set_loop() libbb/sha1: add config-selectable fully unrolled version, closes 14391 libbb/sha1: add config-selectable partially unrolled version libbb/sha1: assembly versions for x86 libbb/sha1: optional x86 hardware accelerated hashing libbb/sha256: optional x86 hardware accelerated hashing libbb: change xstrndup, xmemdup to take size_t as size parameter libbb: factor out fflush_stdout_and_exit(EXIT_SUCCESS) libbb: fflush_stdout_and_exit(0) still exits with _error_ (not 0!) if fflush fails libbb: fix fallout from nth_string() robustification, closes 14726 libbb: introduce and use chdir_or_warn() libbb: invert the meaning of SETUP_ENV_NO_CHDIR -> SETUP_ENV_CHDIR tls: P256: remove NOP macro sp_256_norm_8() tls: include signature_algorithms extension in client hello message examples/var_service/dhcp_if: make helper scripts more talkative testsuite/mount.tests: accomodate umount failure seen on 5.18.0 testsuite/sha1sum.tests: fix false positive failure shell: add comments about SIGINT-related problems shell: fix compile failures in some configs ash,hush: fix handling of SIGINT while waiting for interactive input ash: ^C with SIG_INGed SIGINT should not exit the shell ash: do not truncate failed tilde expansion on unknown user names ash: fix ifs cleanup on error paths ash: fix unsafe use of mempcpy ash: fix use-after-free in pattern substitution code awk: input numbers are never octal or hex (only program consts can be) bc: hopefully fix bug 14956 (use-after-free) cut: build fix for FEATURE_CUT_REGEX ifplugd: split -a into -a and -A, latter disables upping in iface creation init: do not set HOME ls: implement ls -sh (human-readable allocated blocks) md5/shaXsum: use FEATURE_COPYBUF_KB to size the buffer instead of fixed 4k mv: fix error in !VERBOSE configs nmeter: %[md] %[mw] - dirty file-backed pages, writeback pages powertop: fix cpuid asm: ebx saving/restoring is properly done by gcc sed: correctly handle 'w FILE' commands writing to the same file sed: fix double-free in FEATURE_CLEAN_UP=y configs sed: fix handling of escaped delimiters in s/// replacement sed: fix handling of escaped delimiters in s/// search pattern, closes 14541 seedrng: chdir to the SEED_DIRECTORY - avoid concat_path_file's seedrng: do not hash in a constant string, it's not adding entropy seedrng: do not hash lengths, they are very predictable seedrng: do not try to continue on unexpected errors (just exit) seedrng: explain why we need locking and fsync'ing seedrng: include file/dir names in error messages seedrng: re-add fsync after unlink, and explain its purpose seedrng: reduce MAX_SEED_LEN from 512 to 256 seedrng: remove redundant assignment seedrng: remove unnecessary zero-filling of local variables seedrng: restore error check on fsync seedrng: simplify read_new_seed() to not have error return seedrng: use more xfuncs where appropriate shaNNNsum: accept one-space "HASH FILENAME" format for -c, closes 14866 sort: fix -k2M (wasn't skipping leading whitespace) sort: fix -s -r interaction: 'stable' order is not affected by -r sort: fix sort -s -u, closes 14871 sort: support -h sulogin: increase util-linux compatibility sulogin: start _login_ shell only with -p sulogin: util-linux does not say "normal startup" on Ctrl-D taskset: fix printf format mismatch in !FEATURE_TASKSET_FANCY config. closes 14616 top: fix display of large PID/PPID top: improve large PID display in memory ('s') mode tree: make it unicode-aware tree: unicode tweak (use normal space char, 0x20) udhcpc6: add missed big-endian conversions udhcpc6: align FF02__1_2[] udhcpc6: downgrade "opening listen socket" log level to 2 udhcpc6: fix binding to network aliases udhcpc6: fix sending of renew messages udhcpc6: use a different default config script xargs: implement -o, closes 15146 xxd -r: handle offsets xxd -r: without -p, stop at more than one whitespace, closes 14786 xxd: fix use of non-initialized data xxd: use bb_simple_perror_msg... where appropriate Emanuele Giacomelli: XXXsum: handle binary sums with " " in the path Grob Grobmann: vi: add 'ZQ' quitting command Henrique Rodrigues: ping: fix typo in --help text Jason A. Donenfeld (10): seedrng: import SeedRNG utility for kernel RNG seed files seedrng: use libbb functions seedrng: hoist bb_strtoul out of min/max seedrng: remove some global variables seedrng: further reduce size seedrng: use predefined strings where possible seedrng: avoid needless runtime strlen() call seedrng: compress format strings with %s arguments seedrng: code-golf even smaller seedrng: prune header includes Khem Raj: apply const trick to ptr_to_globals Louis Sautier: pkill: add -e to display the name and PID of the process being killed Ludwig Nussel: libbb: mark stack in assembly files read-only Natanael Copa (2): awk: fix use after free (CVE-2022-30065) more: accept and ignore -e Paul Fox: crond: implement support for setting PATH in crontab files Peter Kaestle: unzip -l: add missed big-endian conversions date and time Roger Knecht: tree: new applet Ron Yorston (8): libbb: restore special handling of nomsg errors libbb: make '--help' handling more consistent lineedit: get PWD from ash ash,hush: use HOME for tab completion and prompts vi: fix regression in autoindent handling vi: handle autoindent in 'cc' command vi: improved handling of backspace in replace mode vi: fix backspace over tab in commands Samuel Thibault: Fix non-Linux builds Shawn Landden: ash: optional sleep builtin Sören Tempel (3): ed: add support for -s command-line option as mandated by POSIX ash: don't read past end of var in subvareval for bash substitutions ash: fix use-after-free in bash pattern substitution Timo Teräs: mkfs.vfat: fix volume label to be padded with space Vincent Stehlé: fdisk: recognize EBBR protective partitions Walter Lozano: Add support for long options to cmp Xiaoming Ni (4): loop: fix a race when a free loop device is snatched loop: refactor: extract subfunction get_next_free_loop() loop: simplify code of LOOP_SET_FD failure loop: refactor: extract subfunction set_loopdev_params() how to add a patch)
Sizes of busybox-1.34.0 and busybox-1.35.0 (with equivalent config, static uclibc build):
text data bss dec hex filename 1042344 908 14336 1057588 102334 busybox-1.34.0 1044070 908 14328 1059306 1029ea busybox-1.35.0Changes since previous release:
Aaro Koskinen: find: implement -samefile Alin Mr: ash.c: speedup ${s:} substring (no quotes) Andrej Valek: mktemp: add --tmpdir option Ariadne Conill: cpio: add support for --ignore-devno like GNU cpio cpio: add support for --renumber-inodes like GNU cpio Bernhard Reutner-Fischer: chrt: silence analyzer warning libarchive: remove duplicate forward declaration Daniel Thau: awk: fix printf %% Denys Vlasenko: config system: move some options closer to relevalnt tool subdirectories libbb.h: fix logic selecting incorrect BB_STRTOOFF for !LFS configs libbb/lineedit: do not escape %^=+}]:, escape ~? in tab completion libbb: clarify what bb_mode_string() generates libbb: code shrink bb_parse_mode libbb: code shrink in des encryption, in setup_salt() libbb: code shrink in main() and scripted_main() libbb: eliminate a static data array in bb_mode_string() libbb: make bb_lookup_port() abort on bad port names libbb: reuse "bad port" error message string shell/ash_test/run-all: unset locale/language variables shell: do not read user database for every prompt - only for those which need it shell: enable more tests which are passing now shell: fix arithmentic evaluation of "++7" and such (it is + + 7, i.e. 7) shell: fix parsing of $(( (v)++ + NUM )) shell: fix script's comm field if ENABLE_FEATURE_PREFER_APPLETS=y shell: use more compact SHELL_ASH / HUSH config defines. no code changes ash: LINENO starts from 0 in -c SCRIPT mode ash: eval: Check nflag in evaltree instead of cmdloop ash: eval: Do not cache value of eflag in evaltree ash: eval: Prevent recursive PS4 expansion ash: fix LINENO in functions ash: fix compile breakage in !ENABLE_ASH_ALIAS config ash: introduce bash-like $FUNCNAME ash: parser: Fix alias expansion after heredoc or newlines ash: parser: Fix handling of empty aliases ash: parser: Get rid of PEOA ash: parser: Save and restore heredoclist in expandstr ash: speed up ${x//\*/|} too, make it independent of ASH_OPTIMIZE_FOR_SIZE ash: support testsuite for !FEATURE_SUID_CONFIG_QUIET configs ash: use pgetc_eatbnl() in more places, take 3 hush: fix set -n to act immediately, not just after run_list() hush: fix var_LINENO3.tests failure hush: speed up ${x//\*/|} too awk: code shrink: avoid duplicate NUL checks and strlen() awk: never return NULL from awk_printf() basename: implement -a and -s SUFFIX blkdiscard: accept -f (force) as no-op bzip: make ftab[] and crc32table[] member arrays of EState, do not allocate chat: hopefully fix infinite spinning on input EOF chmod: correctly report changed modes df: "support" -H as an alias of -h dhcprelay: change two more variables to unsigned find: code shrink -{m,a,c}{time,min} httpd: do not send Last-Modified / ETag / Content-Length for error pages httpd: fix config deps httpd: if range is not specified, correctly fall back to read/write loop httpd: fix compile failure if !FEATURE_HTTPD_RANGES mount: "mount -o rw ...." should not fall back to RO mount mount: with -w, do not fall back to read-only mounts ps: fix -o pid=PID,args interpreting entire "PID,args" as header resize: use tcgetattr(TCSAFLUSH) instead of TCSANOW, closes 13811 shuf: in -i RANGE, accept numbers up to width of pointers shuf: make -i 99999999990-100000000000 work even on 32 bits shuf: with -i LOW-HIGH, do not allow any argv's tar,smemcap: commonalyze checksumming code for tar header tar: prevent malicious archives with enormous long name sizes OOMing the machine tls: "server cert is not RSA" is a fatal error tls: replace "26-bit" P256 code with 32-bit one tls: x25519: code shrink by factoring out common code udhcp: fix build breakage on MIPS udhcpc6: fix udhcp_find_option to actually find DHCP6 options udhcpd: check config file for bad IP ranges (start > end) uudecode: special-case "/dev/stdout", closes 14241 xxd: fix -p -r, closes 13881 Dominique Martinet: sed: do not ignore 'g' modifier when match starts with ^ Ildar Shaimordanov: wget: allow end-users to customize Content-Type for --post-data and --post-file Ismael Luceno: less: Ignore -X config: find: Fix mtime/mmin description find: Unify time comparisons find: implement -amin, -atime, -cmin, and -ctime Martin Kaiser: Makefile.flags: use all cflags for crypt and rt checks Matthew Slowe: timeout: add support for "timeout -k KILL_SECS" Nicholas Niro: ip: added support for setting netns on devices Peter Korsgaard: libarchive/get_header_ar.c: fix extraction of archives from binutils in deterministic mode Roberto A. Foglietta: ash: add bash-like ERR trap and set -E Ron Yorston: libbb: better coreutils compatibility for realpath libbb: code shrink parse_datestr libbb: ensure mode_string is NUL terminated ash: fix ignoreeof option ash: let ignoreeof only affect interactive shells ash: regressions in process substitution ash: stopped jobs should only prevent exit from interactive shell awk: fix read beyond end of buffer cal: implement -m date,touch: allow timezone offsets in dates getopt: code shrink printf: allow 0 as a flag and allow multiple flags rev: correct output for long input lines shuf: speed-up when limited output is requested tar,smemcap: silence compiler warning vi: changes to handling of -c and EXINIT vi: code shrink print_literal() vi: don't right shift empty lines vi: further changes to colon addresses vi: searches in colon commands should wrap vi: support ~/.exrc wget: implement --post-file Sergey Ponomarev: httpd,telnetd: make default port configurable Sören Tempel: ed: align output of read/write commands with POSIX-1.2008 ed: add support for -p command-line option as mandated by POSIX ed: fix current line number for file passed via the command-line ed: align output of read command with POSIX.1-2008 Walter Lozano: cmp: add support for -n YU Jincheng: *: generalize "const trick" Make const ptr assign as function call in clangBug fix release. 1.34.1 has build fix for MIPS, fixes for ash (regression in process substitution), awk (printf fix), chat (fix infinite spinning on input EOF).
BusyBox 1.34.0. (git, patches, how to add a patch)
Please note that awk had a number of changes. Report any breakage to the mailing list.
Sizes of busybox-1.33.0 and busybox-1.34.0 (with equivalent config, static uclibc build):
text data bss dec hex filename 1032724 908 14344 1047976 ffda8 busybox-1.33.0 1042344 908 14336 1057588 102334 busybox-1.34.0Changes since previous release:
Alex Samorukov: Do not add -lresolv on non-Linux systems Fix bb_setpgrp weapper on the FreeBSD Fix httpd compilation on the FreeBSD Fix klogd applet compilation on the FreeBSD Fix missing "crypt.h" compilation error on the FreeBSD Fix mknod compilation on the FreeBSD Fix ntpd compilcation on the FreeBSD Fix ping build on the FreeBSD Fix traceroute applet on the FreeBSD Fix mail compilation on the FreeBSD Fix for the FEATURE_UTMP on the FreeBSD Alexander Sack: httpd: cgi-bin support for DELETE, PUT, OPTIONS etc methods Alison Winters: vi: restore 0 offset after :set noXXX command vi: allow writing to another file if this one is readonly Andre Kalb: udhcpc: Add support to change default interface name Bernd Kuhls: update_passwd: fix context variable Chris Renshaw: gcc-version.sh: fix for "invalid number" message during Android NDK builds Denys Vlasenko: Makefile.flags: add a test for -lrt availability gcc-version.sh: Cygwin fix trylink: do not drop libs from CONFIG_EXTRA_LDLIBS platform.h: fix for Bionic >= 21 not having wait3() libbb.h: inline byteswaps libbb/procps: smaller global data for username/groupname cache libbb: correct the name of is_TERM_dumb() libbb: do not check closedir() in remove_file() libbb: fix '--help' handling in FEATURE_SH_NOFORK=y libbb: introduce and use xgettimeofday(), do not truncate 64-bit time_t in shells decompress_gunzip: simplify ERR_RET bit clearing e2fsprogs/*: remove ioctl calling obfuscation move iterate_on_dir() from e2fsprogs to libbb tls: implement secp256r1 elliptic curve (aka P256) tls: "server did not provide EC key" is fatal tls: get rid of constant-time add/sub operations tls: make constant basepoint9[32] array 8-byte aligned tls: make x25519 key generation code more similar to P256 tls: reduce register pressure in i386 assembly (helps Android to compile) ascii: new applet crc32: new applet shells: do not allow bare "read" in non-bash compat configs ash: fix ${unset_var/pattern/repl} ash: make a strdup copy of $HISTFILE for line editing ash: match bash behavior for ${empty_var/*/repl} ash: parser: Fix VSLENGTH parsing with trailing garbage ash: placate -Werror=format-security ash: save Ron's patch from oblivion ash: speed up ${v//pattern/repl} if !ASH_OPTIMIZE_FOR_SIZE hush: beautify ^D handling to match ash / bash hush: fix bkslash+newline handling and number validation in ${NN} and ${#NN} hush: fix handling of "cmd && &" hush: fix handling of \^C and "^C" hush: implement $'str' bashism hush: make LINENO selectable without BASH-COMPAT hush: optimize ${var/pattern/repl} for trivial patterns awk: after preinc/dec, only allow variable, field ref, array ref, or another preinc/dec awk: allow empty functions with no arguments, disallow function redefinitions awk: disallow break/continue outside of loops awk: do not special-case "delete" awk: do not use a copy of g_progname for node->l.new_progname awk: document which hashes are used at what state (parse/execute) awk: enforce simple builtins' argument number awk: evaluate all, even superfluous function args awk: fix beavior of "exit" without parameter awk: fix corner case in awk_printf awk: fix detection of VAR=VAL arguments awk: fix parsing of expressions such as "v (a)" awk: fix printf "%-10c", 0 awk: fix printf buffer overflow awk: fix use-after-free in "$BIGNUM1 $BIGGERNUM2" concat op awk: free unused parsing structures after parse is done awk: g_buf[] does not need a separate allocation awk: get rid of "move name one char back" trick in next_token() awk: in parsing, remove superfluous NEWLINE check; optimize builtin arg evaluation awk: make ltclass ("last token class") local to next_token() awk: more efficient -f FILE awk: move locals deeper into scopes where they are used, no logic changes awk: move match() code out-of-line awk: rand() could return 1.0, fix this - should be in [0,1) awk: remove custom pool allocator for temporary awk variables awk: remove redundant check awk: replace incorrect use of union in undefined function check (no code changes) awk: restore strdup elision optimization in assignment awk: rewrite "print" logic a bit to make it clearer awk: rollback_token() + chain_group() == chain_until_rbrace() awk: shuffle globals for smaller offsets awk: simplify parsing of function declaration awk: simplify tests for operation class awk: support %F %a %A in printf awk: tighten parsing - disallow extra semicolons awk: tighten rules in action parsing awk: unbreak "cmd" | getline awk: unbreak "printf('%c') can output NUL" testcase awk: undo TI_PRINT, it introduced a bug (print with any redirect acting as printf) awk: use static tmpvars in main and exit awk: use smaller regmatch_t arrays, they had 2 elements for no apparent reason awk: use static tmpvars instead of nvalloc(1)ed ones awk: when parsing TC_FUNCTION token, eat its opening '(' awk: when parsing length(), simplify eating of LPAREN base32/64: accept -i "skip bad chars" option (currently in effect unconditionally) bc,dc: make BC_LINE_LENGTH/DC_LINE_LENGTH more compatible with GNU bc,dc: fix length(0) and length(0.000nnn) result bc: ^C on input line exits (unlike ^C during calculations, which does not) bc: code shrink: combine init() and copy() where we can bc: fix for mul overflow in scale calculation in a^b blockdev: support --get/setra chattr: fix "chattr =ae -R FILE" chattr: if IOC_FSGETXATTR fails, do not try IOC_FSSETXATTR chattr,lsattr: share stat error message chattr,lsattr: do not open e.g. device files unless asked directly; do not follow links chattr,lsattr: support -p lsattr: support more ext2 flags cksum: fix handling of read errors cp: implement -n cp: implement -t DIR cpio: fix "cpio -d -p A/B/C" df: POSIXLY_CORRECT sets _default_ scale, -m/-h overrides it df: support -t TYPE dnsd: check that we don't read past packet du: support -b "apparent size" echo: fix !ENABLE_FEATURE_FANCY_ECHO build echo: special case "echo --help": it should not show help text env: implement -0 free: implement -h hexdump: fix error message httpd: avoid extra stat() calls for "GET /dirname/" case httpd: avoid one stat() call for "GET /dirname" case httpd: if no request was given at all, close the socket without generating error page httpd: move proxy check before URL duplication and request type check httpd: no need to strcpy() when we only need to copy one byte httpd: support HEAD requests even in !CGI config inetd: deinline machtime() - gcc gets it wrong ionice: implement -t login: implement LOGIN_TIMEOUT lsof: print fd# too man: fix segfault in "man 1" modprobe: when reading modules.builtin, use basenames of files from it mv: implement -t and -T nslookup: do not print "No answer" for NODATA replies, closes 13006 ntpd: decrease INITIAL_SAMPLES from 4 to 3 ntpd: increase loglevel to 3 for "poll:32s sockets:0 interval:64s" message ntpd: log responses to clients at log level 3 ntpd: remove unused USING_INITIAL_FREQ_ESTIMATION code ntpd: tweak comments ntpd: without INITIAL_FREQ_ESTIMATION code, state variable is not needed too nuke: default to N pmap: fix column width, closes 13431 resume: write offset in /sys/power/resume_offset runsv: code shrink: use single handler function for SIGTERM and SIGCHLD runsv: robustify signal handling - SIGTERM to child between vfork and exec could mess things up shred: implement -s SIZE shred: with -u, unlink file even if it is zero length shuf: simplify check that we have at least one FILE start-stop-daemon: explain -x + -a test svlogd: if processor's stdin can not be opened, do not try ad infinitum switch_root: code shrink - use iterate_on_dir() tail: do not lose the tail of old file if new file (-F) is detected tail: fix typo in variable name tar: simplify addition of --exclude=GLOB to the expansion of -X EXCLFILE taskset: disallow "taskset -p 0" taskset: fix for PID longer than 12 chars taskset: implement -a taskset: use iterate_on_dir() tc: fix for parsing of "dev IFACE" and printing of "class list" tcp/udpsvd: robustify SIGCHLD handling telnetd: give inetd.conf example in --help timeout,top,watch,ping: parse NN.N fractional duration in locales with other separators touch: fix -am touch: fix SEGV if !ENABLE_FEATURE_TOUCH_SUSV3 touch: make FEATURE_TOUCH_NODEREF unconditional touch: switch to using utimensat() and futimens() touch: unbreak -h traceroute: fix compile error due to FreeBSD compat traceroute: fix option parsing udhcp: convert log1s() macro to function udhcp: shrink arpping() udhcpc: clarify bcast/unicast sends in logs, include server ID udhcpc: do not use inet_addr() to parse -r REQ_IP, it's deprecated udhcpc: get rid of client_data.fqdn field udhcpc: ignore zero-length DHCP options udhcpc: improve logs - show offer as it is received udhcpc: include client-id option in DECLINEs, even if it's a custom -x 61:HEX option udhcpc: remove deprecated -H/-h HOSTNAME options (9 years) udhcpc: rename server_addr to server_id, fix id comparison if it's not specified udhcpc: send client-id option in DHCPDECLINE udhcpc[6]: close listening socket more eagerly (e.g. across script runs) udhcpc[6]: do not pass xid around, keep it in client_data.xid udhcpc[6]: fold perform_renew() into its only caller udhcpc[6]: on SIGUSR1, do not go from rebind to renew state udhcpc[6]: remove superfluous "created raw socket" log message udhcpc[6]: untangle "timeout" and "remaining lease"; reduce min lease to 30 seconds udhcpc[6]: when renewing, send 1 packet (not 3), on failure go back to BOUND uniq: support -z unlzma: fix a case where we could read before beginning of buffer unzip: add -t unzip: fix for .zip archives with >4GB file vi: allow regular expressions in ':s' commands vi: move undo_queue_state in globals to other byte-sized members xxd: do not try reading from closed stdin when non-existent file is given xxd: implement -i "C style output" xxd: implement -o DISPLAYOFFSET Eicke Herbertz: shell: also do word splitting when -d DELIM is used Harald van Dijk: tar: exclude files before updating hardlink info list Jeremy Lin: wget: allow HTTP 307/308 redirects Ján Sáreník: run-parts: permit dot later in file name Khem Raj: gen_build_files: Use C locale when calling sed on globbed files Mario Abajo: login: permit change expired password wit PAM Martin Kaiser: Makefile.flags: fix the OS detection for libresolv Maxim Storchak: httpd: fix offset for sendfile Natanael Copa: echo: do not assume that free() leaves errno unmodified lineedit: fix tab completion with equal sign Paul Spooren: nslookup: mention QUERY_TYPE SRV build system: use SOURCE_DATE_EPOCH for timestamp if available Rafał Miłecki: dd: support iflag=count_bytes Rasmus Villemoes: watchdog: make open-write-close-open functionality a config knob Rob Landley: cut: add toybox-compatible options -O OUTSEP, -D, -F LIST Ron Yorston: bloat-o-meter: avoid double counting build system: avoid build failure during bisection libbb: code shrink and speed up find_applet_by_name() libbb: code shrink and speed up index_in_strings() libbb: code shrink fgets_str libbb: introduce and use fputs_stdout lineedit: support empty PATH entries in tab completion ash: add process substitution in bash-compatibility mode awk: allow printf('%c') to output NUL, closes 13486 cp,mv: fix -t DIR option cp: fix build failure with long options disabled cryptpw: typo in usage message diff: code shrink nl: ensure '-b n' option displays file content uniq: really support -z vi: ':r' should insert text after current line vi: 'G'/'M' commands move to first visible character vi: 'ZZ' should warn if there are more files to edit vi: :wq/:x should warn if there are more files to edit vi: add expandtab option vi: adjust conditional compilation of modifying_cmds vi: allow 'gg' to specify a range vi: allow 'r' command to be aborted, repeated vi: allow backward search to specify line address vi: allow ctrl-D to reduce indentation vi: allow delimiter in ':s' to be escaped vi: allow line addresses to have an offset vi: allow motion count for change/delete/yank/shift vi: allow repetition count for paragraph motion vi: allow the '.' command to have a repetition count vi: changes to line addresses for colon commands vi: changes to option handling vi: code shrink colon line addresses vi: code shrink motion by paragraph vi: code shrink search commands vi: correct autoindent for 'O' command vi: correctly record deleted characters vi: cursor positioning after whole-line 'y' vi: deal with invalid movements in shift commands vi: detect and warn about invalid line addresses vi: don't move cursor when yanking whole lines vi: don't overwrite existing file vi: expand '%' and '#' in colon commands vi: fix backward search with GNU regex vi: fix buffer overrun; code shrink vi: fix empty line range regression vi: fix range selection by forward character motion vi: fix regex search compilation error vi: fix word operations across line boundaries vi: improve handling of anchored searches vi: improve motion by paragraph vi: improve operations involving paragraph movement vi: improvements to ':read' command vi: improvements to character search within line vi: improvements to range selection vi: improvements to reporting of changes vi: improvements to undo vi: initialise tabstop once not for each file vi: issue a warning on failure to find a character vi: keep autoindent if line isn't empty vi: make autoindent respect expandtab setting vi: make buffer handling more vi-like vi: make context marks more like vi vi: make cursor positioning more vi compatible vi: make de-indentation with ctrl-D more like vim vi: make put commands more like vi vi: make the substitute command more like vi vi: more fixes to range selection by word vi: position cursor on last column of tab vi: preserve state when switching file vi: reject change command when motion fails vi: remember cursor column during vertical motion vi: remove autoindent from otherwise empty lines vi: reset command count when specifying '0' range vi: saving unnamed file in readonly mode vi: stored search pattern applies to ':s' vi: support more commands for range selection vi: up/down motion beyond end of file should fail vi: use basic regular expressions for search Russell Senior: udhcpc: ignore zero-length DHCP options S Harris: cpio: fix sscanf on unterminated buffer vi: fix read outside of text buffer during insert Samuel Sapalski: decompress_gunzip: Fix DoS if gzip is corrupt Sergey Ponomarev: wget: new option FEATURE_WGET_FTP to enable/disable FTP httpd_post_upload.cgi: use mktemp to avoid $RANDOM Seth David Schoen: udhcpd: don't hardcode treating .0 and .255 specially Sören Tempel: ls: don't output any colors with TERM=dumb Xabier Oneca: touch: add SUSv3 options -a and -m touch: fix atime set from reference file touch: remove unneeded GETOPT32 defines touch: prevent usage of -r and -t at onceBug fix release. 1.33.1 has fixes for httpd (sendfile now works), ash (HISTFILE corruption, unset variable pattern expansion), passwd (SELinux fix), traceroute (option parsing fix), gunzip (fix for corrupted archive).
Bug fix release. 1.32.1 fixes a case where in ash, "wait" never finishes.
BusyBox 1.33.0. (git, patches, how to add a patch)
Sizes of busybox-1.32.0 and busybox-1.33.0 (with equivalent config, static uclibc build):
text data bss dec hex filename 1020219 481 7460 1028160 fb040 busybox-1.32.0 1021980 481 7456 1029917 fb71d busybox-1.33.0Changes since previous release:
Andy Shevchenko modprobe: add support for modprobe.blacklist=module1,module2,... Audun-Marius Gangstø: lineedit: fix unicode characters in prompt Christian Eggers: shell: fix "read -d ''" behavior ip: add support for "noprefixroute" option ip address: add support for "valid_lft" and "preferred_lft" options chrt: support for musl C library Cristian Ionescu-Idbohrn: fix warning: label 'out1' defined but not used Denys Vlasenko: avoid using strtok - eliminates use of hidden global variable use write_str() functions where appropriate fixes for Hurd build move ADJTIME_PATH define to header files examples: remove /sbin/ prefixes, system should be configured with $PATH to find utilities build system: combat gcc zealotry in data alignment build system: make -static-libgcc selectable in config libbb: add and use infrastructure for fixed page size optimization libbb: bb_do_delay(3) -> pause_after_failed_login(), and stop looping there libbb: change decode_base32/64 API to return the end of _dst_, not _src_ libbb: create and use mmap() helpers libbb: do not compile selinux_or_die() if !SELINUX libbb: do not open-code __errno_location() call libbb: exec_login_shell() - new function libbb: extend "errno pointer" trick to other than __GLIBC__ libbb: fold common64_hash() into its only user libbb: in @SECONDS date format, use 64-bit time if libc allows libbb: introduce and use msleep() libbb: introduce and use sleep1() libbb: introduce and use xsettimeofday() libbb: make msleep() result in only one syscall instead of looping libbb: make pw_encrypt() die if supplied salt is bad (e.g. emply) libbb: rename run_shell() to exec_shell() libbb: shrink last_char_is(), no longer allow NULL string argument libbb: shrink recursive_action() by reducing memory pressure libbb: smaller and faster decode_base64() libbb: trim base32/64 tables unicode: fix handling of short 1-4 char tables unicode: relax array alignment for tables lineedit: disable completion and fancy prompts if no shells are selected lineedit: remove ->path_lookup if ash is not configured lineedit: use strncmp instead of is_prefixed_with (we know the length) networking: support ftp PASV responses not ending with ')' ash: clear ungetc counter on syntax errors ash: jobs: Fix infinite loop in waitproc ash: jobs: Fix waitcmd busy loop ash: make interactive ^C break out of PS2 mode ash: reset SIGHUP earlier: allows HUP traps in .profile, closes 13371 hush: NOMMU fix for hush-psubst/tick6.tests hush: deal with FIXMEs for corner cases in parameter expansion hush: do not print killing signal name in `cmd_which_dies_on_signal` hush: fix -c SCRIPT handling hush: fix PS1 prompth in !EDITING config hush: fix ^C in INTERACTIVE, !EDITING config hush: fix this case: echo "SCRIPT" | hush hush: if !EDITING, do not regenerate prompt for every input char hush: if login shell, also source ~/.profile hush: output bash-compat killing signal names hush: remove one redundant getpid() on every startup shell: better support of [[ ]] bashism shell: for signal exitcode, use 128 | sig, not 128 + sig - MIPS has signal 128 shell: remove FAST_FUNC from a static function shell: a fix for systems without RLIMIT_NICE awk: FS regex matches only non-empty separators (gawk compat) awk: add a test that $NF is empty awk: fix dodgy multi-char separators splitting logic base32: new applet base32/64: decode in-place base32/64: implement -w COL bc: do not allocate line editing state until needed date: for -uR and -uIh, timezone still has to be shown as +hhmm, not as abbreviation date: remove non-standard special-casing of date '+%f' date: support -Ins, more compatible timezone display in -I dd: support for O_DIRECT i/o factor: 30% faster trial division (better sieve) factor: detect squares grep: for -L, exitcode 0 means files *without* matches were found, closes 13151 hexdump: fix duplicate block comparison hwclock: fix musl breakage of settimeofday(tz) login: log to syslog every bad password, not only 3rd mail: commonalize send_r_n() mail: deobfuscate launch_helper() mail: launch_helper(): flush stdio before vfork, set G.helper_pid only in parent mail: move "opts" from globals man: implement SECTION parameters mdev: clear LOGMODE_STDIO only directly before daemonizing mount: add -o nostrictatime and -o [no]lazytime mount: implement -o nosymfollow, remove bogus -o union mount: do not guess bind mounts as NFS mount: do not guess mount as NFS if "hostname:" contains slashes mount: fix a race when a free loop device is snatched under us by another mount mount: fix incorrect "success" exitcode if loop device setup fails nsenter: stop option parsing on 1st non-option ntpd: allow non-root to run it (e.g. with -w option) ntpd: fix refid reported in server mode, closes 13056 ntpd: fix the case where two replies received at once and first one causes a step ping: fix -wN to not think that one packet is always lost tar: fix fallout of last_char_is(NULL) no longer being allowed traceroute: avoid collecting target local address if !VERBOSE traceroute: commonalize verbose printing traceroute: don't set SO_DONTROUTE on recv socket, it only affects send traceroute: even with -v, don't show other ping processes replies traceroute: fix traceroute6 -I (icmp mode) traceroute: make "ipv4 or ipv6?" cheaper to find out traceroute: set IP_PKTINFO to see correct local IP of received pkt (fixes -v display) traceroute: simpler hexdump() traceroute: untangle main loop udhcp: remove struct packing attribute, eliminates gcc-9.x warning udhcpc6: code shrink - sending functions do not need ifindex parameter uevent: increase netlink buffer sizes uevent: make it survive ENOBUFS uudecode: fix possible signed char bug volume_id: improve struct layout (smaller offesets, smaller insns on x86) wget: do not ftruncate if -O- is used, closes 13351 xargs: fix -I SUBSTR behaviour xxd: fix printing of trailing spaces xxd: compat: move hexdump -R functionality to xxd -r Eddie James: hwclock: fix settimeofday for glibc v2.31+ Gray Wolf: crontab: fix -e with editors saving using renaming strategy Jan Klötzke: libbb: set netlink socket revbuf size before binding mdev: increase netlink buffer sizes mdev: move daemon setup to dedicated function mdev: re-initialize if uevent messages were lost mdev: add syslog logging mode mdev: add -v to increase log verbosity Joachim Nilsson: login: update UTMP before forking syslogd: delay PID file creation until syslogd is ready archival: avoid std namespace for local includes Lauri Kasanen: mount: surround syslog.h with the config check Martin Lewis: udhcp: add option scanner udhcpc: fix a TODO in fill_envp using option scanner procps: code shrink compare_string_array: code shrink domain_codec: optimize dname_dec and convert_dname udhcpc: add support for long options Michal Kazior: udhcp: bind to device even for ucast packets Norbert Lange: nc_bloaty: support udp broadcast ports dpkg: prevent important directories from being removed dhcpd: remove hardcoded pidfile path acpid: only display -p if supported in usage util-linux: support erofs filesystem Ron Yorston: build system: drop PLATFORM_LINUX lineedit: omit directories when tab-completing from PATH lineedit: match local directories when searching PATH Rui Salvaterra: ip rule: add support for fwmark/fwmask for policy routing Scott Court: wget: fix openssl options for cert verification Sergey Ponomarev: httpd_indexcgi.c: minimize style CSS httpd_indexcgi.c: use CSS for odd/even rows httpd: update to HTTP/1.1 httpd: don't add Date header to response httpd: don't add Last-Modified header to response httpd: support caching via ETag header httpd: make Deny/Allow by IP config support optional Steffen Trumtrar: mount: support the sizelimit and offset option for loop devices Xabier Oneca: httpd: code shrink mkdtemp: proper error detection on mktemp how to add a patch)
Sizes of busybox-1.31.1 and busybox-1.32.0 (with equivalent config, static uclibc build):
text data bss dec hex filename 1011750 483 7468 1019701 f8f35 busybox-1.31.1 1015340 482 7460 1023282 f9d32 busybox-1.32.0Changes since previous release:
Aaro Koskinen: find: implement -empty Alistair Francis (4): date: Use 64 prefix syscall if we have to time: Use 64 prefix syscall if we have to runsv: Use 64 prefix syscall if we have to Remove stime() function calls Biswapriyo Nath: Makefile.flags: restrict Wno-constant-logical-operand and Wno-string-plus-int options for clang Brian Foley (3): dc: execute shouldn't pop if stack head is not a string dc: Fix segfault when executing strings generated using asciify dc: Parse error & fix out of bounds read in xc_program_printString Daniel Edgecumbe (3): gzip: default level with ENABLE_FEATURE_GZIP_LEVELS should be 6 gzip: set compression flags correctly as per standard gzip: set default compression level to 6 when CONFIG_FEATURE_GZIP_LEVELS=n David Demelier: wget: increase redirections limit Denys Vlasenko: build system: suppress some clang-9 warnings examples/udhcp/simple.script: up interface on deconfig event libbb: remove syscall wrappers around clock_gettime, closes 12091 libbb: clang/llvm 9 fix - do not eliminate a store to a fake "const" libbb: deal with "declaration of 'link' shadows a global declaration" warning libbb: include <crypt.h> only if necessary ash,hush: add comment about masked SIGCHLD, handle SIG_IGNed SIGHUP as in bash ash,hush: testcase for "exit" without arguments in a trap ash: Expand here-documents in the current shell environment ash: Return without arguments in a trap should use status outside traps ash: [BUILTIN] Exit without arguments in a trap should use status outside traps ash: builtin: Mark more regular built-ins ash: eval: Add assignment built-in support again ash: eval: Always set localvar_stop ash: eval: Fail immediately with redirections errors for simple command ash: eval: Only restore exit status on exit/return ash: eval: Reap zombies after built-in commands and functions ash: eval: Replace with listsetvar with mklocal/setvareq ash: eval: Use the correct expansion mode for fd redirection ash: exec: Do not allocate stack string in padvance ash: exec: Never rehash regular built-ins ash: exec: Stricter pathopt parsing ash: expand: Do not reprocess data when expanding words ash: expand: Ensure result is escaped in cvtnum ash: expand: Fix multiple issues with EXP_DISCARD in evalvar ash: expand: Fix skipping of command substitution when trimming in evalvar ash: expand: Fix trailing newlines processing in backquote expanding ash: expand: Merge syntax/quotes in memtodest with flags ash: expand: Use HOME in tilde expansion when it is empty ash: fix BASE###nn bashism for bases 36..64 ash: fix BASE###nn bashism to accept letter 'digits' for bases > 9 ash: fix set -o to not show "nameless" options ash: jobs - Do not block when waiting on SIGCHLD ash: jobs: Only clear gotsigchld when waiting for everything ash: jobs: Replace some uses of fmtstr with stpcpy/stpncpy ash: main: Only set savestatus in exitcmd ash: main: Print \n upon EOF (CTRL-D) when run interactively ash: memalloc: Add growstackto helper ash: memalloc: Avoid looping in growstackto ash: mkinit: Split reset into exitreset and reset ash: output: Fix fmtstr return value ash: parser: Do not push token back before parseheredoc ash: parser: Fix incorrect eating of backslash newlines ash: parser: Fix old-style command substitution here-document crash ash: parser: Only accept single-digit parameter expansion outside of braces ash: parser: Save/restore here-documents in command substitution ash: rename some function parameters to match dash ash: rename stack_nputstr() back to stnputs() to match dash ash: shell: Fix clang warnings about "string plus integer" ash: use pgetc_eatbnl() in more places, take 2 hush: fix "set -o INVALID" affecting -e flag state hush: fix negative_arith.tests: glob-protect dash in "$((arith))" hush: fix preprocessor directives indentation hush: implement "return NUM in trap sets $? after trap" hush: make "exit" in trap use pre-trap exitcode hush: make "exit" in trap use pre-trap exitcode - fix for nested trap hush: restore redirected stdin awk: disallow "str"++, closes bug 12981 awk: fix more "length" cases, closes 12486 bc: fix comparison bug, closes 12336 brctl: fold show_bridge_ports into its caller dpkg-deb: work around bogus error message when working with XZ compressed packages fdisk: add HFS / HFS+ partition type fdisk: avoid overflow in "mega/gigabytes" calculation, code shrink gunzip: code shrink by using int-, not short-sized struct member gunzip: fix incorrect decoding of "fixed" inflate blocks gzip: -d with zcat enabled but gunzip disabled was misbehaving init: if tcgetattr() fails, don't even try to tcsetattr() init: improve handling of signals racing with each other nmeter: add %T (zero-based timestamp) format nmeter: do not clamp down %Nc to minimum of 10 (think nmeter "%`nproc`c") nologin: make it possible to build it as single applet ntpd: abort if argvs are (unexpectedly) given ntpd: abs(tmx.offset) was truncating a "long" typed value ntpd: add comment about mode6, no code changes ntpd: commonalize message strings ntpd: decrease MIN_FREQHOLD by 2, increase "penalty" for largish offset x2 pidof: support "pidof /path/to/binary" case readlink,realpath: fix a case with a symplink, closes 11021 stat: print nanosecond times, fix printing of empty lines sysctl: do report EACCES errors on write tar: change -a from meaning "lzma" to mean "autodetect by extension" taskset: add support for taking/printing CPU list (-c option) taskset: implement stride argument taskset: tighten the check for stride values tc: array address is never NULL tee: do not intercept SIGPIPE telnet: add disabled code to emit EC and IP telnet: fix uninitialized variable bug tftp: on download, open local file only when first bit of data arrived tftpd: show requested file name in open error message top: do not use previous collected data wheh "h" toggles threads display udhcp: comment out unused domain compression code udhcpc6: add ELAPSED_TIME option to outgoing packets udhcpc6: s/iphdr/ip6_hdr/ udhcpd: mangle hostnames starting with dash ("-option") whois: limit total length of response to 32+2 kb Dimitri John Ledkov: wget: implement TLS verification with ENABLE_FEATURE_WGET_OPENSSL Eivind Versvik: udhcpc6: support stateless DHCPv6 Gray Wolf: grep: Fix -f FILE when FILE is empty and -x provided James Byrne (2): libbb: reduce the overhead of single parameter bb_error_msg() calls config: PID_FILE_PATH required for FEATURE_CROND_SPECIAL_TIMES Jean-Philippe Brucker: build system: remove KBUILD_STR() Jo-Philipp Wich (2): nslookup: handle replies without RRs nslookup: implement support for SRV records Kaarle Ritvanen: ln: --no-target-directory implies --no-dereference Kang-Che Sung: bc: Add 'U' suffix in UINT_MAX preprocessor check Lauri Kasanen: unzip: -d should create the dir Liu, Shuang (ADITG/ESM): chgrp: correct the usage for non-desktop chgrp calls Lukas Rusak: free: include SReclaimable in cached value Mark Edgar: unexpand: correct behavior for --first-only --tabs=4 Martin Lewis (8): libbb: Converted safe_read to safe_write format replace: count_strstr - Handle an edge case where sub is empty xstrndup: Use strndup instead of implementing it brctl: add support for showmacs command brctl: add support for showstp command dhcpc.c: Added support for relay server parameter dhcpc: code shrink in good_hostname dhcpc: refactor xmalloc_optname_optval to shrink binary size Michal Kazior: udhcpc: fix segmentation fault on empty bin opt Peter Korsgaard: syslogd: add config option to include milliseconds in timestamps Rolf Eike Beer: examples/udhcp/simple.script: print the filename actually changed Ron Yorston (13): mim: new applet: run scripts from a specification file ash,hush: allow builtins to be tab-completed, closes 7532 ash,hush: drop pointer check before calls to show_history ash: fix build failure when command built-in is disabled ash: only catch unexpected exceptions in PS1 expansion ash: improve expandstr() ash: return exit status of nofork applets (again) ash: move TRACE statement in evalcommand() httpd: permit non-default home directory with NOMMU enabled httpd: allow '-h' to work when daemonized with NOMMU enabled vi: fixes to string search in colon commands, closes 10321 xargs: fix handling of quoted arguments, closes 11441 xargs: restore correct behaviour of -n option Stefan Agner: examples/udhcp/simple.script: fix IPv6 support when using udhcpc Sören Tempel (2): grep: add proper support for pattern_list deluser: check if specified home is a directory before removing it Tomas Paukrt: route: fix output of "route -n -A inet6" Tomi Leppanen: grep: add -R Uwe Glaeser: udhcpc6: use correct multicast MAC how to add a patch)
Sizes of busybox-1.30.1 and busybox-1.31.0 (with equivalent config, static uclibc build):
text data bss dec hex filename 1008478 487 7436 1016401 f8251 busybox-1.30.1 1008392 482 7428 1016302 f81ee busybox-1.31.0Changes since previous release:
Aaro Koskinen: sysctl: fix compatibility with procps sysctl Aitor Esteve Alvarado: start-stop-daemon: change priority before dropping privileges Alexander Vickberg (3): httpd: when sending gzipped content use content-length header httpd: pass authorization header to CGI if not Basic start-stop-daemon: fix -x is not required for -K Andrey Mazo: udhcpc: don't exit after backgrounding on -n -b Antoine Girard-Vallée: udhcp: add 100 and 101 dhcp options for ipv4 Ari Sundholm (2): grep: fix -x -v with certain pattern orders grep: short-circuit -v to bail out on first match Bernhard Reutner-Fischer (5): checkstack.pl: fix arch autodetection checkstack: pull from upstream checkstack.pl: tweak bfin re ip link: Fix vlan proto, closes 8261 and 11638 ipaddress: remove unused variable no_link Brian Foley (4): awk: Guard pointer chasing when parsing ternary expressions. awk: Syntax error if delete isn't given an arg. awk: Fix overly permissive func arg list parsing sed: Fix backslash parsing for 'w' command arg Chen Qi: dc.tests: fix two test case to also depend on DC_BIG Danijel Tasov: telnet: provide feedback after successful connect Denys Vlasenko: make_single_applets.sh: fix for BSS trick examples/var_service: use "exec sleep 5" instead of "{ sleep 5; exit; }" dhcp service example: cater for servers not giving subnet and/or router service examples: do not respawn supplicant too often service examples: if iface do not exist, retry upping it service examples: ifplugd -M to prevents frequent respawning libarchive: treat one "FIXME: avoid seek" libbb: move netlink socket binding to the utility function libbb: find_mount_point() too eager to stat mounted devices lineedit: fix SEGV in fdisk, hexedit, ed, closes 11661 ash,hush: implement optional "BASE#nnnn" numeric literals ash,hush: move all definitions of strto_arith_t() together ash,hush: add tests for backslashes in export VAR=VAL ash,hush: bash compat for ulimit: -w => -x, -p => -u ash,hush: bash compat for ulimit: reorder to match ash,hush: fix ulimit to be more bash-compat, closes 11791 ash,hush: show 'c' in $- if run in "sh -c CMD" ash,hush: ulimit: add -i RLIMIT_SIGPENDING, -q RLIMIT_MSGQUEUE ash: add "wait -n" bashism ash: allocate line editing structure only if needed hush: add "wait -n" bashism hush: allocate line edit buffer only for interactive shell hush: fix "export PS1=xyz" and "local PS1=xyz" messing up prompt hush: fix "wait -n" to wait for a _job_, not a _process_ hush: fix quoted "${notexist-}" expansion to not disappear hush: handle LINENO the same way as RANDOM: variable is "ephemeral" hush: implement $-, set default PATH if it is not set on startup hush: remove code to track PS1/2 values dynamically - it's too much work hush: remove test for "echo ${-}" errorring out - now it works hush: set default PS1/2 only if we are interactive hush: show 's' in $- adduser: fix a bug of getpwnam() overwriting shell name, closes 8586 awk: fix testsuite bc: disallow invalid syntax like "{ print 1 print 2 }" bc: fix "...; return}" to work, disallow "return ()" bc: implement pass-by-reference code from upstream bc: in xc_read_line(), check ^C on NUL input bytes too bc: make error line number also size_t, like everything else bc: remove "empty expression" check/message, parsing fails in these cases anyway bc: remove extra div/0 test, remove test for string function parameter bc: shorten "limits" output bc: speed up string printing, fix print "" bc: support ibase up to 36 (GNU compat) bc: support void functions (GNU compat) bc: upstream fixes dc: fix returning of string dc: fix '?' dc: make 4 % 0 emit error messgaes and set result to 0 brctl: convert all commands to work via /sys brctl: simplify str_to_jiffies() bunzip2: the correct condition is "n < groupCount", not "n <= groupCount". Closes 11896 chrt: do not segfault if policy number is unknown chrt: fix for SCHED_RESET_ON_FORK bit dd: fix handling of short result of full_write(), closes 11711 expand,unexpand: drop broken test, add FIXME comment expand: add commented-out code to handle NULs find: handle leading -- argument fsync,sync: merge into one source module httpd: add js to built in MIME types list httpd: add missing {} httpd: check denied IPs even before reading 1st query line httpd: do disable header reading timeout even if proxying httpd: do not decode URL and headers if proxying - send all verbatim httpd: do not percent-decode URI if proxying httpd: do not set alarm() timeout if we read cached header httpd: extract query string only after proxying check httpd: fix handling of EOF in get_line() httpd: fix proxy headers passing - full_write() instead of write() httpd: if remote IP is denied, send FORBIDDEN reply earlier httpd: make rmt_ip variable local httpd: put all headers into environment as HTTP_UPPERCASED_HEADER=val httpd: require "HTTP/xyz" at the end of request line httpd: use full size of iobuf[] when piping CGI data ifupdown: close memory leak ip link: fix mismatched enums in vlan_parse_opt(), closes 11631 ip: use rtnl_send_check() on flush commands, closes 6962 login: close PAM session on errors as well, not only on success login: remove extra IF(), no code changes losetup: implement -c lpd: avoid SEGVing on immediate EOF from peer ls: fix SEGV when --color is used and ENABLE_LS_COLOR=n man: add "/usr/share/man" as another default MANPATH, fix col override mount,losetup: use /dev/loop-control is it exists nslookup: return exitcode 1 on resolution errors ntpd: do not create pid file if not backgrounded ntpd: increase SLEW_THRESHOLD from 0.125 to 0.5 passwd: do not set 0 as date of last password change, closes 11951 pmap: make 32-bit version work better on 64-bit kernels ps: ensure fields are separated by at least one space, closes 11826 sed: fix /regex/,+N match triggering only once, closes 11871 sleep: support "inf" start-stop-daemon: create pidfile before parent exits, closes 8596 start-stop-daemon: do try to close fds > 2 start-stop-daemon: fix "both -x and -a" case: -a does override argv[0] sysctl: allow setting empty values sysctl: avoid stat() on every item if in -w mode sysctl: do slash/dot conversions only on name, not value part sysctl: on EIO ("sysctl net.ipv6.conf.all.stable_secret") set nonzero exitcode telnet: speed up processing of network input telnetd: better AYT handling telnetd: fix bad interaction with vhangup() from login tftp: optional tftp-hpa compat tls: add comment about dl.fedoraproject.org needing secp256r1 ECC curve tls: pstm code shrink ts: new applet udhcp: downgrade "got raw socket fd" message to log3, make log2 default max udhcp: get rid of last global data udhcp: get rid of static data signal_pipe udhcp: rename client_config to client_data, server_config to server_data udhcpc6: add a few comments, no code changes. udhcpc6: make it enabled in defconfig udhcpc: when decoding DHCP_SUBNET, ensure it is 4 bytes long udhcpd: code shrink - do not fetch requested IP twice udhcpd: fix printing of static leases udhcpd: support per-client hostnames in static leases vi: code shrink, proper printf formatting for strlen() vi: fix ^Z not always working as intended vi: install SIGINT handler _after_ restart setjmp is initialized vi: rearrange functions, no logic changes vi: rename save_argc -> cmdline_filecnt vi: restore capability to remember insertion cmds for "." vi: revert change in how "end of file list" is detected - fixes 'q' in bare "vi" vi: use vsnprintf to format status line watch: support fractional -n SEC wget: detect when the length of received file is less than advertised wget: remove empty if/endif preprocessor directive pair xargs: mention -E STR in --help Einar Jón: passwd: initialize pointers correctly Jack O'Sullivan: losetup: Add partition scanning option James Byrne: Optionally re-introduce bb_info_msg() Jan Klötzke (3): mdev: move action processing into separate functions mdev: use option parser helper mdev: add support to run as daemon John L. Hammond: ln: correct 'ln -T' usage message Kaarle Ritvanen: ip: print dadfailed flag Khem Raj: networking: cc is not a register Mark Marshall: capability: fix string comparison in cap_name_to_number Martijn Dekker: ls: make -i compatible with coreutils: don't follow symlink by default Martin Lewis (5): wget: add -o flag wget: notify on download begin and end wget: don't notify on download begin and end if quiet telnetd: Added support for AYT IAC command. udhcpc6: Fixed aliasing compilation error Nicolas Hüppelshäuser: scripts/echo.c: resolve implicit declaration of function 'dup2' Nikolaus Voss (2): i2ctransfer: new applet i2c_tools.c: i2ctransfer Rolf Eike Beer: examples/udhcp/simple.script: fix resolv.conf update if it is a dangling symlink Ron Yorston (18): libbb: mark scripted_main() as externally visible ash: eval: avoid leaking memory associated with redirections. Closes 7748 ash: distinguish 'wait -n' from other bashisms ash: an unset dynamic variable should not be dynamic ash: add bash-compatible EPOCH variables ash: prevent error in backquotes in PS1 from exiting shell ash: catch error in arithmetic expansion in PS1 hush: add bash-compatible EPOCH variables du: don't count duplicate arguments. Closes 5288 man: don't skip default path which appears in config file stat: reduce storage for human-readable filesystem names vi: fix faulty undo after autoinsert vi: fix replacement of single character with CR vi: further fixes to undo after autoindent vi: allow manual screen update if SIGWINCH isn't supported vi: avoid build failure in non-default case vi: fix changes to word at end of line. Closes 11796 vi: enable 'dG' command. Closes 11801 Rostislav Skudnov (2): chcon: Fix typo in ACTION_RECURSE dd: add 'oflag=append' Stefan Sørensen: ip: Fix ip -o link Thomas De Schampheleire: top: provide cmdline argument '-H' to enable thread scanning by default Thomas Frauendorfer: Fix off by one error in FAT16 <=> FAT32 detection Vicente Jimenez Aguilar: httpd: add svg to built in MIME types list how to add a patch)
Sizes of busybox-1.29.3 and busybox-1.30.0 (with equivalent config, static uclibc build):
text data bss dec hex filename 941070 477 7296 948843 e7a6b busybox-1.29.3 948463 477 7296 956236 e974c busybox-1.30.0Changes since previous release:
Andre Goddard Rosa: smemcap: keep outputting by ignoring transient processes Baruch Siach: install.sh: don't clobber dangling symlinks Bernhard Reutner-Fischer: brctl: use a single buffer for brname and ifname printf: fix printing +-prefixed numbers Brandon Maier: ifupdown: support "source-directory" stanza Brandon P. Enochs: ntpd: add support for MD5/SHA1 message authentication Chen Qi: testsuite: check CONFIG_DESKTOP before using 'od -t' Chen Yu: remove_file: don't call rmdir if remove_file return failure Christoph Schulz: ash: reset tokpushback before prompting while parsing heredoc Denys Vlasenko: libbb: @ in "\x3@" is not a valid hex digit libbb: do not misinterpret 0x10-0x19 chars in "\xNNN" too libbb: fix potential NULL pointer use libbb: fix use-after-free in copy_file libbb: in xmalloc_fgets(), use size_t for bb_get_chunk_from_file() tls: add support for ECDHE-ECDSA-AES-128-CBC-SHA and x25519 curve tls: add support for TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 cipher tls: add support for TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 cipher tls: add support for 8 more cipher ids - all tested to work tls: in AES-CBC code, do not set key for every record - do it once tls: introduce FEATURE_TLS_SHA1 to make SHA1 code optional tls: simplify hmac_begin(), speed up prf_hmac_sha256() extend fractional duration support to "top -d N.N" and "timeout" Revert "libbb: remove unnecessary variable in xmalloc_fgets" ash: allow shell scripts to be embedded in the binary ash: eval: Restore input files in evalcommand ash: eval: Variable assignments on functions are no longer persistent ash: exec: Return 126 on most errors in shellexec ash: expand: Do not quote backslashes in unquoted parameter expansion ash: expand: Fix ghost fields with unquoted $@/$* ash: parser: Fix parsing of ${} ash: var: Set IFS to fixed value at start time ash,hush: fold shell_builtin_read() way-too-many params into a struct param ash,hush: properly handle ${v//pattern/repl} if pattern starts with / hush: expand_vars_to_list() should not assume it starts new word hush: faster/smaller code to check for presense of multiple chars in string hush: fix another case where empty "for" wasn't setting exitcode to 0 hush: fix/explain corner cases of redirection colliding with script fd hush: fix handling of heredocs not enclosed in groups where they are "declared" hush: fix handling of heredocs starting with empty lines hush: fix handling of '' in ${var:+ARG} hush: fix heredoc handling in the "cmd <<EOF ;<newline>" case hush: fix nested redirects colliding with script fds hush: fix "set -x" output prefix overlapping for v="..`cmd`.." case hush: fix word splitting in ${v:+ARG} - dollar_altvalue1 test hush: fix 'x=; echo ${x:-"$@"}' producing 'BUG in varexp2' message hush: handle backslash-newline in heredoc terminators hush: improve set -x: make "+++" indent level increase in `cmd` and eval. hush: improve ${var#...}, ${var:+...} and ${var/.../...} - handle quoting hush: in some cases, expand_on_ifs() relied of uninitialized memory hush: make "set -x" output closer to bash hush: make "set -x" output non-redirectable when fd#2 redirected hush: never glob result of dquoted "${v:+/bin/c*}" hush: set IFS to default on startup hush: speed up ${var:+ARG} for literal ARGs awk: abort if NF set to negative value cat,nl: fix handling of open errors cpio: if longopts are enabled, accept --null (synonym for -0) cp: optional --reflink support date: do not allow "month #20" and such, closes 11356 fdisk: sync up with some util-linux 2.31 behavior fdisk: use strtoul[l] instead of atoi, closes 11176 find: implement -executable and -quit free: ensure there is a least one space between numbers grep: accept and ignore --color[=anything] gzip: unbreak FEATURE_GZIP_LEVELS, closes 11171 hexdump: fix short file of zero bytes treated as dup hexedit: fixes for redraw and down movement causing SEGV on attempt to access init: hopefully fix "rebooting" in containers nbd-client: support newstyle protocol, -b, -d, -p, -N nslookup: add support for search domains, closes 11161 ntpd: default to FEATURE_NTP_AUTH=y ntpd: do not SEGV on "-p keyno:192.168.1.1", show --help instead ntpd: increase minimum G.FREQHOLD_cnt from 8 to 12 ntpd: more verbose message for "root distance too high" case ntpd: show real, unclamped delays on low-latency networks ping: implement -i SEC ping: use setitimer() instead of ualarm() printf: fix printf "%u\n" +18446744073709551614 sed: fix double-free in FEATURE_CLEAN_UP code sendmail: use on-stack buffer for AUTH PLAIN smemcap: keep outputting by ignoring transient processes, take two sort: add -V "sort version" svlogd: fix pattern matching when using timestamps tar: fix too eager autodetection, closes 11531 tar: handle the case when opened created tarball happens to have fd#0 tar: skip 'V' headers (GNU volume label), closes 11526 timeout: fix arguments to match coreutils udhcpc: check that 4-byte options are indeed 4-byte, closes 11506 udhcpc: do in fact not allow hostname components which start with dash udhcpc: ensure at least one unicast renew attempt udhcpc: give SIGUSR1-induced renew one chance of unicast renew unlzma: fix too-eager corruption check unzip: use printable_string() for printing filenames uptime: add -s support vi: fix FEATURE_VI_REGEX_SEARCH to respect LIMITED (one-line) search wget: fix fetching of https URLs without http proxy wget: print the final newline only for non-tty output wget: print "TLS certificate validation not implemented" only once on redirects whois: fix a possible out-of-bounds stack access xargs: fix exit code if command exits nonzero, closes 11381 Gavin Howard: bc: new applet dc: a much fuller version which uses bc codebase Guillermo Rodriguez: free: add 'available' memory if provided by the kernel Jeremy Kerr: udhcp: add option 211, "reboot time" Jiří Prchal: examples/udhcp/simple.script: add possibility to use modern "ip" Jon Kolb: Add chroot support to chpasswd Lauri Kasanen: ls: When -h is passed, the total should also be in human units Martin Kaiser: mdev.txt: explain the meaning of a leading "-" .gitignore: add ctags output files Peter Korsgaard: sysklogd: add timestamp option to ignore message timestamps Raffaello D. Di Napoli: sendmail: fix parsing of addresses in angle brackets sendmail: support AUTH PLAIN in addition to AUTH LOGIN Rasmus Villemoes: libbb: optionally honour libc provided SIGRTMIN/SIGRTMAX in get_signum() libbb/u_signal_names.c: don't check errno after bb_strtou Ron Yorston: Ensure build works when KBUILD_OUTPUT is set, closes 11511 Tweaks to build process for embedded scripts build system: prevent duplicate applet names docs: add embedded-scripts.txt ash: recognize embedded scripts in SH_STANDALONE mode ash: in tryexec(), ensure we don't try to run embedded scripts as applets ash: ensure variables are fully initialised when unset ash: minor fixes hush: allow hush to run embedded scripts hush: correct description for HUSH_TICK config option lineedit: autocompletion for embedded scripts libarchive: add a function to unpack embedded data Treat custom and applet scripts as applets busybox: add '--show SCRIPT' option to display scripts vi: remove duplicated code vi: correctly detect when a deletion empties the buffer Rostislav Skudnov: dd: add 'oflag=seek_bytes' Thomas De Schampheleire: head: add test case for negative -n invocation head: convert existing tests to new-style haroon maqsood: nproc: implement --all --ignore=N sagivd: chcon: fix issues with recurse and retval for retained filesBug fix release. 1.29.2 has fixes for fdisk (compat fixes, allow 2TB+ sizes), gzip (FEATURE_GZIP_LEVELS was producing badly-compressed .gz), hexedit (segfault fix).
Bug fix release. 1.29.1 has fixes for wget (http->https redirect) and sendmail (angle bracket parsing).
BusyBox 1.29.0. (git, patches, how to add a patch)
Sizes of busybox-1.28.4 and busybox-1.29.0 (with equivalent config, static uclibc build):
text data bss dec hex filename 968029 483 7008 975520 ee2a0 busybox-1.28.4 969154 475 6972 976601 ee6d9 busybox-1.29.0
Changes since previous release:
Aaro Koskinen: cp: implement -T less: implement -F Andy Shevchenko: libbb: Use return value from is_prefixed_with() Codarren Velvindron: ntpd: deprecate IPTOS_LOWDELAY in favor of IPTOS_DSCP_AF21 David Decotigny: udhcpc6: ignore invalid OPTION_IAADDR udhcpc6: carry along length of packet when parsing it Denys Vlasenko: libarchive: move bbunpack constants to bb_archive.h libbb.h: always include sys/resource.h libbb: commonalize a bit of little-endian CRC32 table generation code libbb: compile capability code only if FEATURE_SETPRIV_CAPABILITIES or RUN_INIT libbb: compile obscure() only if FEATURE_PASSWD_WEAK_CHECK=y libbb: crypt() in newer glibc requires include <crypt.h> libbb: introduce and use bb_getsockname() libbb: new function bb_die_memory_exhausted() libbb: new option FEATURE_ETC_SERVICES: if off, /etc/services reads often avoided libbb: rename bb_ask -> bb_ask_noecho, bb_ask_confirmation -> bb_ask_y_confirmation libbb: shrink wget/tftp progress indicator code libbb: switch bb_ask_noecho() to "mallocing" string return API libbb: use BUILD_BUG_ON in utoa_to_buf() networking/interface.c: get rid of global data i386: make stack size optimization selectable, and allow i486 insns (bswap) NOFORK_NOEXEC.sh: a script to find "interesting" applets size_single_applets.sh: fix a bug which mishandles e.g. "udhcpc6" name config: add size estimations for a few applets use gmtime_r() instead of gmtime() ioctl(SIOCGIFINDEX) does not require clearing of entire ifr fix install with hardlinks and a custom PREFIX. Closes 10801 examples/shutdown-1.0: an example of reboot which does not signal init examples: update /var/service/getty for Unicode ttys examples/var_service: new example: dnsmasq service cal: make it NOEXEC mv: make it NOEXEC ash: add LINENO support ash: parser: fix backquote support in here-document EOF mark ash: a bit of NOFORK code should only be active if FEATURE_SH_STANDALONE=y ash: ALWAYS_INLINE grabstackblock() ash: expand: Fix buffer overflow in expandmeta ash: expand: Fix bugs with words connected to the right of $@ ash: fix "char == CTLfoo" comparison signedness bug ash: fix double-quoted "\z" handling ash: fix var_bash5.tests - ${VAR/pattern/repl} construct ash,hush: fix "saved" redirected fds still visible in children ash,hush: handle a few more bkslash-newline cases ash: if "[[" bashism is not supported, do not handle it anywhere ash: introduce a config option to search current directory for sourced files ash: make it possible to disable "const global ptr" optimization ash: make ${v:N:M} more robust for very large M by clamping to MIN/MAX_INT ash: parser: Add syntax stack for recursive parsing ash: parser: Allow newlines within parameter substitution ash: parser: Fix parameter expansion inside inner double quotes ash: parser: Fix single-quoted patterns in here-documents ash: redir: Fix typo in noclobber code ash: use F_DUPFD_CLOEXEC and O_CLOEXEC ash: use pgetc_eatbnl() in more places hush: implement $LINENO bashism hush: add HUSH_BASH_SOURCE_CURDIR config option, to be on par with ash hush: consolidate handling of setting/unsetting of PSn, LINENO, OPTIND hush: do not drop backslash from eval 'echo ok\' hush: fix a='a\\'; echo "${a%\\\\}" hush: fix a backslash-removal bug in case hush: fix a bug where we don't properly handle f() { a=A; b=B; }; a= f hush: fix a case where EXIT trap may modify its code mid-flight hush: fix a few more corner cases with empty-expanding `cmds` hush: fix a signedness bug hush: fix build if !BASH_LINENO_VAR hush: fix corner cases with exec in empty expansions hush: fix dot builtin to not search current directory hush: fix dup_CLOEXEC() call without "avoid_fd" parameter hush: fix eval 'echo ok\' hush: fix for !ENABLE_HUSH_MODE_X configuration hush: fix for readonly vars in "ro=A ro=B cmd" case hush: fix func_return2.tests on NOMMU hush: fix handling of ^C in eval hush: fix handling of \<eof> in double-quoted strings hush: fix handling of raw ^C in scripts: "echo ^C" hush: fix handling of $_ (so far it's an ordinary variable, no special meaning) hush: fix heredoc_bkslash_newline1.tests failure hush: fix IFS handling in read hush: fix mishandling of "true | f() { echo QWE; }" hush: fix prompt in multi-line $(()) hush: fix raw ^C handling in single-quoted strings hush: fix recent breakage from parse_stream() changes hush: fix "set -e; false || x=1; echo OK" hush: fix two corner cases in ${v/pattern/repl}. Closes 10686 hush: fix "unset PS1/PS2", and put them into initial variable set hush: fix var_leaks.tests and var_preserved.tests on NOMMU hush: fix "$v" expansion in case patterns when v='[a]' hush: IFS fixes hush: if we did match "LINENO" or "OPTIND", stop further comparisons hush: implement "command" builtin hush: implement "hush -s" hush: less mind-bending set_vars_and_save_old() hush: make var nesting code independent of "local" support hush: one-word, no-globbing handling of local/export/readonly args hush: optimize parse_stream() hush: protect against self-modifying trap code hush: put "current word" structure into parsing context hush: simplify \<newline> code hush: simplify process_command_subs() hush: support "f() (cmd)" functions shell: add 6856 $IFS tests to testsuites shell: echo ${?:0} was fixed sometime ago, enable it in tests shell: handle $((NUM++...) like bash does. Closes 10706 ar: hopefully fix out-of-bounds read in get_header_ar() arping: change a few message strings to be closer to iputils arping arping: fix the case when inherited signal mask masks out ALRM arping: move packet buffer, sigset and struct ifreq to malloced "globals" ar: stop using static data awk: do not allow $(-1) awk: fix 'delete array[var--]' decrementing var twice bgip2: fewer specifically-sized [u]int32_t's locals in sendMTFValues bzip2: ~1% speedup by special-casing "store 1 bit" function bzip2: a few more locals converted to generic types bzip2: code shrink, stop using global data variable bzip2: convert some locals to unsigned's bzip2: delete write-only fave[] array bzip2: eliminate write-only local numQSorted bzip2: eliminate one parameter to mainQSort3() bzip2: expose tuning knob for faster/smaller code bzip2: fix two crashes on corrupted archives bzip2: have two separate "store bit 0" and "store bit 1" functions bzip2: make locals in mainSort() saner, convert one of them from uint16 to unsigned bzip2: move ->origPtr out of struct EState, make a few members smaller bzip2: move runningOrder[] back to stack - 256 bytes is not much bzip2: optimize zPend variable code bzip2: pass sorting params through EState* pointer bzip2: remove redundant clearing of an alredy unset bit bzip2: remove redundant loop termination check in mainSort() bzip2: reuse zPend processing code bzip2: rewrite bit of code which depends on integer overflow bzip2: runningOrder[] values are always 0..255, make it uint8 bzip2: small simplification in mainSimpleSort() bzip2: shrink makeMaps_e() bzip2: work around bad compiler optimization cat: fix cat -e and cat -v erroneously numbering 1st line chrt: use correct min/max priorities cp: fix option handling in non-longopt config dd: exit with 1 if last write was incomplete dd: fixed partial count logic df: 4TB+ support on 32 bits arch df: do "rootfs" check sooner dpkg: fix symlink creation, closes 10941 fdisk: remove "Partition N does not end on cylinder boundary" message fsck: fix incorrect handling of child exit fstrim: do not check that specified file is on a block device ftpd: add -A option to disable all authentication, closes 10921 ftpd: handle restarts past 2147483647 bytes. closes 10741 ftpd: switch to mallaced "globals" ftpgetput: add EPSV support (PASV-like thing for IPv6) ftpgetput: preparations for ESPV support, no code changes grep: fix echo "aa" | busybox grep -F -w "a" (should not match) gunzip: fix from gzip-1.3.12 for gzip file with all zero length codes gzip: "compressed_len" is unused, stop wasting code and time calculating it gzip: fix debug code. Closes 10681 gzip: flush output buffer after stored blocks, they are not 32-bit aligned gzip: optionally faster put_32bit() gzip: speed up send_bits() gzip: use unsigned type for bit fields and bit counts gzip: use wider (32-bit, not 16) bi_buf httpd: do not default to Content-type: application/octet-stream ifplugd: close signal race ifplugd service example: always run up/down script on startup inetd,mount: add comment with example of flags to build with libtirpc init: stop using static data install: fix "-D -t DIR1/DIR2/DIR3" creating only DIR1/DIR2, closes 11106 ip: fix crash in "ip neigh show" ip: fix "ip -oneline a" less,microcom,lineedit: use common routine to set raw termios less: accept -R option. Closes 10816 less: fix help text conditional for -R less: optional support of -R less: remove unnecessary message lzop: buffer several 32-bit writes when we start a new compressed block lzop: checksum reads do not need to be checksummed lzop: code shrink by using header_t matching on-disk layout lzop: don't support ancient versions < 0.94 (15 Oct 1997) lzop: remove method checks which are always true/false md5sum: use config help text similar to other "sum" tools mkfs_ext2,mkfs_vfat: fix warnings in STORE_LE on big-endian platforms mknod: better --help, much clearer code nandwrite: cope with old headers which have no MTD_FILE_MODE_RAW nc: fix the !NC_SERVER configuration nslookup: add openwrt / lede version ntpd: suppress in-kernel frequency correction in first 8+n adjtimex calls od: move address_fmt[] from data to globals. 8 less bytes in data section patch: implement --dry-run ping: don't call monotonic_us twice per sending the ping ping: implement -A "adaptive ping" poweroff: add a config option for people needing VERY early poweroff realpath,readlink -f: coreutils compat, closes 11021 renice: add comment about getpwnam/NOFORK interaction renice: use BUILD_BUG_ON() setlogcons: open /dev/ttyN for "setlogcons N", not /dev/tty1 sort: FEATURE_SORT_OPTIMIZE_MEMORY sort: fix potentially buggy use of OPT_STR sort: fix -s. Closes 10671 sort: in -s handling, return 1/-1, not 1/0 compare result start_stop_daemon: fix normally disabled OLDER_VERSION_OF_X code stat: fix a typo: s/romfs/ramfs/, closes 10876 svok: new applet (daemontools compat) tar: accomodate non-terminated tar.chksum fields as seen from github.com tar: add -k and -o to --help tar: add -o and -k to short --help too tar,unzip: postpone creation of symlinks with "suspicious" targets tc: enable this applet tcpsvd: fix fallout from opt_complementary removal tcpudp: shrink per-host rate-limiting code telnet: move winsize detection closer to I/O loop, delete non-functioning debug code tls: fix hash calculations if client cert is requested and sent tls: remove redundant floor prevention top: do unsigned rather than signed division in do_stats() top: fix "warning: unused variable new_mask" top: handle much larger VSZ values top: much faster cursor key navigation by avoiding process rescan udhcpc6: additional fix for ppp interface type udhcpc6: add support of prefix delegation udhcpc6: fix for ppp interface type udhcpc6: fix ipv6prefix[_lease] envvar value in script invocation udhcpc6: fix lease time staying very small because -d was not specified udhcpc6: set -x options in request udhcpc[6]: remove overzealous timeout clamping code udhcpc: remove code which requires server ID to be on local network udhcpd: clamp down huge auto_times to ~2M seconds, better EINTR poll handling udhcpd: fix "not dying on SIGTERM" udhcpd: use ptr_to_globals for its lone global data (g_leases) udhcp: do not setlinebuf(stdout), we don't print to stdout anymore udhcp: support string user options, closes 10946 umount: fix "umount -t FSTYPE MNTPOINT" acting as if -a is specified unlzma: do emit the error message on bad input, when we exit with 1 unlzma: fix three SEGV cases unlzop: fix --help: it has -U instead of -k unzip: do not set directory mode to 0777 wget,ftpd: shorten and reuse strings wget: add EPSV support wget: check chunk length for overflowing off_t wget: emit a message that certificate verification is not implemented wget: handle URLs with @ or hash differently wget: support for ftps:// wget: more thorough sanitization of other side's data which: fix TODO with NOFORK+malloc_failure misbehaving xargs: use bb_ask_y_confirmation_FILE() instead of homegrown copy Eli Schwartz: Update release script to generate detached signatures and checksum files Euan Harris: nsenter: Rename --network option to --net nsenter: fix parsing of -t, -S and -G options Harald van Dijk: tar: fix interaction of delayed symlink and hardlink creation Ingo van Lil: ash: fail if 'shift' operand is out of range Ivan Abrea: tls: fix to handle X.509 v1 certificates correctly Jan Luebbe: ip link: support "add TYPE vrf", improve --help iplink: implement support for selecting a master interface Kaarle Ritvanen: ifupdown: do not fail if interface disappears during ifdown Kartik Agaram: restore documentation on the build config language Mark Marshall: netstat: produce numeric-ip output for non-resolved names Martijn Dekker: ash: 'nolog' and 'debug' options cause "$-" to wreak havoc Michael Olbrich: build system: fix parallel building issue Natanael Copa: cpio: extract "unsafe" symlinks the same way tar/unzip does Nicholas Clark: dd: add 'fullblock' iflag Peter Korsgaard: fbsplash: support configurable image position Peter Lloyd: wget: fix fetching of https URLs with http proxy Povilas Kanapickas: chrt: add support for SCHED_BATCH chrt: add support for SCHED_IDLE Quentin Rameau: libbb: remove unnecessary variable in xmalloc_fgets sed: prevent overflow of length from bb_get_chunk_from_file Ron Yorston: testsuite: update busybox and bzcat tests lineedit: allow window size tracking to be disabled ssl_client: fix option parsing testsuite: allow tests to work in paths containing spaces Samuel Mendoza-Jonas: udhcp: fix use of trim() in udhcp_str2optset() udhcpc6: add DHCPv6 env helper udhcpc6: add DHCPv6 boot options udhcpc6: add PXELINUX options Sean MacLennan: make busybox more portable Shawn Landden: umount: ignore -c Stefan Agner: ifplugd: if SIOCSIFFLAGS fails with EADDRNOTAVAIL, don't die Sven-Göran Bergh: volume_id: add LittleFS detection William Pitcock: ash: add support for command_not_found_handle hook function (bashism) Yann E. MORIN: applets/install: respect noclobber for script wrappers too applets/install: accept more than one install option build system: add rule to install without cloberring existing utilities applets/install: don't try to install nothingBug fix release. 1.28.3 has fixes for ash and hush (do not leave stray open file destriptors in children), cpio (fix for symlink extraction), grep ("grep -Fw a" was matching "aa").
BusyBox 1.28.2. (git, patches, how to add a patch)
Bug fix release. 1.28.2 has fixes for tcpsvd (fixed fallout from opt_complementary removal), udhcpd (do not ignore SIGTERM), tar and unzip (reverted to previous, more permissive symlink handling), ssl_client (fixed option parsing),
BusyBox 1.28.1. (git, patches, how to add a patch)
Bug fix release. 1.28.1 has fixes for cp (fix option handling in non-longopt config, implement -T), ip (crash in "ip neigh show"), tls (fix hash calculations if client cert is requested), tar (accomodate non-terminated tar.chksum fields as seen from github.com), udhcpc6 (fix ipv6prefix[_lease] environment value in script invocation).
BusyBox 1.28.0. (git, patches, how to add a patch)
Sizes of busybox-1.27.0 and busybox-1.28.0 (with equivalent config, static uclibc build):
text data bss dec hex filename 959831 491 7536 967858 ec4b2 busybox-1.27.0 961456 487 7512 969455 ecaef busybox-1.28.0
Changes since previous release:
Avi Fishman: i2cset: fix 'i' & 's' modes (3 extra bytes were sent) Avi Halachmi: lineedit: improve multiline PS1 - redraw using last PS1 line. Closes 10381 Bartosz Golaszewski: i2c-tools: remove unneeded include i2c-tools: don't include linux/i2c-dev.h Denys Vlasenko: stop using atexit in non-debug build: saves ~260 bytes in bss with musl use %m printf specifier where appropriate standalone shell / prefer_applets: fix "exe" in comm fields change BB_EXTRA_VERSION: now it needs to contain any spaces/parenthesis regularize format of source file headers, no code changes move get_unaligned_le32() macros to platform.h sparc: needs -fPIC config: deindent all help texts config: FEDORA_COMPAT option (so far only tweaks uname) config: merge "Busybox Settings" and "Busybox Library Tuning" into one menu config: more tweaking of help texts config: reorder items in "Busybox Settings", improve help config: trim/improve item names and help texts build system: FEATURE_LIBBUSYBOX_STATIC - try to pull libc/libm into libbusybox build system: fix "allnoconfig" to clear all options. Closes 10296 build system: remove unused CONFIG_FEATURE_HAVE_RPC libarchive: do not extract unsafe symlinks unless $EXTRACT_UNSAFE_SYMLINKS=1 libarchive: FEATURE_LZMA_FAST should be visible if FEATURE_SEAMLESS_LZMA libbb: avoid malloc/free in bb_unsetenv() libbb: do not die if setgid/setuid(real_id) on startup fails libbb/dump: allow skipping over stdin too libbb/dump: fix a few broken commits and shrink code libbb: hide getnetbyaddr() inside "#if ENABLE_FEATURE_ETC_NETWORKS" block libbb: make trim() return pointer to terminating NUL libbb: move capability names code to libbb libbb: new function bb_getgroups() - allocating wrapper around getgroups() libbb: safe_write should not return EINTR libbb: use _exit, not exit, in bb_daemonize_or_rexec() libbb: rearrange NOFORK/NOEXEC code, logic is not changed libbb: simplify NOFORK/NOEXEC defines, move set_task_comm to libbb lineedit: do not tab-complete any strings which have control characters lineedit: get terminal width before printing prompt lineedit: make read_line_input() not take timeout param main: fix the case where user has "halt" as login shell. Closes 9986 networking/interface.c: remove superfluous "& 0377" noexec: consolidate code noexec: do GETOPT_RESET() before entering APPLET_main() noexec: set comm field for noexecs nofork: fix a bug uncovered by hush testsuite (forgotten fflush) adjtimex,blkdiscard,free: make it NOFORK clear,nproc,tty,uname,arch,unlink,which: make them NOFORK pwdx,pivot_root,kill[all5],ttysize,realpath,readlink: make them NOFORK add/remove-shell,add/deluser,add/delgroup: make them NOEXEC make 17 state-changing execing applets (ex: "nice PROG ARGS") NOEXEC blkid: make it NOEXEC, make FEATURE_BLKID_TYPE=y default blockdev,fsfreeze,fstrim,mountpoint: make them NOEXEC brctl,chattr,lsattr,tune2fs: make them NOEXEC chvt,deallocvt,dumpkmap,fgconsole,loadkmap: make them NOEXEC cryptpw,mkpasswd: make them NOEXEC df,dnsdomainname,hostname,dumpleases,expr,fatattr: make them NOEXEC freeramdisk,free,stat,getopt,ifenslave,ipcalc,rdev,ipcrm,ipcs: make them NOEXEC ip,ip*: make them NOEXEC kbd_more: make it NOEXEC, remove redundant opt clearing loadfont,setfont,losetup,lspci,lsscsi,lsusb: make them NOEXEC makedevs,mesg,mktemp,nameif: make ithem NOEXEC modutils: make them NOEXEC except depmod nbd-client: make it NOEXEC, stop using argc date,resize,partprobe,ps,pstree,raidautorun,runlevel,setconsole: make them NOEXEC setkeycodes: make it NOEXEC, better --help text setlogcons: make it NOEXEC, better --help text setserial,stty,sv,svc,sysctl,tunctl,umount: make them NOEXEC users,w,who,uptime,renice,vconfig: make them NOEXEC adjtimex: zero-fill whole structure, to be on the safe side arch: new applet (same as uname -m). ~30 bytes ash: align --login code with dash ash: alloc slightly smaller buffer in cvtnum(); faster unsetvar() ash: allow "trap NUM [SIG]..." syntax ash: implement BASH_XTRACEFD bashism ash: do not set a signal to SIG_DFL if it already is ash: fix display of ">&-" redirect in job strings ash: fix matching of unicode greek letter rho (cf 81) and similar cases ash: note which versions of glibc exhibit "rho bug" ash: fix nofork bug where environment is not properly passed to a command ash: fix redir_leak.tests if STANDALONE=y ash: fix "unset OPTIND" throwing an error message ash: force inlining of a trivial function ash: if !ENABLE_ASH_EXPAND_PRMT, disable PSSYNTAX code ash: improve set -x to quote strings as necessary ash: INT_OFF/INT_ON around run_nofork_applet() ash: less hackish implementation of evaltreenr() ash: make tryexec(cmd) parameter const char ash: more general format ${var:EXPR:EXPR} ash: more s/error/perror/ for better error reporting ash: one "current line = 1" might be missing, fix that ash: [PARSER] Add FAKEEOFMARK for expandstr ash: [PARSER] Catch variable length expansions on non-existant specials ash: [PARSER] Removed noexpand/length check on eofmark ash: [REDIR] Fix popredir on abnormal exit from built-in ash: [REDIR] Replace GPL noclobberopen code with the FreeBSD version ash: remove REDIR_SAVEFD2 ash: retain envvars with bad names in initial environment. Closes 10231 ash: revert previous implementation of "A=1 A=2 B=$A cmd" code ash: [SHELL] Optimize dash -c "command" to avoid a fork ash: significant overhaul of redirect saving logic ash: stage backported LINENO support as a separate patch ash: survive failures in $PS1 expansion. Closes 10371 ash: sync up with dash with respect to redirection escaping ash: unset OPTARG if getopts exits 1, support OPTERR=0 behavior ash: use mempcpy() where appropriate ash: [VAR] Add localvars nesting ash: [VAR] Do not poplocalvars prematurely on regular utilities ash: [VAR] Fix loss of variables when hash collides ash: [VAR] Fix poplocalvar leak ash: [VAR] Fix poplocalvar on abnormal exit from function ash: [VAR] Move unsetvar functionality into setvareq ash: [VAR] Replace cmdenviron with localvars ash,hush: ">&10" redirects to script/tty fds should not work hush: add a test which fails due to uclibc bug in getopt() hush: add support for "set -e" hush: add TODO for "set -e" hush: convert exp/ro/local parameters to bitfields in one flag param hush: correctly handle quoting in "case" even if !BASH_PATTERN_SUBST hush: do not accept "if() { echo; }" function def hush: do not assign to readonly VAR in "VAR=VAL CMD" syntax too hush: explain why wait5.tests is failing hush: fix a case when redirect to a closed fd #1 is not restoring (closing) it hush: fix and_or_and_backgrounding.tests failure hush: fix "cmd1 && cmd2 &" handling on NOMMU hush: fix comment parsing in `cmd`, closes 10421 hush: fix ${##}, ${#?}, ${#!} handling hush: fix handling of empty heredoc EOF marker hush: fix quoted_punct.tests failure hush: fix readonly2.tests failure hush: fix redirect code (was using uninitialized variables) hush: fix "(sleep 1; exit 3) & sleep 2; echo $?; wait $!; echo $?" hush: fix "true | func_with_return" not allowing return hush: fix two redirection testcase failures hush: forgot to emit error on (failing) second "readonly VAR=VAL" hush: functions have priority over builtins (!) hush: implement "getopts" builtin hush: implement "readonly" builtin hush: implement "times" builtin hush: implement -d DELIM option for "read" hush: make SIGINT handling visually less confusing hush: make "wait %1" work even if the job is dead hush: massage redirect code to be slightly more like ash hush: print error messages on "shift -1" hush: remove redundant "G_flag_return_in_progress = -1" hush: remove superfluous comparison hush: rename a few functions hush: simplify insert_job_into_table() a bit hush: support ${VAR:N:-M} hush: treat ${#?} as "length of $?" hush: use mempcpy where useful hush: if STANDALONE, close interactive fd for NOEXECed children msh: delete this applet shell: improve comments on signal handling shell: add OPTARG poisoning to getopt_optarg.tests shell: and_or_and_backgrounding.tests is no longer "UNFIXED BUG" shell: make standalone shell tab-complete "busybox" shell: more efficient check for EOL in read shell: optional support for read -t N.NNN, closes 10101 awk: stop on first non-option, closes 9861 basename: do not use argc beep: disallow FEATURE_BEEP_FREQ = 0 in configuration blkdiscard: provide our own BLK[SEC]DISCARD if necessary bunzip2: fix runCnt overflow from bug 10431 bzcat: compile bunzip2_main() if BZCAT bzcat,zcat: simplify code if gunzip/bunzip2 is not selected cat: fix "cat -An" ignoring -n; make numbering go througn all files chat: do not die when HANGUP param is missing. Closes 10016 chattr: fix option parsing to accept more cryptic option combos chown: fix a mistake in opt_complementary change crond: allow $SHELL and starting user's shell override DEFAULT_SHELL. Closes 6458 crond: do not assume setenv() does not leak crond: support @daily etc date: maybe_set_utc only once dd: fix status=none. Closes 10066 ed: fix --help and reorder functions, no code changes ed: fix "\n" removal in command line; make "w" set "dirty = 0" free: no longer include common_bufsiz.h getopt32: factor out code to treat all args as options getopt32: move support for "always treat first arg as option" to users (tar/ar) getopt32: remove applet_long_options getopt32: remove opt_complementary hexedit: new applet httpd: fix handling of range requests httpd: skip "Status: " from CGI, including space. Closes 10291 inetd: fix for running by non-root inetd,mount: do not die if uclibc without RPC is detected init: reduce the window when init can lose reboot/poweroff signals ipcalc: trim help text ipcs: tweak output orer to match util-linux 2.28 kbd_mode: show "off" mode too kbd_mode: try harder to find console device if -C TTY is not given klibc-utils: add ipconfig.c work-in-progress klibc-utils: new applets: resume, nuke, minips makedevs: allow much longer filenames microcom: require exactly one non-option netcat: net applet (alias to nc) ntpd: do run the script at least once in 11 minutes ntpd: improve treatment of DNS resolution failures ntpd: mention in help text that -d can be repeated ntpd: perform DNS resolution out of send/receive loop. Closes 10466 ntpd: skip over setting next DNS resolution attempt if it is not needed pgrep: fix "pgrep -v -P1"; also allow matching of comm. Closes 10086 ping: better config help text for FEATURE_FANCY_PING ping: fix help text to show what parameter -p takes pmap: tweak help text, show usage if no params are given ps: implement -o sid ps: improve TIME column for large times: showing "14453:50" is not good ps: stop using AT_CLKTCK, there are more standard ways readprofile: do not close/free just before exiting rpm2cpio: handle LZMA compressed rpms. closes 10166 rpm2cpio: use rpm_gettags rpm: prepare rpm_gettags for reuse in rpm2cpio rpm,rpm2cpio: do not compile not-configured parts of rpm.c rpm,rpm2cpio: INIT_G() was missing (it is a nop here so far) rpm,rpm2cpio: put both sources into one file, no code changes run-init: new applet script: -f means "flush", not "fsync" script: make -t[FILE] compatible with util-linux script: make -t independent of scriptreplay sed: in '/regexp/cmd1;//cmd2', cmd2 should use the same regexp as cmd1 sendmail allow "=" symbol in recipient, closes 10241 sendmail: fix segfault if "To: email1,email2" is used setconsole: much better help text setconsole: since SUSE version has no -r, nuke our --reset longopt setfattr: new applet setpriv: accept any case in capability names setpriv: code shrink, and grouping capability code together setpriv: dump user and group info setpriv: factor out capability name printing setpriv: placate "declaration of 'index' shadows a global declaration" warning setpriv: remove dependency on libcap headers shuf: fix random line selection. Closes 9971 stty: add cmspar, flusho, extproc attributes stty: fix bb_common_bufsiz1 use in NOEXEC svc: fix a case where with more than one option, getopt() state is not reset svc: remove superfluout INIT_G() swapon: do not use FEATURE_MOUNT_LABEL, have your own FEATURE_SWAPONOFF_LABEL sysctl: fix file parsing, do not require -w for VAR=VAL sysctl: recognize ";comment" and "<whitespace>#comment" lines syslogd,logger: code shrink for musl tar: postpone creation of symlinks with "suspicious" targets. Closes 8411 telnet: "-a" + "-l USER" should respect USER test: fix 4-argument case time: fix build for toolchains without O_CLOEXEC tls: fix build problem on non-static i386 tls: fix pstm asm constraint problem tls: remove last int16 local variables in pstm code tls: use capped SNI len everywhere top: switch to malloced "globals" ttysize: if stdin is not tty, try stdout, then stderr ubi_tools: a bit smaller applet resolution code ubi_tools: ubiupdatevol supports "-" input and actually respects -s SIZE ubiupdatevol: fix bug with -sSIZE: was ignoring IMAGE_FILE udhcpc[6]: downgrade "adapter index N" messages to log2 level udhcpc[6]: fix messages referring to select() while we use poll() udhcpc[6]: initialize entire sockaddr_ll udhcpc[6]: make log2 messages for chaddr field indented like the rest udhcpc[6]: on log level 1, three messages about raw socket is overkill udhcpc: downgrade "MAC X:X:X:X:X:X" message to log2 level udhcpc: paranoia when using kernel UDP mode for sending renew: server ID may be bogus unlzma: fix SEGV, closes 10436 unshare: -r implies -U, not -u unshare: -r should map root to user, not the other way around unxz: get_le32 macro is obviously wrong unzip: implement -j, closes 9126 unzip: robustify overwrite checks unzip: sanitize filename length: malloc(1234mb) is not funny unzip: support symlinks. Closes 10031 uuencode: allow space instead of "`" as padding char. Closes 10046 volume_id: enable minix detection watchdog: do not use argc, other cleanups xargs: optional support for -P NUM. Closes 9511 xxd: allow "-" as file name meaning stdin zcip: fix slow environment leak Eugene Rudoy (3): iproute/iprule: support toolchains without RTA_TABLE routing attribute unzip: fix content listing and filtering when -j is used unzip: add missing -j to trivial usage James Clarke (6): networking: Fall back on IPPROTO_RAW when SOL_RAW is not defined blkdiscard: Only build on Linux xfuncs: Handle missing non-POSIX termios constants df: Use statvfs instead of non-standard statfs udp_io, traceroute: Standardise IPv6 PKTINFO handling to be portable grep: skip grepping symlinks to directories Johannes Schindelin (7): ash: protect WIFSTOPPED use with #if JOBS copyfd: guard use of munmap() with #if (windows builds need this) ash: remove no-longer-used variable ash: implement -d DELIM option for read ash: report reason when a script file could not be opened ash: when cd fails, say why xargs: support -a FILE Kang-Che Sung (3): cat: allow compiling out -n and -b make_single_applets: fix ": $((fail++))" expansion error ps: allow ps config options if minips is enabled Markus Gothe: lsscsi: fix xchdir("..") from symlink in /sys/bus/scsi/devices Matt Spinler: watchdog: stop watchdog first on startup Natanael Copa: unzip: fix regression on big-endian machines Patrick Steinhardt (8): setpriv: do not process remaining args setpriv: prepare option parsing logic for additional opts setpriv: dump no-new-privs info setpriv: dump inheritable capability set setpriv: dump capability bounding set setpriv: dump ambient capabilities setpriv: allow modifying inheritable caps setpriv: allow modifying ambient capabilities Peter Korsgaard: dpkg: fix CONFIG_FEATURE_CLEAN_UP handling Ron Yorston (9): printf: fix format string sanity check od_bloaty: fix floating point output ash: support platforms that don't have '%m' printf specifier libbb: remove vdprintf ps: fix build failure if FEATURE_PS_TIME is disabled libarchive: fix build failure on NOMMU systems tar: fix handling of first argument without '-' kill: add '--' option to separate options from arguments env: -u option fails due to typo Thomas Petazzoni: Makefile: include per-arch Makefile before Makefile.flags Timo Teräs: add-remove-shell: fix crash when shell is already added Uwe Geuder: bootchartd: prevent premature stop by device mapper Xabier Oneca: chcon: show '--reference' in help text only if LONG_OPTS=yBug fix release. 1.27.2 has fixes for svc (work correctly with more than one option specified), unzip (big-endian fix), shuf (was always moving 1st line elsewhere), tls code (asm compilation problem on x86), NOFORK ("rm -i" and "yes" could not be interrupted), a bit of support for Fedora build.
BusyBox 1.27.1. (git, patches, how to add a patch)
Bug fix release. 1.27.1 has fixes for uuencode (allow space instead of "`" as padding char), dd (fixed status=none), setpriv (option parsing should not eat options in PROG ARGS), fix for "applet (for example halt) as login shell" use case, a few fixes for less typical build environments.
BusyBox 1.27.0. (git, patches, how to add a patch)
Sizes of busybox-1.26.0 and busybox-1.27.0 (with equivalent config, static uclibc build):
text data bss dec hex filename 925769 489 7352 933610 e3eea busybox-1.26.0 927115 489 7352 934956 e442c busybox-1.27.0
Changes since previous release:
Andrei Gherzan: switch_root: don't bail out when console doesn't exist Andrey Mozzhuhin: ftpd: new option -a ANON_USER to allow anonymous logins André Draszik: iproute: support for filtering by and printing of scope Assaf Gordon: setpriv: new applet Ben Hutchings: modprobe: read modules.builtin Cristian Ionescu-Idbohrn: appletlib: avoid warning on unused function ingroup unzip: remove now-pointless lseek which returns current position Denys Vlasenko: fix "ifdef ENABLE_foo": should always be "#if ENABLE_foo" fix "loginutils/Config.in:319 error: Overlong line" make DPKG=y and DPKG_DEB=y by default make FEATURE_USERNAME_COMPLETION=y by default make INSMOD=y by default make RMMOD=y by default move FEATURE_AUTOWIDTH config option to two applets which use it move FEATURE_USE_TERMIOS config option to two applets which use it make_single_applets.sh: a tool to check single-applet builds qemu_multiarch_testing: small improvements archival: add option -k "keep" to gzip/bzip2/lzop, add -U "nokeep" to lzop libbb: consolidate the code to set termios unbuffered mode libbb: eliminate redundant variable in sha_crypt libbb: fix "error: redefinition of 'is_tty_secure'" libbb: make check_password() also return CHECKPASS_PW_HAS_EMPTY_PASSWORD libbb: match_fstype() is unreadable in the extreme, fixing it libbb: move isqrt from factor, use it in diff too libbb: shrink dump.c libbb: spawn_and_wait() fflushes before forking NOEXEC; child reinits logmode libiproute: FACT_FUNCization add/remove-shell: copy /etc/shells mode to new file ash: 16-bit nprocs field is a pain for many CPUs ash: add INT_OFF/ON around allocations ash: commented-out possible fix for 7694 ash: error out if ASH_INTERNAL_GLOB is not selected on uClibc ash: fix a bug in argv restoration after sourcing a file ash: fix $HOME/.profile reading if !ASH_EXPAND_PRMT ash: fix open fds leaking in redirects. Closes 9561 ash: fix 'trap - 65' ash: implement "exec -a ARGV0 CMD ARGV1..." ash: revert "make dot command search current directory first" hush: conditionalize print_escaped() on EXPORT || TRAP hush: correct exitcode for unterminated ')' - exitcode2.tests testcase hush: fix a bug in argv restoration after sourcing a file hush: fix 'defined but not used' warning hush: fix kill builtin without jobs support hush: global_args_malloced is used only if set builtin is enabled hush: kill builtin and kill %jobspec support hush: make echo builtin optional hush: make export builtin optional hush: make memleak builtin optional hush: make read and trap builtins optional hush: make set/unset builtins optional hush: make umask builtin optional hush: reinstate [[ builtin hush: remove redundand test for ENABLE_HUSH_JOB hush: reorder builtins (cd and pwd ought to be close, etc), no code changes hush: support %%, %+ and % jobspec (meaning "current job") ash,hush: fix SIGCHLD interrupting read builtin ash,hush: move "config" blocks above their use in coditional includes ash,hush: make hush test optional, rename ASH_BUILTIN_foo to ASH_foo ash,hush: make it possible to select "sh" and "bash" aliases without selecting ash or hush busybox: stop depending on FEATURE_AUTOWIDTH for applet list catv: convert this bbox-specific applet into "cat -v" cryptpw: support "rounds=NNNNNNN$" thing in salts depmod: don't build it if MODPROBE_SMALL=y diff: fix -N and nonexistent files. Closes 7454 factor: new applet fallocate: new applet fsfreeze: new applet ftpd/ls: show directories first grep: FEATURE_GREP_CONTEXT should be available for "fgrep only" too httpd: defend against attempts to OOM us. Closes 9611 httpd: use "Content-Length", not "-length" init: dont send "Sent SIGTERM to all" msg to syslog: we just TERMed it! init: rename FEATURE_EXTRA_QUIET to FEATURE_INIT_QUIET iplink: implement "set promisc on|off". Closes 4682 ip: make ip aliases individually selectable iproute: add "a" command as a synonym to "add" iproute: support advmss option link: new applet ls: -1 should be ignored by -l (and options which imply -l) ls: convert DISP_DIRNAME to a bool variable ls: get rid of opt_flags[], handle -l1c through option_mask32 ls: handle -a and -A through option_mask32 ls: handle all sort options through option_mask32 ls: handle -d and -R through option_mask32 ls: handle -i through option_mask32 ls: handle -p and -F through option_mask32 ls: handle -s through option_mask32 ls: handle -x through option_mask32, remove default -C from --help ls: LIST_ID_NAME/ID_NUMERIC/LOPT/LONG are the same, merge as LONG ls: LIST_NLINKS/SIZE/DATE_TIME/SYMLINK are always the same, merge as LIST_LOPT ls: make -Z output compatible with GNU coreutils 8.25 ls: more correct handling of -c, -u ls: replace -e with --full-time, add --group-directories-first, delete -K modprobe: do not descend into /etc/modprobe.d/DIR/. Closes 8686 modprobe-small: fix "modprobe non-existing-module" exitcode (should be 1) modprobe_small: if only MODPROBE and DEPMOD are selected, no need to test for them modprobe-small: make applets individually selectable more: hardcode FEATURE_USE_TERMIOS=y in this applet; code shrink mount: create loop devices with LO_FLAGS_AUTOCLEAR flag nc_bloaty: use poll() instead of select() nc: use poll() instead of select() nl: new applet; also implement cat -nb (similar functionality to nl) nproc: new applet ntpd: print result of hostname resolution partprobe: new applet paste: delimiter list use should restart for each new output line pgrep: fix pgrep -flx "sleep 11" - saw "sleep 11" processes as "sleep 11 " pgrep: implement -a ps: avoid -o stat to contain spaces. Closes 9631 rdate: make it do something remotely sane, facing 32-bit time overflow rdate: time(NULL) is shorter than time(&var) runit: fix chpst -n -N -u USER runsv: update to match version 2.1.2 of runit sendmail: allow "+" symbol in recipient. Closes 9646 sha512: use larger constant table only if sha512 is in fact selected shred: new applet su: FEATURE_SU_BLANK_PW_NEEDS_SECURE_TTY svlogd: support -ttt (dateTtime instead of date_time) taskset: rewrite to be task size-agnostic taskset: separate "current" and "new" strings tcpudp: define SO_ORIGINAL_DST directly, not via include time: inplement -f FMT top: FEATURE_USE_TERMIOS shouldn't control reading of screen size udhcpc6: fix problems found running against dnsmasq udhcpc6: fix releasing udhcpc6: move misplaced comment udhcpc6: read_interface should save link-local ipv6 address udhcpc6: add comments about option 39, no code changes udhcpc6: add support for timezones udhcpc6: make -O OPT work udhcpc: do not accept --background on NOMMU (same as -b) udhcpc: fix "udhcpc -x hostname:NAME" not working on nommu udhcpc: make sure we do not overflow poll timeout udhcp: do not clobber errno by signal handler udhcp: use poll() instead of select() unlzma: fix erroneous "while" instead of "if". Closes 4682 unzip: do not use CDF.extra_len, read local file header. Closes 9536 unzip: optional support for bzip2, lzma, xz unzip: properly use CDF to find compressed files. Closes 9536 umount: revert "umount: make -d always active, add -D to suppress it" vi: don't touch file with :x when modified_count == 0 vi: survive if stdin is nonblocking. closes 9851 vi,fsck: do not use build timestamp unconditionally. Closes 9626 tls: a tiny TLS1.2 code, wire it up for wget ssl_client: TLStest applet wget: add a big explanation what TLS code implements and what does not wget: add support for -S --server-response wget: fix for brain-damaged HTTP servers. Closes 9471 wget/tls: session_id of zero length is ok (arxiv.org responds with such) w: new applet, alias to "who -H" xxd: new applet Explorer09: modprobe-small: optimizations for single applet build Felix Fietkau: ash: improve / fix glob expansion Glenn Matthews: reset: before calling execvp(), reset needs to flush stdout James Byrne: sv: update to match version 2.1.2 of runit Jody Bruchon: uniq: add -i option to ignore case Add help text for 'uniq -i' Jörg Krause: Fix dependency for IFUPDOWN_UDHCPC_CMD_OPTIONS Kaarle Ritvanen: libbb: GETOPT_RESET macro login: move check_securetty to libbb Kang-Che Sung: Allow FAST_FUNC to be overridden at build time build system: no longer prompt for PLATFORM_LINUX option bunzip2: fix code bloat caused by zcat's seamless magic Fix FEATURE_{GZIP,BZIP2}_DECOMPRESS link error Allow 'gzip -d' and 'bzip2 -d' without gunzip or bunzip2 shell: clarify help text of CONFIG_{SH,BASH}_IS_* options ash: explicitly group ash options ash: fix "kill %1" not working if CONFIG_ASH is disabled hush: split bash compatible extensions into separate defines. No code changes kill: need not build kill.c when ash's job control is off kill: optimizations for single-applet build modutils: fix config options dependency modprobe-small: move lsmod code out of modprobe_main() modutils: remove redundant "select PLATFORM_LINUX" configs cmdline module options can be disabled on "big" modutils Reorder modutils config options & fix yet more dependency modprobe-small: document '-n' in depmod usage modprobe-small: define and use DEPMOD_OPT_n (option mask) Update depmod & modprobe upstream help text in comments Laurent Bercot: httpd: fix address family for reverse proxy client socket ls: fix support for long options when FEATURE_LS_COLOR is deselected Markus Gothe: lsscsi: new applet Maxime Coste: paste: new applet Ming Liu: tar: add IF_FEATURE_* checks Natanael Copa: ntpd: improve postponed hostname resolution Ron Yorston: ash: fix error code regression Rostislav Skudnov: Replace int by uint to avoid signed integer overflow dd: call fsync() only once before exiting if conv=fsync is specified Stefan Tomanek: ip rule: add suppress_{prefixlength,ifgroup} options Tito Ragusa: README_distro_proposal.txt: typo fixes Tommi Rantala: time: document -p in usage time: implement -a, -o FILE Waldemar Brodkorb: modutils: remove special handling of uClibc Youfu Zhang: ash: fix incorrect path in describe_command Yousong Zhou: vi: avoid touching a new file with ZZ when no editing has been done
If you are stuck with a kernel from July 2008 or earlier (2.6.26 or less), and you are using mdev, device scan wouldn't work correctly due to an incompatibility in /sys structure. You can work around it by reverting this patch in 1.26.x BusyBox sources. (You also probably need to plan migration to a less ancient kernel).
BusyBox 1.26.2. (git, patches, how to add a patch)
Bug fix release. 1.26.2 has fixes for ash (redirect fds sometimes were not closed), module utilities and tcpsvd (build fixes), build system (IFUPDOWN_UDHCPC_CMD_OPTIONS option was not settable).
BusyBox 1.26.1. (git, patches, how to add a patch)
Bug fix release. 1.26.1 has fixes for single-applet builds (all applets are verified to successfully build when individually selected), a few tweaks to defconfig were made.
Static binaries are available for downloads, with each individual applet enabled separately, as well as the binary with almost all applets selected, and helper binaries (ssl_helper for HTTPS wget support, index.cgi, post_upload.cgi and httpd_ssi for HTTP server).
BusyBox 1.26.0. (git, patches, how to add a patch)
Sizes of busybox-1.25.0 and busybox-1.26.0 (with equivalent config, static uclibc build):
text data bss dec hex filename 942170 491 7496 950157 e7f8d busybox-1.25.0 944982 491 7504 952977 e8a91 busybox-1.26.0
Changes since previous release:
Aaro Koskinen (3): cpio: add ownership (-R) test cases patch: fix debug log failure patch: fix matching failure Bartosz Golaszewski (1): i2cdump: don't use common_bufsiz1 Brian Foley (2): awk: fix segfault on for loop syntax error udhcpc: check read of option length byte to be within packet Denys Vlasenko: build system: fix a few warnings for allnoconfig build build system: fix include/NUM_APPLETS.h generation build system: make CONFIG_FEATURE_USE_BSS_TAIL less funky examples/var_service/fw: optionally flush all netdevs; optionally prefer one 0/0 routing examples/var_service/fw do not ruin $if[], use different name examples/var_service/supplicant_if: new service example examples: add a useful "see abridged log" script for ntpd service example examples: add example of a DHCP server examples: update var_service/README config: disentangle PREFER_APPLETS from SH_STANDALONE and SH_NOFORK trylink: use "mktemp tmp.XXXXXXXXXX" to placate OS X getopt32: add new syntax of 'o:+' and 'o:*' for -o NUM and -o LIST libbb/speed_table.c: survive B115200 and B230400 not fitting into 16 bits libbb/xwrite: print errno on "short write" errors libbb: do not use fflush_unlocked, musl does not like fflush_unlocked(NULL) libbb: handle \S in /etc/issue libbb: make xmalloc_sockaddr2dotted use NI_NUMERICSCOPE libbb: send_to_from: do not require that "to" should have the same AF. Closes 9146 lineedit: fix completion with applet names. Closes 9361 lineedit: fix two bugs in SIGWINCH signal handling libiproute: eliminate some redundant zero stores ash: [EXPAND] Do not split quoted VSLENGTH and VSTRIM ash: [EXPAND] Fix ifsfirst/ifslastp leak ash: [EXPAND] Optimise nulonly away and just use quoted as before ash: [EXPAND] Removed herefd hack ash: [EXPAND] Split unquoted $@/$* correctly when IFS is set but empty ash: [JOBS] Fix dowait signal race ash: [MEMALLOC] Add pushstackmark ash: [MEMALLOC] Made grabstackblock an inline wrapper for stalloc ash: [PARSER] Add nlprompt/nlnoprompt helpers ash: [PARSER] Do not show prompts in expandstr ash: [PARSER] Fix parsing of ${##1} ash: [PARSER] Handle backslash newlines properly after dollar sign ash: [PARSER] Recognise here-doc delimiters terminated by EOF ash: [PARSER] Report substition errors at expansion time ash: [PARSER] Size optimisations in parameter expansion parser ash: [REDIR] Move null redirect checks into caller ash: [REDIR] Remove EMFILE special case ash: [REDIR] Remove redundant CLOEXEC calls ash: [REDIR] Replace copyfd by savefd and use dup2 elsewhere ash: [SHELL] Expand ENV before using it ash: [SHELL] Move flushall to the point just before _exit ash: [SIGNAL] Remove EXSIG ash: [VAR] Initialise OPTIND after importing environment ash: [VAR] Remove setvarsafe ash: [VAR] Sanitise environment variable names on entry ash: add a FIXME for bug 9246 ash: add comment explaining "set -e; $(cmd)" discrepancy ash: all blocks in function node copying must be SHELL_ALIGNed ash: comment out free(p) just before _exit, tweak some outdated comments ash: delete leftovers from "simplify EOF/newline handling in list parser" commit ash: do not leave SIGQUIT ignored on "exec CMD" ash: eval: Return status in eval functions ash: expand: Fixed "$@" expansion when EXP_FULL is false ash: explain EXP_REDIR and why we (dont) glob redir filenames ash: fix "duplicate local" code (forgot to re-enable interrupts) ash: fix "return N" not setting $? in loop conditionals ash: fix arithmetic closing )) split by backslash-newline ash: fix globbing bugs when using glibc glob() ash: fix handling of ${VAR: -2} ash: fix handling of NULs in $'abc\000def\x00asd'. Closes 9286 ash: fix handling of bashism $'xxx' with high-bit chars. Closes 9236 ash: fix interactive "command eval STRING" exiting on errors ash: fix return_in_trap1.tests failure ash: get rid of two global data variables ash: if using libc glob(), skip it if no metachars are in word ash: in heredoc code, fix access past the end of allocated memory. Closes 9276 ash: input: Allow two consecutive calls to pungetc ash: jobs: Don't attempt to access job table for job %0 ash: make internal globbing code selectable from config ash: make popfile() anfter popallfiles() safe ash: move ifsbreakup() and ifsfree() up ash: open-code blocking_dowait_with_raise_on_sig() ash: optimize tryexec(): avoid one allocation ash: partially sync with dash on "fork if traps are set" logic ash: placate gcc: "warning: ! is only applied to the left hand side of ==" ash: reduce code differences from upstream ash: remove dead stores and unused variables ash: remove unused EXSHELLPROC ash: return to DOWAIT_* constants similar to dash, no logic changes ash: support "--" in "source" builtin ash: undo "tokname hack" ash: use glob() from libc ash: use pause(), not sigsuspend(), in wait builtin ash: use shellparam.optind/optoff in getopts() directly, not through pointers ash: while (!got_sig) pause() is not reliable, use sigsuspend() hush: "wait $!; echo $?" should return 127 if $! already exited hush: 'return' should have effect earlier hush: G.user_input_buf[] is needed only if line editing is enabled hush: `cmd` and arithmetic also need the fix for FILE rewind hush: add commented-out debug printouts in "memleak" built-in hush: add func6.tests hush: add var4.tests, var5.tests hush: allow { cmd } to not be terminated by semicolon in some cases hush: do not allow sh -c '{ echo boo }' hush: do not leak script fds into NOEXEC children hush: document better where bad redirect syntax is detected hush: enable "msh is deprecated" message in msh stub hush: factor out %jobspec parsing hush: fix "(sleep 1; exit 3) & sleep 2; echo $?; wait $!; echo $?" hush: fix ". EMPTY_LINE" not setting $? to 0 hush: fix "redirects can close script fd" bug hush: fix "wait PID" hush: fix 'eval ""' handling hush: fix a bug in FEATURE_SH_STANDALONE=y config. Closes 9186 hush: fix a memory corruption when exported variable is modified hush: fix exitcode on exec failure with EACCES - should be 126 hush: fix handling of by backslash-newline in $((arith)) and $(cmd) hush: fix interactive input handling of backslash+newline hush: fix var3.tests hush: implement "wait %jobspec" hush: make "wait %1" less likely to play with signal mask hush: make getch/peek functions directly called hush: non-matching "case" statement sets $? to 0 hush: rework "wait %jobspec" to work in non-interactive shells too hush: rework input char buffering to allow more than one-deep peek hush: simplify insert_bg_jobs cp: fix -i for POSIX mode. Closes 9106 cp: make verbose cp show symlink copies too cpio: fix restoration of file ownership, closes 9306 df: implement -B n<suff> and -B <suff> formats of -B option dhcp: merge files.c into dhcpd.c dhcp: merge leases.c and static_leases.c into dhcpd.c dhcp: merge most of static_leases.c into dhcpd.c dnsdomainname: split it from "hostname", make it independently selectable dpkg-deb: remove unused FEATURE_DPKG_DEB_EXTRACT_ONLY config option fdisk: fix CONFIG_FEATURE_SUN_LABEL=y build fdisk: print much less cryptic partition table fdisk: sanitize partition name printing; drop "Code" column; get rid of one static var fdisk_gpt: simplify GPT partition name printing find: fix handling of trailing slashes in -name PATTERN comparisons hexdump: fix numerous bugs in handling of backslashes httpd: explain why we use sprintf and why it should be fine ifplugd: if SIOCSIFFLAGS fails with ENODEV, don't die ifupdown: rewrite state file atomically ifupdown: when flushing addresses with "ip", add label %label% init: fix for FreeBSD console opening. Closes 9031 install: fix musl problem with dirname ip: fix an improper optimization: req.r.rtm_scope may be nonzero here ipneigh: add this shortcur similar to other "ip <CMD>" shortcuts less: fall back to using fd #1 for keyboard reading. Closes 9231 less: fix SEGV less: fix bracket search to match behavior of less 481 less: switch off nonblock on kbd_fd before exit loadfont: 32k size limit is not enough makedevs: make special node creation idempotent man: allow nroff and tbl commands be overridden; unmangle writing to files man: fix parsing of "DEFINE pager xyz". Closes 8976 man: make width selection more thorough; explain how to override it man: remove -Tascii from nroff invocation mdev: create devices from /sys/dev more: accept and ignore a bunch of options mount: for cifs, dont insert "ip=ADDR" option if user gave it explicitly mount: tweak "IPv6 scoped addr" commit ntpd: daemonize before DNS resolution sed: fix "sed n (flushes pattern space, terminates early)" testcase failure sendmail: make it possible to pause after connection helper is started sha3: fix to conform to final SHA3 padding standard, add -a BITS option su: expand help; simplify passing of -c CMD to run_shell() svc: new applet (daemontools-compatible version of "sv") tar: handle pax-encoded utf8 filenames and link names. Closes 9406 tc: consolidate its disabled bits tcpsvd: don't keep shared fd open if fd limit is reached. Closes 9331 telnetd: fix a corner case where CRLF->CR translation can misbehave telnetd: fix corner case of input processing of 0xff bytes telnetd: fix handling of short writes to pty telnetd: ifdef out a buggy error handling code path telnetd: treat all 2-byte IACs in 240..249 range as NOPs test: make [ and [[ forms individually selectable test: memory leak: free group id list top: move free(prev_hist) out of signal path traceroute: cleanup and fixes for packet size calculations udhcpc: check read of overload option data byte to be within packet udhcpc: run "deconfig" script in manual renew state too. Closes 9061 unshare: --network should be --net. Closes 9116 vi: fix '' command (goto to prev context) vi: make "g<key>" error message less likely to show garbage wget/ssl_helper: update to wolfssl-3.9.8 wget/ssl_helper: strip was invoked incorrectly wget: run s_client helper with -servername HOST wget: there is no -s option in GNU Wget 1.18, we should be compatible wget: treat 201,202,203 as success codes too. Closes 9211 whois: implement -i whois: make it actually work {md5,shaN}sum: make -c EMPTY fail Francis Rounds (1): svlogd: strip leading '!' from processor lines Hauke Mehrtens (1): libnetlink: fix alignment of netlink messages Jonas Danielsson (1): ping: populate icmp_id field for "simple" ping too Kang-Che Sung (1): docs: Update filenames in keep_data_small.txt Linus Walleij (1): AUTHORS: Add myself to AUTHORS Lukasz Nowak (1): libiproute: handle table ids larger than 255 Mike Frysinger (4): modutils: support finit_module syscall mdev.conf: rename hw_random to hwrng setfiles: fix build failure after common_bufsiz change selinux: drop deprecated headers Miroslav Lichvar (1): ntpd: respond only to client and symmetric active packets Natanael Copa (4): df: use f_frsize instead of f_bsize for correct sizes lineedit: trivial codeshrink for vi-mode gzip: fix compression level bug. Closes 9131 gzip: add test that checks that -9 compresses better than -1 Peter Korsgaard (1): udhcpc: Unconditionally call deconfig script, not only if lease is active Ron Yorston (2): libbb: suppress warning about run_applet_and_exit ash: return exit status of nofork applets Rostislav Skudnov (2): ash: exit after subshell error when errexit option is set lineedit: fix handling of repeating Alt-b, Alt-f, Alt-d, Alt-Backspace Serj Kalichev (1): volume_id: Add support for UBIFS Tito Ragusa (1): strings: implement -t radixBug fix release. 1.25.1 has fixes for hush (newer glibc has different behavior on fflush; fix use-after-free for exported variables), gunzip (incorrect handling of -N "compression level" options), ip route (scope "Universe", numerical value zero, wasn't always set properly), ntpd (check type of incoming packet, respond only to client requests).
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
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:
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).
BusyBox 1.24.2. (git, patches, how to add a patch)
Bug fix release. 1.24.2 has fixes for build system (static build with glibc fixed), truncate, gunzip and unzip.
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.
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 0If 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
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).
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),
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
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.
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
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.
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
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).
Click here to read older news
![]() |
干练的羽毛球 · 中石化胜利石油工程有限公司2024年度校园招聘简章 2 月前 |
![]() |
气势凌人的跑步机 · Python之把字符串写入文件然后从文件中读出字符串_python编写程序,将字符串hello world写入文本文件 ,sample.text然后再读取-CSDN博客 5 月前 |
![]() |
乐观的春卷 · 关于前往中国旅客疫情防控要求的通知 6 月前 |
![]() |
急躁的伤疤 · 阎百兴-中国科学院大学-UCAS 7 月前 |