busybox: update to 1.22.1

Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 40852
v19.07.3_mercusys_ac12_duma
Felix Fietkau 10 years ago
parent a54791f2ba
commit f4f553efa7

@ -91,6 +91,9 @@ config BUSYBOX_DEFAULT_FEATURE_WTMP
config BUSYBOX_DEFAULT_FEATURE_PIDFILE
bool
default y
config BUSYBOX_DEFAULT_PID_FILE_PATH
string
default "/var/run"
config BUSYBOX_DEFAULT_FEATURE_SUID
bool
default y
@ -139,9 +142,18 @@ config BUSYBOX_DEFAULT_LFS
config BUSYBOX_DEFAULT_CROSS_COMPILER_PREFIX
string
default ""
config BUSYBOX_DEFAULT_SYSROOT
string
default ""
config BUSYBOX_DEFAULT_EXTRA_CFLAGS
string
default ""
config BUSYBOX_DEFAULT_EXTRA_LDFLAGS
string
default ""
config BUSYBOX_DEFAULT_EXTRA_LDLIBS
string
default ""
config BUSYBOX_DEFAULT_DEBUG
bool
default n
@ -193,9 +205,12 @@ config BUSYBOX_DEFAULT_FEATURE_RTMINMAX
config BUSYBOX_DEFAULT_PASSWORD_MINLEN
int
default 6
config BUSYBOX_DEFAULT_MD5_SIZE_VS_SPEED
config BUSYBOX_DEFAULT_MD5_SMALL
int
default 2
default 1
config BUSYBOX_DEFAULT_SHA3_SMALL
int
default 1
config BUSYBOX_DEFAULT_FEATURE_FAST_TOP
bool
default y
@ -220,6 +235,9 @@ config BUSYBOX_DEFAULT_FEATURE_EDITING_HISTORY
config BUSYBOX_DEFAULT_FEATURE_EDITING_SAVEHISTORY
bool
default n
config BUSYBOX_DEFAULT_FEATURE_EDITING_SAVE_ON_EXIT
bool
default n
config BUSYBOX_DEFAULT_FEATURE_REVERSE_SEARCH
bool
default n
@ -280,9 +298,30 @@ config BUSYBOX_DEFAULT_FEATURE_AR_LONG_FILENAMES
config BUSYBOX_DEFAULT_FEATURE_AR_CREATE
bool
default n
config BUSYBOX_DEFAULT_UNCOMPRESS
bool
default n
config BUSYBOX_DEFAULT_GUNZIP
bool
default y
config BUSYBOX_DEFAULT_BUNZIP2
bool
default y
config BUSYBOX_DEFAULT_UNLZMA
bool
default n
config BUSYBOX_DEFAULT_FEATURE_LZMA_FAST
bool
default n
config BUSYBOX_DEFAULT_LZMA
bool
default n
config BUSYBOX_DEFAULT_UNXZ
bool
default n
config BUSYBOX_DEFAULT_XZ
bool
default n
config BUSYBOX_DEFAULT_BZIP2
bool
default n
@ -304,25 +343,25 @@ config BUSYBOX_DEFAULT_DPKG_DEB
config BUSYBOX_DEFAULT_FEATURE_DPKG_DEB_EXTRACT_ONLY
bool
default n
config BUSYBOX_DEFAULT_GUNZIP
bool
default y
config BUSYBOX_DEFAULT_GZIP
bool
default y
config BUSYBOX_DEFAULT_FEATURE_GZIP_LONG_OPTIONS
bool
default n
config BUSYBOX_DEFAULT_GZIP_FAST
int
default 0
config BUSYBOX_DEFAULT_LZOP
bool
default n
config BUSYBOX_DEFAULT_LZOP_COMPR_HIGH
bool
default n
config BUSYBOX_DEFAULT_RPM2CPIO
config BUSYBOX_DEFAULT_RPM
bool
default n
config BUSYBOX_DEFAULT_RPM
config BUSYBOX_DEFAULT_RPM2CPIO
bool
default n
config BUSYBOX_DEFAULT_TAR
@ -361,24 +400,6 @@ config BUSYBOX_DEFAULT_FEATURE_TAR_NOPRESERVE_TIME
config BUSYBOX_DEFAULT_FEATURE_TAR_SELINUX
bool
default n
config BUSYBOX_DEFAULT_UNCOMPRESS
bool
default n
config BUSYBOX_DEFAULT_UNLZMA
bool
default n
config BUSYBOX_DEFAULT_FEATURE_LZMA_FAST
bool
default n
config BUSYBOX_DEFAULT_LZMA
bool
default n
config BUSYBOX_DEFAULT_UNXZ
bool
default n
config BUSYBOX_DEFAULT_XZ
bool
default n
config BUSYBOX_DEFAULT_UNZIP
bool
default n
@ -400,6 +421,9 @@ config BUSYBOX_DEFAULT_FEATURE_DATE_NANO
config BUSYBOX_DEFAULT_FEATURE_DATE_COMPAT
bool
default n
config BUSYBOX_DEFAULT_HOSTID
bool
default y
config BUSYBOX_DEFAULT_ID
bool
default y
@ -415,6 +439,12 @@ config BUSYBOX_DEFAULT_FEATURE_TEST_64
config BUSYBOX_DEFAULT_TOUCH
bool
default y
config BUSYBOX_DEFAULT_FEATURE_TOUCH_NODEREF
bool
default n
config BUSYBOX_DEFAULT_FEATURE_TOUCH_SUSV3
bool
default n
config BUSYBOX_DEFAULT_TR
bool
default y
@ -541,9 +571,6 @@ config BUSYBOX_DEFAULT_HEAD
config BUSYBOX_DEFAULT_FEATURE_FANCY_HEAD
bool
default y
config BUSYBOX_DEFAULT_HOSTID
bool
default y
config BUSYBOX_DEFAULT_INSTALL
bool
default n
@ -652,6 +679,9 @@ config BUSYBOX_DEFAULT_SHA256SUM
config BUSYBOX_DEFAULT_SHA512SUM
bool
default n
config BUSYBOX_DEFAULT_SHA3SUM
bool
default n
config BUSYBOX_DEFAULT_SLEEP
bool
default y
@ -847,9 +877,36 @@ config BUSYBOX_DEFAULT_FEATURE_START_STOP_DAEMON_LONG_OPTIONS
config BUSYBOX_DEFAULT_WHICH
bool
default y
config BUSYBOX_DEFAULT_AWK
bool
default y
config BUSYBOX_DEFAULT_FEATURE_AWK_LIBM
bool
default y
config BUSYBOX_DEFAULT_FEATURE_AWK_GNU_EXTENSIONS
bool
default y
config BUSYBOX_DEFAULT_CMP
bool
default y
config BUSYBOX_DEFAULT_DIFF
bool
default n
config BUSYBOX_DEFAULT_FEATURE_DIFF_LONG_OPTIONS
bool
default n
config BUSYBOX_DEFAULT_FEATURE_DIFF_DIR
bool
default n
config BUSYBOX_DEFAULT_ED
bool
default n
config BUSYBOX_DEFAULT_PATCH
bool
default n
config BUSYBOX_DEFAULT_SED
bool
default y
config BUSYBOX_DEFAULT_VI
bool
default y
@ -892,33 +949,6 @@ config BUSYBOX_DEFAULT_FEATURE_VI_WIN_RESIZE
config BUSYBOX_DEFAULT_FEATURE_VI_ASK_TERMINAL
bool
default y
config BUSYBOX_DEFAULT_FEATURE_VI_OPTIMIZE_CURSOR
bool
default y
config BUSYBOX_DEFAULT_AWK
bool
default y
config BUSYBOX_DEFAULT_FEATURE_AWK_LIBM
bool
default y
config BUSYBOX_DEFAULT_CMP
bool
default y
config BUSYBOX_DEFAULT_DIFF
bool
default n
config BUSYBOX_DEFAULT_FEATURE_DIFF_LONG_OPTIONS
bool
default n
config BUSYBOX_DEFAULT_FEATURE_DIFF_DIR
bool
default n
config BUSYBOX_DEFAULT_ED
bool
default n
config BUSYBOX_DEFAULT_SED
bool
default y
config BUSYBOX_DEFAULT_FEATURE_ALLOW_EXEC
bool
default y
@ -1132,6 +1162,9 @@ config BUSYBOX_DEFAULT_GETTY
config BUSYBOX_DEFAULT_LOGIN
bool
default n
config BUSYBOX_DEFAULT_LOGIN_SESSION_AS_CHILD
bool
default n
config BUSYBOX_DEFAULT_PAM
bool
default n
@ -1156,6 +1189,9 @@ config BUSYBOX_DEFAULT_CRYPTPW
config BUSYBOX_DEFAULT_CHPASSWD
bool
default n
config BUSYBOX_DEFAULT_FEATURE_DEFAULT_PASSWD_ALGO
string
default "md5"
config BUSYBOX_DEFAULT_SU
bool
default n
@ -1255,6 +1291,27 @@ config BUSYBOX_DEFAULT_DEFAULT_DEPMOD_FILE
config BUSYBOX_DEFAULT_BLOCKDEV
bool
default n
config BUSYBOX_DEFAULT_FSTRIM
bool
default n
config BUSYBOX_DEFAULT_MDEV
bool
default n
config BUSYBOX_DEFAULT_FEATURE_MDEV_CONF
bool
default n
config BUSYBOX_DEFAULT_FEATURE_MDEV_RENAME
bool
default n
config BUSYBOX_DEFAULT_FEATURE_MDEV_RENAME_REGEXP
bool
default n
config BUSYBOX_DEFAULT_FEATURE_MDEV_EXEC
bool
default n
config BUSYBOX_DEFAULT_FEATURE_MDEV_LOAD_FIRMWARE
bool
default n
config BUSYBOX_DEFAULT_REV
bool
default n
@ -1384,24 +1441,6 @@ config BUSYBOX_DEFAULT_LSPCI
config BUSYBOX_DEFAULT_LSUSB
bool
default n
config BUSYBOX_DEFAULT_MDEV
bool
default n
config BUSYBOX_DEFAULT_FEATURE_MDEV_CONF
bool
default n
config BUSYBOX_DEFAULT_FEATURE_MDEV_RENAME
bool
default n
config BUSYBOX_DEFAULT_FEATURE_MDEV_RENAME_REGEXP
bool
default n
config BUSYBOX_DEFAULT_FEATURE_MDEV_EXEC
bool
default n
config BUSYBOX_DEFAULT_FEATURE_MDEV_LOAD_FIRMWARE
bool
default n
config BUSYBOX_DEFAULT_MKSWAP
bool
default y
@ -1489,13 +1528,19 @@ config BUSYBOX_DEFAULT_FEATURE_MTAB_SUPPORT
config BUSYBOX_DEFAULT_VOLUMEID
bool
default n
config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_EXT
config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_BTRFS
bool
default n
config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_BTRFS
config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_CRAMFS
bool
default n
config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_REISERFS
config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_EXFAT
bool
default n
config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_EXT
bool
default n
config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_F2FS
bool
default n
config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_FAT
@ -1504,40 +1549,46 @@ config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_FAT
config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_HFS
bool
default n
config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_ISO9660
bool
default n
config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_JFS
bool
default n
config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_XFS
config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_LINUXRAID
bool
default n
config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_NTFS
config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_LINUXSWAP
bool
default n
config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_ISO9660
config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_LUKS
bool
default n
config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_UDF
config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_NILFS
bool
default n
config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_LUKS
config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_NTFS
bool
default n
config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_LINUXSWAP
config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_OCFS2
bool
default n
config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_CRAMFS
config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_REISERFS
bool
default n
config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_ROMFS
bool
default n
config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_SQUASHFS
bool
default n
config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_SYSV
bool
default n
config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_OCFS2
config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_UDF
bool
default n
config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_LINUXRAID
config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_XFS
bool
default n
config BUSYBOX_DEFAULT_CONSPY
@ -1579,6 +1630,9 @@ config BUSYBOX_DEFAULT_NANDWRITE
config BUSYBOX_DEFAULT_NANDDUMP
bool
default n
config BUSYBOX_DEFAULT_RFKILL
bool
default n
config BUSYBOX_DEFAULT_SETSERIAL
bool
default n
@ -1600,6 +1654,9 @@ config BUSYBOX_DEFAULT_UBIRSVOL
config BUSYBOX_DEFAULT_UBIUPDATEVOL
bool
default n
config BUSYBOX_DEFAULT_WALL
bool
default n
config BUSYBOX_DEFAULT_ADJTIMEX
bool
default n
@ -1656,7 +1713,7 @@ config BUSYBOX_DEFAULT_FEATURE_CROND_CALL_SENDMAIL
default n
config BUSYBOX_DEFAULT_FEATURE_CROND_DIR
string
default "/etc"
default "/var/spool/cron"
config BUSYBOX_DEFAULT_CRONTAB
bool
default y
@ -1771,9 +1828,6 @@ config BUSYBOX_DEFAULT_RAIDAUTORUN
config BUSYBOX_DEFAULT_READAHEAD
bool
default n
config BUSYBOX_DEFAULT_RFKILL
bool
default n
config BUSYBOX_DEFAULT_RUNLEVEL
bool
default n
@ -1804,9 +1858,6 @@ config BUSYBOX_DEFAULT_TTYSIZE
config BUSYBOX_DEFAULT_VOLNAME
bool
default n
config BUSYBOX_DEFAULT_WALL
bool
default n
config BUSYBOX_DEFAULT_WATCHDOG
bool
default n
@ -2152,6 +2203,9 @@ config BUSYBOX_DEFAULT_TUNCTL
config BUSYBOX_DEFAULT_FEATURE_TUNCTL_UG
bool
default n
config BUSYBOX_DEFAULT_UDHCPC6
bool
default n
config BUSYBOX_DEFAULT_UDHCPD
bool
default n
@ -2254,6 +2308,9 @@ config BUSYBOX_DEFAULT_SENDMAIL
config BUSYBOX_DEFAULT_IOSTAT
bool
default n
config BUSYBOX_DEFAULT_LSOF
bool
default n
config BUSYBOX_DEFAULT_MPSTAT
bool
default n
@ -2275,6 +2332,27 @@ config BUSYBOX_DEFAULT_PWDX
config BUSYBOX_DEFAULT_SMEMCAP
bool
default n
config BUSYBOX_DEFAULT_TOP
bool
default y
config BUSYBOX_DEFAULT_FEATURE_TOP_CPU_USAGE_PERCENTAGE
bool
default y
config BUSYBOX_DEFAULT_FEATURE_TOP_CPU_GLOBAL_PERCENTS
bool
default y
config BUSYBOX_DEFAULT_FEATURE_TOP_SMP_CPU
bool
default n
config BUSYBOX_DEFAULT_FEATURE_TOP_DECIMALS
bool
default n
config BUSYBOX_DEFAULT_FEATURE_TOP_SMP_PROCESS
bool
default n
config BUSYBOX_DEFAULT_FEATURE_TOPMEM
bool
default n
config BUSYBOX_DEFAULT_UPTIME
bool
default y
@ -2317,6 +2395,9 @@ config BUSYBOX_DEFAULT_PS
config BUSYBOX_DEFAULT_FEATURE_PS_WIDE
bool
default y
config BUSYBOX_DEFAULT_FEATURE_PS_LONG
bool
default n
config BUSYBOX_DEFAULT_FEATURE_PS_TIME
bool
default n
@ -2332,27 +2413,6 @@ config BUSYBOX_DEFAULT_RENICE
config BUSYBOX_DEFAULT_BB_SYSCTL
bool
default y
config BUSYBOX_DEFAULT_TOP
bool
default y
config BUSYBOX_DEFAULT_FEATURE_TOP_CPU_USAGE_PERCENTAGE
bool
default y
config BUSYBOX_DEFAULT_FEATURE_TOP_CPU_GLOBAL_PERCENTS
bool
default y
config BUSYBOX_DEFAULT_FEATURE_TOP_SMP_CPU
bool
default n
config BUSYBOX_DEFAULT_FEATURE_TOP_DECIMALS
bool
default n
config BUSYBOX_DEFAULT_FEATURE_TOP_SMP_PROCESS
bool
default n
config BUSYBOX_DEFAULT_FEATURE_TOPMEM
bool
default n
config BUSYBOX_DEFAULT_FEATURE_SHOW_THREADS
bool
default n
@ -2599,6 +2659,9 @@ config BUSYBOX_DEFAULT_LOGREAD
config BUSYBOX_DEFAULT_FEATURE_LOGREAD_REDUCED_LOCKING
bool
default n
config BUSYBOX_DEFAULT_FEATURE_KMSG_SYSLOG
bool
default n
config BUSYBOX_DEFAULT_KLOGD
bool
default n

@ -8,14 +8,14 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=busybox
PKG_VERSION:=1.19.4
PKG_RELEASE:=7
PKG_VERSION:=1.22.1
PKG_RELEASE:=1
PKG_FLAGS:=essential
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=http://www.busybox.net/downloads \
http://distfiles.gentoo.org/distfiles/
PKG_MD5SUM:=9c0cae5a0379228e7b55e5b29528df8e
PKG_MD5SUM:=337d1a15ab1cb1d4ed423168b1eb7d7e
PKG_BUILD_DEPENDS:=BUSYBOX_USE_LIBRPC:librpc
PKG_BUILD_PARALLEL:=1

@ -82,20 +82,21 @@ config BUSYBOX_CONFIG_FEATURE_BUFFERS_GO_IN_BSS
endchoice
config BUSYBOX_CONFIG_SHOW_USAGE
bool "Show terse applet usage messages"
bool "Show applet usage messages"
default BUSYBOX_DEFAULT_SHOW_USAGE
help
All BusyBox applets will show help messages when invoked with
wrong arguments. You can turn off printing these terse usage
messages if you say no here.
This will save you up to 7k.
Enabling this option, BusyBox applets will show terse help messages
when invoked with wrong arguments.
If you do not want to show any (helpful) usage message when
issuing wrong command syntax, you can say 'N' here,
saving approximately 7k.
config BUSYBOX_CONFIG_FEATURE_VERBOSE_USAGE
bool "Show verbose applet usage messages"
default BUSYBOX_DEFAULT_FEATURE_VERBOSE_USAGE
depends on BUSYBOX_CONFIG_SHOW_USAGE
help
All BusyBox applets will show more verbose help messages when
All BusyBox applets will show verbose help messages when
busybox is invoked with --help. This will add a lot of text to the
busybox binary. In the default configuration, this will add about
13k, but it can add much more depending on your configuration.
@ -105,8 +106,8 @@ config BUSYBOX_CONFIG_FEATURE_COMPRESS_USAGE
default BUSYBOX_DEFAULT_FEATURE_COMPRESS_USAGE
depends on BUSYBOX_CONFIG_SHOW_USAGE
help
Store usage messages in compressed form, uncompress them on-the-fly
when <applet> --help is called.
Store usage messages in .bz compressed form, uncompress them
on-the-fly when <applet> --help is called.
If you have a really tiny busybox with few applets enabled (and
bunzip2 isn't one of them), the overhead of the decompressor might
@ -159,12 +160,13 @@ config BUSYBOX_CONFIG_UNICODE_USING_LOCALE
Internal implementation is smaller.
config BUSYBOX_CONFIG_FEATURE_CHECK_UNICODE_IN_ENV
bool "Check $LANG environment variable"
bool "Check $LC_ALL, $LC_CTYPE and $LANG environment variables"
default BUSYBOX_DEFAULT_FEATURE_CHECK_UNICODE_IN_ENV
depends on BUSYBOX_CONFIG_UNICODE_SUPPORT && !BUSYBOX_CONFIG_UNICODE_USING_LOCALE
help
With this option on, Unicode support is activated
only if LANG variable has the value of the form "xxxx.utf8"
only if locale-related variables have the value of the form
"xxxx.utf8"
Otherwise, Unicode support will be always enabled and active.
@ -308,7 +310,18 @@ config BUSYBOX_CONFIG_FEATURE_PIDFILE
default BUSYBOX_DEFAULT_FEATURE_PIDFILE
help
This option makes some applets (e.g. crond, syslogd, inetd) write
a pidfile in /var/run. Some applications rely on them.
a pidfile at the configured PID_FILE_PATH. It has no effect
on applets which require pidfiles to run.
config BUSYBOX_CONFIG_PID_FILE_PATH
string "Path to directory for pidfile"
default BUSYBOX_DEFAULT_PID_FILE_PATH
depends on BUSYBOX_CONFIG_FEATURE_PIDFILE
help
This is the default path where pidfiles are created. Applets which
allow you to set the pidfile path on the command line will override
this value. The option has no effect on applets that require you to
specify a pidfile path.
config BUSYBOX_CONFIG_FEATURE_SUID
bool "Support for SUID/SGID handling"
@ -319,7 +332,7 @@ config BUSYBOX_CONFIG_FEATURE_SUID
root-level operations even when run by ordinary users
(for example, mounting of user mounts in fstab needs this).
Busybox will automatically drop priviledges for applets
Busybox will automatically drop privileges for applets
that don't need root access.
If you are really paranoid and don't want to do this, build two
@ -598,12 +611,39 @@ config BUSYBOX_CONFIG_CROSS_COMPILER_PREFIX
Native builds leave this empty.
config BUSYBOX_CONFIG_SYSROOT
string "Path to sysroot"
default BUSYBOX_DEFAULT_SYSROOT
help
If you want to build BusyBox with a cross compiler, then you
might also need to specify where /usr/include and /usr/lib
will be found.
For example, BusyBox can be built against an installed
Android NDK, platform version 9, for ARM ABI with
CONFIG_SYSROOT=/opt/android-ndk/platforms/android-9/arch-arm
Native builds leave this empty.
config BUSYBOX_CONFIG_EXTRA_CFLAGS
string "Additional CFLAGS"
default BUSYBOX_DEFAULT_EXTRA_CFLAGS
help
Additional CFLAGS to pass to the compiler verbatim.
config BUSYBOX_CONFIG_EXTRA_LDFLAGS
string "Additional LDFLAGS"
default BUSYBOX_DEFAULT_EXTRA_LDFLAGS
help
Additional LDFLAGS to pass to the linker verbatim.
config BUSYBOX_CONFIG_EXTRA_LDLIBS
string "Additional LDLIBS"
default BUSYBOX_DEFAULT_EXTRA_LDLIBS
help
Additional LDLIBS to pass to the linker with -l.
endmenu
menu 'Debugging Options'

@ -6,8 +6,6 @@
menu "Archival Utilities"
config BUSYBOX_CONFIG_FEATURE_SEAMLESS_XZ
bool "Make tar, rpm, modprobe etc understand .xz data"
default BUSYBOX_DEFAULT_FEATURE_SEAMLESS_XZ
@ -33,10 +31,10 @@ config BUSYBOX_CONFIG_FEATURE_SEAMLESS_GZ
Make tar, rpm, modprobe etc understand .gz data.
config BUSYBOX_CONFIG_FEATURE_SEAMLESS_Z
bool "Make tar and gunzip understand .Z data"
bool "tar, rpm, modprobe etc understand .Z data"
default BUSYBOX_DEFAULT_FEATURE_SEAMLESS_Z
help
Make tar and gunzip understand .Z data.
Make tar, rpm, modprobe etc understand .Z data.
config BUSYBOX_CONFIG_AR
bool "ar"
@ -77,7 +75,19 @@ config BUSYBOX_CONFIG_FEATURE_AR_CREATE
depends on BUSYBOX_CONFIG_AR
help
This enables archive creation (-c and -r) with busybox ar.
config BUSYBOX_CONFIG_UNCOMPRESS
bool "uncompress"
default BUSYBOX_DEFAULT_UNCOMPRESS
help
uncompress is used to decompress archives created by compress.
Not much used anymore, replaced by gzip/gunzip.
config BUSYBOX_CONFIG_GUNZIP
bool "gunzip"
default BUSYBOX_DEFAULT_GUNZIP
help
gunzip is used to decompress archives created by gzip.
You can use the `-t' option to test the integrity of
an archive, without decompressing it.
config BUSYBOX_CONFIG_BUNZIP2
bool "bunzip2"
default BUSYBOX_DEFAULT_BUNZIP2
@ -90,7 +100,46 @@ config BUSYBOX_CONFIG_BUNZIP2
Unless you have a specific application which requires bunzip2, you
should probably say N here.
config BUSYBOX_CONFIG_UNLZMA
bool "unlzma"
default BUSYBOX_DEFAULT_UNLZMA
help
unlzma is a compression utility using the Lempel-Ziv-Markov chain
compression algorithm, and range coding. Compression
is generally considerably better than that achieved by the bzip2
compressors.
The BusyBox unlzma applet is limited to decompression only.
On an x86 system, this applet adds about 4K.
config BUSYBOX_CONFIG_FEATURE_LZMA_FAST
bool "Optimize unlzma for speed"
default BUSYBOX_DEFAULT_FEATURE_LZMA_FAST
depends on BUSYBOX_CONFIG_UNLZMA
help
This option reduces decompression time by about 25% at the cost of
a 1K bigger binary.
config BUSYBOX_CONFIG_LZMA
bool "Provide lzma alias which supports only unpacking"
default BUSYBOX_DEFAULT_LZMA
depends on BUSYBOX_CONFIG_UNLZMA
help
Enable this option if you want commands like "lzma -d" to work.
IOW: you'll get lzma applet, but it will always require -d option.
config BUSYBOX_CONFIG_UNXZ
bool "unxz"
default BUSYBOX_DEFAULT_UNXZ
help
unxz is a unlzma successor.
config BUSYBOX_CONFIG_XZ
bool "Provide xz alias which supports only unpacking"
default BUSYBOX_DEFAULT_XZ
depends on BUSYBOX_CONFIG_UNXZ
help
Enable this option if you want commands like "xz -d" to work.
IOW: you'll get xz applet, but it will always require -d option.
config BUSYBOX_CONFIG_BZIP2
bool "bzip2"
default BUSYBOX_DEFAULT_BZIP2
@ -103,7 +152,6 @@ config BUSYBOX_CONFIG_BZIP2
Unless you have a specific application which requires bzip2, you
should probably say N here.
config BUSYBOX_CONFIG_CPIO
bool "cpio"
default BUSYBOX_DEFAULT_CPIO
@ -132,7 +180,6 @@ config BUSYBOX_CONFIG_FEATURE_CPIO_P
depends on BUSYBOX_CONFIG_FEATURE_CPIO_O
help
Passthrough mode. Rarely used.
config BUSYBOX_CONFIG_DPKG
bool "dpkg"
default BUSYBOX_DEFAULT_DPKG
@ -143,7 +190,6 @@ config BUSYBOX_CONFIG_DPKG
This implementation of dpkg has a number of limitations,
you should use the official dpkg if possible.
config BUSYBOX_CONFIG_DPKG_DEB
bool "dpkg_deb"
default BUSYBOX_DEFAULT_DPKG_DEB
@ -165,15 +211,6 @@ config BUSYBOX_CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY
"ar -p <deb> data.tar.gz | tar -zx". However it saves space as none
of the extra dpkg-deb, ar or tar options are needed, they are linked
to internally.
config BUSYBOX_CONFIG_GUNZIP
bool "gunzip"
default BUSYBOX_DEFAULT_GUNZIP
help
gunzip is used to decompress archives created by gzip.
You can use the `-t' option to test the integrity of
an archive, without decompressing it.
config BUSYBOX_CONFIG_GZIP
bool "gzip"
default BUSYBOX_DEFAULT_GZIP
@ -188,6 +225,17 @@ config BUSYBOX_CONFIG_FEATURE_GZIP_LONG_OPTIONS
help
Enable use of long options, increases size by about 106 Bytes
config BUSYBOX_CONFIG_GZIP_FAST
int "Trade memory for gzip speed (0:small,slow - 2:fast,big)"
default BUSYBOX_DEFAULT_GZIP_FAST
range 0 2
depends on BUSYBOX_CONFIG_GZIP
help
Enable big memory options for gzip.
0: small buffers, small hash-tables
1: larger buffers, larger hash-tables
2: larger buffers, largest hash-tables
Larger models may give slightly better compression
config BUSYBOX_CONFIG_LZOP
bool "lzop"
default BUSYBOX_DEFAULT_LZOP
@ -202,19 +250,16 @@ config BUSYBOX_CONFIG_LZOP_COMPR_HIGH
High levels (7,8,9) of lzop compression. These levels
are actually slower than gzip at equivalent compression ratios
and take up 3.2K of code.
config BUSYBOX_CONFIG_RPM2CPIO
bool "rpm2cpio"
default BUSYBOX_DEFAULT_RPM2CPIO
help
Converts a RPM file into a CPIO archive.
config BUSYBOX_CONFIG_RPM
bool "rpm"
default BUSYBOX_DEFAULT_RPM
help
Mini RPM applet - queries and extracts RPM packages.
config BUSYBOX_CONFIG_RPM2CPIO
bool "rpm2cpio"
default BUSYBOX_DEFAULT_RPM2CPIO
help
Converts a RPM file into a CPIO archive.
config BUSYBOX_CONFIG_TAR
bool "tar"
default BUSYBOX_DEFAULT_TAR
@ -314,59 +359,6 @@ config BUSYBOX_CONFIG_FEATURE_TAR_SELINUX
help
With this option busybox supports restoring SELinux labels
when extracting files from tar archives.
config BUSYBOX_CONFIG_UNCOMPRESS
bool "uncompress"
default BUSYBOX_DEFAULT_UNCOMPRESS
help
uncompress is used to decompress archives created by compress.
Not much used anymore, replaced by gzip/gunzip.
config BUSYBOX_CONFIG_UNLZMA
bool "unlzma"
default BUSYBOX_DEFAULT_UNLZMA
help
unlzma is a compression utility using the Lempel-Ziv-Markov chain
compression algorithm, and range coding. Compression
is generally considerably better than that achieved by the bzip2
compressors.
The BusyBox unlzma applet is limited to de-compression only.
On an x86 system, this applet adds about 4K.
Unless you have a specific application which requires unlzma, you
should probably say N here.
config BUSYBOX_CONFIG_FEATURE_LZMA_FAST
bool "Optimize unlzma for speed"
default BUSYBOX_DEFAULT_FEATURE_LZMA_FAST
depends on BUSYBOX_CONFIG_UNLZMA
help
This option reduces decompression time by about 25% at the cost of
a 1K bigger binary.
config BUSYBOX_CONFIG_LZMA
bool "Provide lzma alias which supports only unpacking"
default BUSYBOX_DEFAULT_LZMA
depends on BUSYBOX_CONFIG_UNLZMA
help
Enable this option if you want commands like "lzma -d" to work.
IOW: you'll get lzma applet, but it will always require -d option.
config BUSYBOX_CONFIG_UNXZ
bool "unxz"
default BUSYBOX_DEFAULT_UNXZ
help
unxz is a unlzma successor.
config BUSYBOX_CONFIG_XZ
bool "Provide xz alias which supports only unpacking"
default BUSYBOX_DEFAULT_XZ
depends on BUSYBOX_CONFIG_UNXZ
help
Enable this option if you want commands like "xz -d" to work.
IOW: you'll get xz applet, but it will always require -d option.
config BUSYBOX_CONFIG_UNZIP
bool "unzip"
default BUSYBOX_DEFAULT_UNZIP

@ -7,7 +7,6 @@
menu "Console Utilities"
config BUSYBOX_CONFIG_CHVT
bool "chvt"
default BUSYBOX_DEFAULT_CHVT

@ -58,6 +58,12 @@ config BUSYBOX_CONFIG_FEATURE_DATE_COMPAT
With this option off, 'date DATE' is 'date -s DATE' support
the same format. With it on, 'date DATE' additionally supports
MMDDhhmm[[YY]YY][.ss] format.
config BUSYBOX_CONFIG_HOSTID
bool "hostid"
default BUSYBOX_DEFAULT_HOSTID
help
hostid prints the numeric identifier (in hexadecimal) for
the current host.
config BUSYBOX_CONFIG_ID
bool "id"
default BUSYBOX_DEFAULT_ID
@ -88,6 +94,21 @@ config BUSYBOX_CONFIG_TOUCH
help
touch is used to create or change the access and/or
modification timestamp of specified files.
config BUSYBOX_CONFIG_FEATURE_TOUCH_NODEREF
bool "Add support for -h"
default BUSYBOX_DEFAULT_FEATURE_TOUCH_NODEREF
depends on BUSYBOX_CONFIG_TOUCH
help
Enable touch to have the -h option.
This requires libc support for lutimes() function.
config BUSYBOX_CONFIG_FEATURE_TOUCH_SUSV3
bool "Add support for SUSV3 features (-d -t -r)"
default BUSYBOX_DEFAULT_FEATURE_TOUCH_SUSV3
depends on BUSYBOX_CONFIG_TOUCH
help
Enable touch to use a reference file or a given date/time argument.
config BUSYBOX_CONFIG_TR
bool "tr"
default BUSYBOX_DEFAULT_TR
@ -393,13 +414,6 @@ config BUSYBOX_CONFIG_FEATURE_FANCY_HEAD
help
This enables the head options (-c, -q, and -v).
config BUSYBOX_CONFIG_HOSTID
bool "hostid"
default BUSYBOX_DEFAULT_HOSTID
help
hostid prints the numeric identifier (in hexadecimal) for
the current host.
config BUSYBOX_CONFIG_INSTALL
bool "install"
default BUSYBOX_DEFAULT_INSTALL
@ -645,6 +659,12 @@ config BUSYBOX_CONFIG_SHA512SUM
help
Compute and check SHA512 message digest
config BUSYBOX_CONFIG_SHA3SUM
bool "sha3sum"
default BUSYBOX_DEFAULT_SHA3SUM
help
Compute and check SHA3 (512-bit) message digest
config BUSYBOX_CONFIG_SLEEP
bool "sleep"
default BUSYBOX_DEFAULT_SLEEP
@ -897,13 +917,13 @@ config BUSYBOX_CONFIG_FEATURE_HUMAN_READABLE
help
Allow df, du, and ls to have human readable output.
comment "Common options for md5sum, sha1sum, sha256sum, sha512sum"
depends on BUSYBOX_CONFIG_MD5SUM || BUSYBOX_CONFIG_SHA1SUM || BUSYBOX_CONFIG_SHA256SUM || BUSYBOX_CONFIG_SHA512SUM
comment "Common options for md5sum, sha1sum, sha256sum, sha512sum, sha3sum"
depends on BUSYBOX_CONFIG_MD5SUM || BUSYBOX_CONFIG_SHA1SUM || BUSYBOX_CONFIG_SHA256SUM || BUSYBOX_CONFIG_SHA512SUM || BUSYBOX_CONFIG_SHA3SUM
config BUSYBOX_CONFIG_FEATURE_MD5_SHA1_SUM_CHECK
bool "Enable -c, -s and -w options"
default BUSYBOX_DEFAULT_FEATURE_MD5_SHA1_SUM_CHECK
depends on BUSYBOX_CONFIG_MD5SUM || BUSYBOX_CONFIG_SHA1SUM || BUSYBOX_CONFIG_SHA256SUM || BUSYBOX_CONFIG_SHA512SUM
depends on BUSYBOX_CONFIG_MD5SUM || BUSYBOX_CONFIG_SHA1SUM || BUSYBOX_CONFIG_SHA256SUM || BUSYBOX_CONFIG_SHA512SUM || BUSYBOX_CONFIG_SHA3SUM
help
Enabling the -c options allows files to be checked
against pre-calculated hash values.

@ -7,7 +7,6 @@
menu "Debian Utilities"
config BUSYBOX_CONFIG_MKTEMP
bool "mktemp"
default BUSYBOX_DEFAULT_MKTEMP

@ -7,7 +7,6 @@
menu "Linux Ext2 FS Progs"
config BUSYBOX_CONFIG_CHATTR
bool "chattr"
default BUSYBOX_DEFAULT_CHATTR

@ -7,7 +7,6 @@
menu "Linux Ext2 FS Progs"
config BUSYBOX_CONFIG_CHATTR
bool "chattr"
default BUSYBOX_DEFAULT_CHATTR

@ -6,11 +6,77 @@
menu "Editors"
config BUSYBOX_CONFIG_AWK
bool "awk"
default BUSYBOX_DEFAULT_AWK
help
Awk is used as a pattern scanning and processing language. This is
the BusyBox implementation of that programming language.
config BUSYBOX_CONFIG_FEATURE_AWK_LIBM
bool "Enable math functions (requires libm)"
default BUSYBOX_DEFAULT_FEATURE_AWK_LIBM
depends on BUSYBOX_CONFIG_AWK
help
Enable math functions of the Awk programming language.
NOTE: This will require libm to be present for linking.
config BUSYBOX_CONFIG_FEATURE_AWK_GNU_EXTENSIONS
bool "Enable a few GNU extensions"
default BUSYBOX_DEFAULT_FEATURE_AWK_GNU_EXTENSIONS
depends on BUSYBOX_CONFIG_AWK
help
Enable a few features from gawk:
* command line option -e AWK_PROGRAM
* simultaneous use of -f and -e on the command line.
This enables the use of awk library files.
Ex: awk -f mylib.awk -e '{print myfunction($1);}' ...
config BUSYBOX_CONFIG_CMP
bool "cmp"
default BUSYBOX_DEFAULT_CMP
help
cmp is used to compare two files and returns the result
to standard output.
config BUSYBOX_CONFIG_DIFF
bool "diff"
default BUSYBOX_DEFAULT_DIFF
help
diff compares two files or directories and outputs the
differences between them in a form that can be given to
the patch command.
config BUSYBOX_CONFIG_FEATURE_DIFF_LONG_OPTIONS
bool "Enable long options"
default BUSYBOX_DEFAULT_FEATURE_DIFF_LONG_OPTIONS
depends on BUSYBOX_CONFIG_DIFF && BUSYBOX_CONFIG_LONG_OPTS
help
Enable use of long options.
config BUSYBOX_CONFIG_FEATURE_DIFF_DIR
bool "Enable directory support"
default BUSYBOX_DEFAULT_FEATURE_DIFF_DIR
depends on BUSYBOX_CONFIG_DIFF
help
This option enables support for directory and subdirectory
comparison.
config BUSYBOX_CONFIG_ED
bool "ed"
default BUSYBOX_DEFAULT_ED
help
The original 1970's Unix text editor, from the days of teletypes.
Small, simple, evil. Part of SUSv3. If you're not already using
this, you don't need it.
config BUSYBOX_CONFIG_PATCH
bool "patch"
default BUSYBOX_DEFAULT_PATCH
help
Apply a unified diff formatted patch.
config BUSYBOX_CONFIG_SED
bool "sed"
default BUSYBOX_DEFAULT_SED
help
sed is used to perform text transformations on a file
or input from a pipeline.
config BUSYBOX_CONFIG_VI
bool "vi"
default BUSYBOX_DEFAULT_VI
@ -127,74 +193,6 @@ config BUSYBOX_CONFIG_FEATURE_VI_ASK_TERMINAL
This is not clean but helps a lot on serial lines and such.
config BUSYBOX_CONFIG_FEATURE_VI_OPTIMIZE_CURSOR
bool "Optimize cursor movement"
default BUSYBOX_DEFAULT_FEATURE_VI_OPTIMIZE_CURSOR
depends on BUSYBOX_CONFIG_VI
help
This will make the cursor movement faster, but requires more memory
and it makes the applet a tiny bit larger.
config BUSYBOX_CONFIG_AWK
bool "awk"
default BUSYBOX_DEFAULT_AWK
help
Awk is used as a pattern scanning and processing language. This is
the BusyBox implementation of that programming language.
config BUSYBOX_CONFIG_FEATURE_AWK_LIBM
bool "Enable math functions (requires libm)"
default BUSYBOX_DEFAULT_FEATURE_AWK_LIBM
depends on BUSYBOX_CONFIG_AWK
help
Enable math functions of the Awk programming language.
NOTE: This will require libm to be present for linking.
config BUSYBOX_CONFIG_CMP
bool "cmp"
default BUSYBOX_DEFAULT_CMP
help
cmp is used to compare two files and returns the result
to standard output.
config BUSYBOX_CONFIG_DIFF
bool "diff"
default BUSYBOX_DEFAULT_DIFF
help
diff compares two files or directories and outputs the
differences between them in a form that can be given to
the patch command.
config BUSYBOX_CONFIG_FEATURE_DIFF_LONG_OPTIONS
bool "Enable long options"
default BUSYBOX_DEFAULT_FEATURE_DIFF_LONG_OPTIONS
depends on BUSYBOX_CONFIG_DIFF && BUSYBOX_CONFIG_LONG_OPTS
help
Enable use of long options.
config BUSYBOX_CONFIG_FEATURE_DIFF_DIR
bool "Enable directory support"
default BUSYBOX_DEFAULT_FEATURE_DIFF_DIR
depends on BUSYBOX_CONFIG_DIFF
help
This option enables support for directory and subdirectory
comparison.
config BUSYBOX_CONFIG_ED
bool "ed"
default BUSYBOX_DEFAULT_ED
help
The original 1970's Unix text editor, from the days of teletypes.
Small, simple, evil. Part of SUSv3. If you're not already using
this, you don't need it.
config BUSYBOX_CONFIG_SED
bool "sed"
default BUSYBOX_DEFAULT_SED
help
sed is used to perform text transformations on a file
or input from a pipeline.
config BUSYBOX_CONFIG_FEATURE_ALLOW_EXEC
bool "Allow vi and awk to execute shell commands"
default BUSYBOX_DEFAULT_FEATURE_ALLOW_EXEC

@ -28,9 +28,9 @@ config BUSYBOX_CONFIG_PASSWORD_MINLEN
help
Minimum allowable password length.
config BUSYBOX_CONFIG_MD5_SIZE_VS_SPEED
config BUSYBOX_CONFIG_MD5_SMALL
int "MD5: Trade bytes for speed (0:fast, 3:slow)"
default BUSYBOX_DEFAULT_MD5_SIZE_VS_SPEED
default BUSYBOX_DEFAULT_MD5_SMALL
range 0 3
help
Trade binary size versus speed for the md5sum algorithm.
@ -42,6 +42,16 @@ config BUSYBOX_CONFIG_MD5_SIZE_VS_SPEED
2 3.0 5088
3 (smallest) 5.1 4912
config BUSYBOX_CONFIG_SHA3_SMALL
int "SHA3: Trade bytes for speed (0:fast, 1:slow)"
default BUSYBOX_DEFAULT_SHA3_SMALL
range 0 1
help
Trade binary size versus speed for the sha3sum algorithm.
SHA3_SMALL=0 compared to SHA3_SMALL=1 (approximate):
64-bit x86: +270 bytes of code, 45% faster
32-bit x86: +450 bytes of code, 75% faster
config BUSYBOX_CONFIG_FEATURE_FAST_TOP
bool "Faster /proc scanning code (+100 bytes)"
default BUSYBOX_DEFAULT_FEATURE_FAST_TOP
@ -108,6 +118,13 @@ config BUSYBOX_CONFIG_FEATURE_EDITING_SAVEHISTORY
help
Enable history saving in shells.
config BUSYBOX_CONFIG_FEATURE_EDITING_SAVE_ON_EXIT
bool "Save history on shell exit, not after every command"
default BUSYBOX_DEFAULT_FEATURE_EDITING_SAVE_ON_EXIT
depends on BUSYBOX_CONFIG_FEATURE_EDITING_SAVEHISTORY
help
Save history on shell exit, not after every command.
config BUSYBOX_CONFIG_FEATURE_REVERSE_SEARCH
bool "Reverse history search"
default BUSYBOX_DEFAULT_FEATURE_REVERSE_SEARCH
@ -198,8 +215,8 @@ config BUSYBOX_CONFIG_FEATURE_SKIP_ROOTFS
However, some systems do not mount anything on /.
If you need to configure busybox for one of these systems,
you may find useful to turn this option off to make df show
initramfs statistic.
you may find it useful to turn this option off to make df show
initramfs statistics.
Otherwise, choose Y.

@ -216,6 +216,17 @@ config BUSYBOX_CONFIG_LOGIN
Note that Busybox binary must be setuid root for this applet to
work properly.
config BUSYBOX_CONFIG_LOGIN_SESSION_AS_CHILD
bool "Run logged in session in a child process"
default BUSYBOX_DEFAULT_LOGIN_SESSION_AS_CHILD if BUSYBOX_CONFIG_PAM
depends on BUSYBOX_CONFIG_LOGIN
help
Run the logged in session in a child process. This allows
login to clean up things such as utmp entries or PAM sessions
when the login session is complete. If you use PAM, you
almost always would want this to be set to Y, else PAM session
will not be cleaned up.
config BUSYBOX_CONFIG_PAM
bool "Support for PAM (Pluggable Authentication Modules)"
default BUSYBOX_DEFAULT_PAM
@ -283,6 +294,13 @@ config BUSYBOX_CONFIG_CHPASSWD
Reads a file of user name and password pairs from standard input
and uses this information to update a group of existing users.
config BUSYBOX_CONFIG_FEATURE_DEFAULT_PASSWD_ALGO
string "Default password encryption method (passwd -a, cryptpw -m parameter)"
default BUSYBOX_DEFAULT_FEATURE_DEFAULT_PASSWD_ALGO
depends on BUSYBOX_CONFIG_PASSWD || BUSYBOX_CONFIG_CRYPTPW
help
Possible choices are "d[es]", "m[d5]", "s[ha256]" or "sha512".
config BUSYBOX_CONFIG_SU
bool "su"
default BUSYBOX_DEFAULT_SU

@ -2,7 +2,6 @@
menu "Mail Utilities"
config BUSYBOX_CONFIG_MAKEMIME
bool "makemime"
default BUSYBOX_DEFAULT_MAKEMIME

@ -36,14 +36,11 @@ config BUSYBOX_CONFIG_FEATURE_LESS_BRACKETS
brackets, facilitating programming.
config BUSYBOX_CONFIG_FEATURE_LESS_FLAGS
bool "Enable extra flags"
bool "Enable -m/-M"
default BUSYBOX_DEFAULT_FEATURE_LESS_FLAGS
depends on BUSYBOX_CONFIG_LESS
help
The extra flags provided do the following:
The -M flag enables a more sophisticated status line.
The -m flag enables a simpler status line with a percentage.
The -M/-m flag enables a more sophisticated status line.
config BUSYBOX_CONFIG_FEATURE_LESS_MARKS
bool "Enable marks"
@ -106,6 +103,18 @@ config BUSYBOX_CONFIG_NANDDUMP
select BUSYBOX_CONFIG_PLATFORM_LINUX
help
Dump the content of raw NAND chip
config BUSYBOX_CONFIG_RFKILL
bool "rfkill"
default BUSYBOX_DEFAULT_RFKILL # doesn't build on Ubuntu 9.04
select BUSYBOX_CONFIG_PLATFORM_LINUX
help
Enable/disable wireless devices.
rfkill list : list all wireless devices
rfkill list bluetooth : list all bluetooth devices
rfkill list 1 : list device corresponding to the given index
rfkill block|unblock wlan : block/unblock all wlan(wifi) devices
config BUSYBOX_CONFIG_SETSERIAL
bool "setserial"
default BUSYBOX_DEFAULT_SETSERIAL
@ -153,6 +162,12 @@ config BUSYBOX_CONFIG_UBIUPDATEVOL
select BUSYBOX_CONFIG_PLATFORM_LINUX
help
Update a UBI volume.
config BUSYBOX_CONFIG_WALL
bool "wall"
default BUSYBOX_DEFAULT_WALL
depends on BUSYBOX_CONFIG_FEATURE_UTMP
help
Write a message to all users that are logged in.
config BUSYBOX_CONFIG_ADJTIMEX
bool "adjtimex"
@ -656,18 +671,6 @@ config BUSYBOX_CONFIG_READAHEAD
As readahead(2) blocks until each file has been read, it is best to
run this applet as a background job.
config BUSYBOX_CONFIG_RFKILL
bool "rfkill"
default BUSYBOX_DEFAULT_RFKILL # doesn't build on Ubuntu 9.04
select BUSYBOX_CONFIG_PLATFORM_LINUX
help
Enable/disable wireless devices.
rfkill list : list all wireless devices
rfkill list bluetooth : list all bluetooth devices
rfkill list 1 : list device corresponding to the given index
rfkill block|unblock wlan : block/unblock all wlan(wifi) devices
config BUSYBOX_CONFIG_RUNLEVEL
bool "runlevel"
default BUSYBOX_DEFAULT_RUNLEVEL
@ -744,13 +747,6 @@ config BUSYBOX_CONFIG_VOLNAME
help
Prints a CD-ROM volume name.
config BUSYBOX_CONFIG_WALL
bool "wall"
default BUSYBOX_DEFAULT_WALL
depends on BUSYBOX_CONFIG_FEATURE_UTMP
help
Write a message to all users that are logged in.
config BUSYBOX_CONFIG_WATCHDOG
bool "watchdog"
default BUSYBOX_DEFAULT_WATCHDOG

@ -253,7 +253,7 @@ config BUSYBOX_CONFIG_FEATURE_MODUTILS_SYMBOLS
config BUSYBOX_CONFIG_DEFAULT_MODULES_DIR
string "Default directory containing modules"
default BUSYBOX_DEFAULT_DEFAULT_MODULES_DIR
depends on BUSYBOX_CONFIG_DEPMOD || BUSYBOX_CONFIG_INSMOD || BUSYBOX_CONFIG_MODPROBE || BUSYBOX_CONFIG_MODPROBE_SMALL || BUSYBOX_CONFIG_MODINFO
depends on BUSYBOX_CONFIG_DEPMOD || BUSYBOX_CONFIG_MODPROBE || BUSYBOX_CONFIG_MODPROBE_SMALL || BUSYBOX_CONFIG_MODINFO
help
Directory that contains kernel modules.
Defaults to "/lib/modules"

@ -55,7 +55,7 @@ config BUSYBOX_CONFIG_NC_SERVER
Allow netcat to act as a server.
config BUSYBOX_CONFIG_NC_EXTRA
bool "Netcat extensions (-eiw and filename)"
bool "Netcat extensions (-eiw and -f FILE)"
default BUSYBOX_DEFAULT_NC_EXTRA
depends on BUSYBOX_CONFIG_NC
help
@ -71,7 +71,7 @@ config BUSYBOX_CONFIG_NC_110_COMPAT
This option makes nc closely follow original nc-1.10.
The code is about 2.5k bigger. It enables
-s ADDR, -n, -u, -v, -o FILE, -z options, but loses
busybox-specific extensions: -f FILE and -ll.
busybox-specific extensions: -f FILE.
config BUSYBOX_CONFIG_PING
bool "ping"
default BUSYBOX_DEFAULT_PING
@ -292,14 +292,22 @@ config BUSYBOX_CONFIG_FEATURE_HTTPD_BASIC_AUTH
help
Utilizes password settings from /etc/httpd.conf for basic
authentication on a per url basis.
Example for httpd.conf file:
/adm:toor:PaSsWd
config BUSYBOX_CONFIG_FEATURE_HTTPD_AUTH_MD5
bool "Support MD5 crypted passwords for http Authentication"
default BUSYBOX_DEFAULT_FEATURE_HTTPD_AUTH_MD5
depends on BUSYBOX_CONFIG_FEATURE_HTTPD_BASIC_AUTH
help
Enables basic per URL authentication from /etc/httpd.conf
using md5 passwords.
Enables encrypted passwords, and wildcard user/passwords
in httpd.conf file.
User '*' means 'any system user name is ok',
password of '*' means 'use system password for this user'
Examples:
/adm:toor:$1$P/eKnWXS$aI1aPGxT.dJD5SzqAKWrF0
/adm:root:*
/wiki:*:*
config BUSYBOX_CONFIG_FEATURE_HTTPD_CGI
bool "Support Common Gateway Interface (CGI)"
@ -316,8 +324,8 @@ config BUSYBOX_CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR
help
This option enables support for running scripts through an
interpreter. Turn this on if you want PHP scripts to work
properly. You need to supply an additional line in your httpd
config file:
properly. You need to supply an additional line in your
httpd.conf file:
*.php:/path/to/your/php
config BUSYBOX_CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV
@ -1036,8 +1044,8 @@ config BUSYBOX_CONFIG_WGET
bool "wget"
default BUSYBOX_DEFAULT_WGET
help
wget is a utility for non-interactive download of files from HTTP,
HTTPS, and FTP servers.
wget is a utility for non-interactive download of files from HTTP
and FTP servers.
config BUSYBOX_CONFIG_FEATURE_WGET_STATUSBAR
bool "Enable a nifty process meter (+2k)"
@ -1061,16 +1069,18 @@ config BUSYBOX_CONFIG_FEATURE_WGET_LONG_OPTIONS
Support long options for the wget applet.
config BUSYBOX_CONFIG_FEATURE_WGET_TIMEOUT
bool "Enable read timeout option -T SEC"
bool "Enable timeout option -T SEC"
default BUSYBOX_DEFAULT_FEATURE_WGET_TIMEOUT
depends on BUSYBOX_CONFIG_WGET
help
Supports network read timeout for wget, so that wget will give
up and timeout when reading network data, through the -T command
line option. Currently only network data read timeout is
supported (i.e., timeout is not applied to the DNS nor TCP
connection initialization). When FEATURE_WGET_LONG_OPTIONS is
also enabled, the --timeout option will work in addition to -T.
Supports network read and connect timeouts for wget,
so that wget will give up and timeout, through the -T
command line option.
Currently only connect and network data read timeout are
supported (i.e., timeout is not applied to the DNS query). When
FEATURE_WGET_LONG_OPTIONS is also enabled, the --timeout option
will work in addition to -T.
config BUSYBOX_CONFIG_ZCIP
bool "zcip"

@ -4,7 +4,12 @@
# see scripts/kbuild/config-language.txt.
#
config BUSYBOX_CONFIG_UDHCPC6
bool "udhcp client for DHCPv6 (udhcpc6)"
default BUSYBOX_DEFAULT_UDHCPC6 # not yet ready
depends on BUSYBOX_CONFIG_FEATURE_IPV6
help
udhcpc6 is a DHCPv6 client
config BUSYBOX_CONFIG_UDHCPD
bool "udhcp server (udhcpd)"

@ -7,7 +7,6 @@
menu "Print Utilities"
config BUSYBOX_CONFIG_LPD
bool "lpd"
default BUSYBOX_DEFAULT_LPD

@ -11,6 +11,12 @@ config BUSYBOX_CONFIG_IOSTAT
default BUSYBOX_DEFAULT_IOSTAT
help
Report CPU and I/O statistics
config BUSYBOX_CONFIG_LSOF
bool "lsof"
default BUSYBOX_DEFAULT_LSOF
help
Show open files in the format of:
PID <TAB> /path/to/executable <TAB> /path/to/opened/file
config BUSYBOX_CONFIG_MPSTAT
bool "mpstat"
default BUSYBOX_DEFAULT_MPSTAT
@ -47,6 +53,59 @@ config BUSYBOX_CONFIG_SMEMCAP
help
smemcap is a tool for capturing process data for smem,
a memory usage statistic tool.
config BUSYBOX_CONFIG_TOP
bool "top"
default BUSYBOX_DEFAULT_TOP
help
The top program provides a dynamic real-time view of a running
system.
config BUSYBOX_CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE
bool "Show CPU per-process usage percentage"
default BUSYBOX_DEFAULT_FEATURE_TOP_CPU_USAGE_PERCENTAGE
depends on BUSYBOX_CONFIG_TOP
help
Make top display CPU usage for each process.
This adds about 2k.
config BUSYBOX_CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS
bool "Show CPU global usage percentage"
default BUSYBOX_DEFAULT_FEATURE_TOP_CPU_GLOBAL_PERCENTS
depends on BUSYBOX_CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE
help
Makes top display "CPU: NN% usr NN% sys..." line.
This adds about 0.5k.
config BUSYBOX_CONFIG_FEATURE_TOP_SMP_CPU
bool "SMP CPU usage display ('c' key)"
default BUSYBOX_DEFAULT_FEATURE_TOP_SMP_CPU
depends on BUSYBOX_CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS
help
Allow 'c' key to switch between individual/cumulative CPU stats
This adds about 0.5k.
config BUSYBOX_CONFIG_FEATURE_TOP_DECIMALS
bool "Show 1/10th of a percent in CPU/mem statistics"
default BUSYBOX_DEFAULT_FEATURE_TOP_DECIMALS
depends on BUSYBOX_CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE
help
Show 1/10th of a percent in CPU/mem statistics.
This adds about 0.3k.
config BUSYBOX_CONFIG_FEATURE_TOP_SMP_PROCESS
bool "Show CPU process runs on ('j' field)"
default BUSYBOX_DEFAULT_FEATURE_TOP_SMP_PROCESS
depends on BUSYBOX_CONFIG_TOP
help
Show CPU where process was last found running on.
This is the 'j' field.
config BUSYBOX_CONFIG_FEATURE_TOPMEM
bool "Topmem command ('s' key)"
default BUSYBOX_DEFAULT_FEATURE_TOPMEM
depends on BUSYBOX_CONFIG_TOP
help
Enable 's' in top (gives lots of memory info).
config BUSYBOX_CONFIG_UPTIME
bool "uptime"
default BUSYBOX_DEFAULT_UPTIME
@ -146,12 +205,20 @@ config BUSYBOX_CONFIG_PS
config BUSYBOX_CONFIG_FEATURE_PS_WIDE
bool "Enable wide output option (-w)"
default BUSYBOX_DEFAULT_FEATURE_PS_WIDE
depends on BUSYBOX_CONFIG_PS
depends on BUSYBOX_CONFIG_PS && !BUSYBOX_CONFIG_DESKTOP
help
Support argument 'w' for wide output.
If given once, 132 chars are printed, and if given more
than once, the length is unlimited.
config BUSYBOX_CONFIG_FEATURE_PS_LONG
bool "Enable long output option (-l)"
default BUSYBOX_DEFAULT_FEATURE_PS_LONG
depends on BUSYBOX_CONFIG_PS && !BUSYBOX_CONFIG_DESKTOP
help
Support argument 'l' for long output.
Adds fields PPID, RSS, START, TIME & TTY
config BUSYBOX_CONFIG_FEATURE_PS_TIME
bool "Enable time and elapsed time output"
default BUSYBOX_DEFAULT_FEATURE_PS_TIME
@ -188,60 +255,6 @@ config BUSYBOX_CONFIG_BB_SYSCTL
help
Configure kernel parameters at runtime.
config BUSYBOX_CONFIG_TOP
bool "top"
default BUSYBOX_DEFAULT_TOP
help
The top program provides a dynamic real-time view of a running
system.
config BUSYBOX_CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE
bool "Show CPU per-process usage percentage"
default BUSYBOX_DEFAULT_FEATURE_TOP_CPU_USAGE_PERCENTAGE
depends on BUSYBOX_CONFIG_TOP
help
Make top display CPU usage for each process.
This adds about 2k.
config BUSYBOX_CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS
bool "Show CPU global usage percentage"
default BUSYBOX_DEFAULT_FEATURE_TOP_CPU_GLOBAL_PERCENTS
depends on BUSYBOX_CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE
help
Makes top display "CPU: NN% usr NN% sys..." line.
This adds about 0.5k.
config BUSYBOX_CONFIG_FEATURE_TOP_SMP_CPU
bool "SMP CPU usage display ('c' key)"
default BUSYBOX_DEFAULT_FEATURE_TOP_SMP_CPU
depends on BUSYBOX_CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS
help
Allow 'c' key to switch between individual/cumulative CPU stats
This adds about 0.5k.
config BUSYBOX_CONFIG_FEATURE_TOP_DECIMALS
bool "Show 1/10th of a percent in CPU/mem statistics"
default BUSYBOX_DEFAULT_FEATURE_TOP_DECIMALS
depends on BUSYBOX_CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE
help
Show 1/10th of a percent in CPU/mem statistics.
This adds about 0.3k.
config BUSYBOX_CONFIG_FEATURE_TOP_SMP_PROCESS
bool "Show CPU process runs on ('j' field)"
default BUSYBOX_DEFAULT_FEATURE_TOP_SMP_PROCESS
depends on BUSYBOX_CONFIG_TOP
help
Show CPU where process was last found running on.
This is the 'j' field.
config BUSYBOX_CONFIG_FEATURE_TOPMEM
bool "Topmem command ('s' key)"
default BUSYBOX_DEFAULT_FEATURE_TOPMEM
depends on BUSYBOX_CONFIG_TOP
help
Enable 's' in top (gives lots of memory info).
config BUSYBOX_CONFIG_FEATURE_SHOW_THREADS
bool "Support for showing threads in ps/pstree/top"
default BUSYBOX_DEFAULT_FEATURE_SHOW_THREADS

@ -7,7 +7,6 @@
menu "Runit Utilities"
config BUSYBOX_CONFIG_RUNSV
bool "runsv"
default BUSYBOX_DEFAULT_RUNSV

@ -8,7 +8,6 @@ menu "SELinux Utilities"
depends on BUSYBOX_CONFIG_SELINUX
config BUSYBOX_CONFIG_CHCON
bool "chcon"
default BUSYBOX_DEFAULT_CHCON

@ -156,6 +156,9 @@ config BUSYBOX_CONFIG_CTTYHACK
# exec setsid sh -c 'exec sh </dev/tty1 >/dev/tty1 2>&1'
Starting getty on a controlling tty from a shell script:
# getty 115200 $(cttyhack)
config BUSYBOX_CONFIG_HUSH
bool "hush"
default BUSYBOX_DEFAULT_HUSH
@ -292,6 +295,7 @@ config BUSYBOX_CONFIG_MSH
msh is deprecated and will be removed, please migrate to hush.
choice
prompt "Choose which shell is aliased to 'sh' name"
default BUSYBOX_CONFIG_FEATURE_SH_IS_ASH

@ -7,7 +7,6 @@
menu "System Logging Utilities"
config BUSYBOX_CONFIG_SYSLOGD
bool "syslogd"
default BUSYBOX_DEFAULT_SYSLOGD
@ -114,6 +113,19 @@ config BUSYBOX_CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING
from circular buffer, minimizing semaphore
contention at some minor memory expense.
config BUSYBOX_CONFIG_FEATURE_KMSG_SYSLOG
bool "Linux kernel printk buffer support"
default BUSYBOX_DEFAULT_FEATURE_KMSG_SYSLOG
depends on BUSYBOX_CONFIG_SYSLOGD
select BUSYBOX_CONFIG_PLATFORM_LINUX
help
When you enable this feature, the syslogd utility will
write system log message to the Linux kernel's printk buffer.
This can be used as a smaller alternative to the syslogd IPC
support, as klogd and logread aren't needed.
NOTICE: Syslog facilities in log entries needs kernel 3.5+.
config BUSYBOX_CONFIG_KLOGD
bool "klogd"
default BUSYBOX_DEFAULT_KLOGD
@ -124,6 +136,9 @@ config BUSYBOX_CONFIG_KLOGD
you wish to record the messages produced by the kernel,
you should enable this option.
comment "klogd should not be used together with syslog to kernel printk buffer"
depends on BUSYBOX_CONFIG_KLOGD && BUSYBOX_CONFIG_FEATURE_KMSG_SYSLOG
config BUSYBOX_CONFIG_FEATURE_KLOGD_KLOGCTL
bool "Use the klogctl() interface"
default BUSYBOX_DEFAULT_FEATURE_KLOGD_KLOGCTL

@ -11,6 +11,69 @@ config BUSYBOX_CONFIG_BLOCKDEV
default BUSYBOX_DEFAULT_BLOCKDEV
help
Performs some ioctls with block devices.
config BUSYBOX_CONFIG_FSTRIM
bool "fstrim"
default BUSYBOX_DEFAULT_FSTRIM
select BUSYBOX_CONFIG_PLATFORM_LINUX
help
Discard unused blocks on a mounted filesystem.
config BUSYBOX_CONFIG_MDEV
bool "mdev"
default BUSYBOX_DEFAULT_MDEV
select BUSYBOX_CONFIG_PLATFORM_LINUX
help
mdev is a mini-udev implementation for dynamically creating device
nodes in the /dev directory.
For more information, please see docs/mdev.txt
config BUSYBOX_CONFIG_FEATURE_MDEV_CONF
bool "Support /etc/mdev.conf"
default BUSYBOX_DEFAULT_FEATURE_MDEV_CONF
depends on BUSYBOX_CONFIG_MDEV
help
Add support for the mdev config file to control ownership and
permissions of the device nodes.
For more information, please see docs/mdev.txt
config BUSYBOX_CONFIG_FEATURE_MDEV_RENAME
bool "Support subdirs/symlinks"
default BUSYBOX_DEFAULT_FEATURE_MDEV_RENAME
depends on BUSYBOX_CONFIG_FEATURE_MDEV_CONF
help
Add support for renaming devices and creating symlinks.
For more information, please see docs/mdev.txt
config BUSYBOX_CONFIG_FEATURE_MDEV_RENAME_REGEXP
bool "Support regular expressions substitutions when renaming device"
default BUSYBOX_DEFAULT_FEATURE_MDEV_RENAME_REGEXP
depends on BUSYBOX_CONFIG_FEATURE_MDEV_RENAME
help
Add support for regular expressions substitutions when renaming
device.
config BUSYBOX_CONFIG_FEATURE_MDEV_EXEC
bool "Support command execution at device addition/removal"
default BUSYBOX_DEFAULT_FEATURE_MDEV_EXEC
depends on BUSYBOX_CONFIG_FEATURE_MDEV_CONF
help
This adds support for an optional field to /etc/mdev.conf for
executing commands when devices are created/removed.
For more information, please see docs/mdev.txt
config BUSYBOX_CONFIG_FEATURE_MDEV_LOAD_FIRMWARE
bool "Support loading of firmwares"
default BUSYBOX_DEFAULT_FEATURE_MDEV_LOAD_FIRMWARE
depends on BUSYBOX_CONFIG_MDEV
help
Some devices need to load firmware before they can be usable.
These devices will request userspace look up the files in
/lib/firmware/ and if it exists, send it to the kernel for
loading into the hardware.
config BUSYBOX_CONFIG_REV
bool "rev"
default BUSYBOX_DEFAULT_REV
@ -414,64 +477,6 @@ config BUSYBOX_CONFIG_LSUSB
This version uses sysfs (/sys/bus/usb/devices) only.
config BUSYBOX_CONFIG_MDEV
bool "mdev"
default BUSYBOX_DEFAULT_MDEV
select BUSYBOX_CONFIG_PLATFORM_LINUX
help
mdev is a mini-udev implementation for dynamically creating device
nodes in the /dev directory.
For more information, please see docs/mdev.txt
config BUSYBOX_CONFIG_FEATURE_MDEV_CONF
bool "Support /etc/mdev.conf"
default BUSYBOX_DEFAULT_FEATURE_MDEV_CONF
depends on BUSYBOX_CONFIG_MDEV
help
Add support for the mdev config file to control ownership and
permissions of the device nodes.
For more information, please see docs/mdev.txt
config BUSYBOX_CONFIG_FEATURE_MDEV_RENAME
bool "Support subdirs/symlinks"
default BUSYBOX_DEFAULT_FEATURE_MDEV_RENAME
depends on BUSYBOX_CONFIG_FEATURE_MDEV_CONF
help
Add support for renaming devices and creating symlinks.
For more information, please see docs/mdev.txt
config BUSYBOX_CONFIG_FEATURE_MDEV_RENAME_REGEXP
bool "Support regular expressions substitutions when renaming device"
default BUSYBOX_DEFAULT_FEATURE_MDEV_RENAME_REGEXP
depends on BUSYBOX_CONFIG_FEATURE_MDEV_RENAME
help
Add support for regular expressions substitutions when renaming
device.
config BUSYBOX_CONFIG_FEATURE_MDEV_EXEC
bool "Support command execution at device addition/removal"
default BUSYBOX_DEFAULT_FEATURE_MDEV_EXEC
depends on BUSYBOX_CONFIG_FEATURE_MDEV_CONF
help
This adds support for an optional field to /etc/mdev.conf for
executing commands when devices are created/removed.
For more information, please see docs/mdev.txt
config BUSYBOX_CONFIG_FEATURE_MDEV_LOAD_FIRMWARE
bool "Support loading of firmwares"
default BUSYBOX_DEFAULT_FEATURE_MDEV_LOAD_FIRMWARE
depends on BUSYBOX_CONFIG_MDEV
help
Some devices need to load firmware before they can be usable.
These devices will request userspace look up the files in
/lib/firmware/ and if it exists, send it to the kernel for
loading into the hardware.
config BUSYBOX_CONFIG_MKSWAP
bool "mkswap"
default BUSYBOX_DEFAULT_MKSWAP
@ -553,13 +558,18 @@ config BUSYBOX_CONFIG_FEATURE_MOUNT_LABEL
This also enables label or uuid support for swapon.
config BUSYBOX_CONFIG_FEATURE_MOUNT_NFS
bool "Support mounting NFS file systems"
bool "Support mounting NFS file systems on Linux < 2.6.23"
default BUSYBOX_DEFAULT_FEATURE_MOUNT_NFS
depends on BUSYBOX_CONFIG_MOUNT
select BUSYBOX_CONFIG_FEATURE_HAVE_RPC
select BUSYBOX_CONFIG_FEATURE_SYSLOG
help
Enable mounting of NFS file systems.
Enable mounting of NFS file systems on Linux kernels prior
to version 2.6.23. Note that in this case mounting of NFS
over IPv6 will not be possible.
Note that this option links in RPC support from libc,
which is rather large (~10 kbytes on uclibc).
config BUSYBOX_CONFIG_FEATURE_MOUNT_CIFS
bool "Support mounting CIFS/SMB file systems"
@ -762,224 +772,6 @@ config BUSYBOX_CONFIG_FEATURE_MTAB_SUPPORT
About the only reason to use this is if you've removed /proc from
your kernel.
config BUSYBOX_CONFIG_VOLUMEID
bool #No description makes it a hidden option
default BUSYBOX_DEFAULT_VOLUMEID
menu "Filesystem/Volume identification"
depends on BUSYBOX_CONFIG_VOLUMEID
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_EXT
bool "Ext filesystem"
default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_EXT
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_BTRFS
bool "btrfs filesystem"
default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_BTRFS
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_REISERFS
bool "Reiser filesystem"
default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_REISERFS
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_FAT
bool "fat filesystem"
default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_FAT
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_HFS
bool "hfs filesystem"
default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_HFS
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_JFS
bool "jfs filesystem"
default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_JFS
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
### config FEATURE_VOLUMEID_UFS
### bool "ufs filesystem"
### default y
### depends on VOLUMEID
### help
### TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_XFS
bool "xfs filesystem"
default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_XFS
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_NTFS
bool "ntfs filesystem"
default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_NTFS
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_ISO9660
bool "iso9660 filesystem"
default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_ISO9660
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_UDF
bool "udf filesystem"
default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_UDF
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_LUKS
bool "luks filesystem"
default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_LUKS
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_LINUXSWAP
bool "linux swap filesystem"
default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_LINUXSWAP
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
### config FEATURE_VOLUMEID_LVM
### bool "lvm"
### default y
### depends on VOLUMEID
### help
### TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_CRAMFS
bool "cramfs filesystem"
default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_CRAMFS
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
### config FEATURE_VOLUMEID_HPFS
### bool "hpfs filesystem"
### default y
### depends on VOLUMEID
### help
### TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_ROMFS
bool "romfs filesystem"
default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_ROMFS
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_SYSV
bool "sysv filesystem"
default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_SYSV
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
### config FEATURE_VOLUMEID_MINIX
### bool "minix filesystem"
### default y
### depends on VOLUMEID
### help
### TODO
### These only detect partition tables - not used (yet?)
### config FEATURE_VOLUMEID_MAC
### bool "mac filesystem"
### default y
### depends on VOLUMEID
### help
### TODO
###
### config FEATURE_VOLUMEID_MSDOS
### bool "msdos filesystem"
### default y
### depends on VOLUMEID
### help
### TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_OCFS2
bool "ocfs2 filesystem"
default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_OCFS2
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
### config FEATURE_VOLUMEID_HIGHPOINTRAID
### bool "highpoint raid"
### default y
### depends on VOLUMEID
### help
### TODO
### config FEATURE_VOLUMEID_ISWRAID
### bool "intel raid"
### default y
### depends on VOLUMEID
### help
### TODO
### config FEATURE_VOLUMEID_LSIRAID
### bool "lsi raid"
### default y
### depends on VOLUMEID
### help
### TODO
### config FEATURE_VOLUMEID_VIARAID
### bool "via raid"
### default y
### depends on VOLUMEID
### help
### TODO
### config FEATURE_VOLUMEID_SILICONRAID
### bool "silicon raid"
### default y
### depends on VOLUMEID
### help
### TODO
### config FEATURE_VOLUMEID_NVIDIARAID
### bool "nvidia raid"
### default y
### depends on VOLUMEID
### help
### TODO
### config FEATURE_VOLUMEID_PROMISERAID
### bool "promise raid"
### default y
### depends on VOLUMEID
### help
### TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_LINUXRAID
bool "linuxraid"
default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_LINUXRAID
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
endmenu
source package/utils/busybox/config/util-linux/volume_id/Config.in
endmenu

@ -0,0 +1,304 @@
# DO NOT EDIT. This file is generated from Config.src
#
# For a description of the syntax of this configuration file,
# see scripts/kbuild/config-language.txt.
#
config BUSYBOX_CONFIG_VOLUMEID
bool #No description makes it a hidden option
default BUSYBOX_DEFAULT_VOLUMEID
menu "Filesystem/Volume identification"
depends on BUSYBOX_CONFIG_VOLUMEID
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_BTRFS
bool "btrfs filesystem"
default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_BTRFS
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_CRAMFS
bool "cramfs filesystem"
default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_CRAMFS
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_EXFAT
bool "exFAT filesystem"
default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_EXFAT
depends on BUSYBOX_CONFIG_VOLUMEID
help
exFAT (extended FAT) is a proprietary file system designed especially
for flash drives. It has many features from NTFS, but with less
overhead. exFAT is used on most SDXC cards for consumer electronics.
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_EXT
bool "Ext filesystem"
default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_EXT
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_F2FS
bool "f2fs filesystem"
default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_F2FS
depends on BUSYBOX_CONFIG_VOLUMEID
help
F2FS (aka Flash-Friendly File System) is a log-structured file system,
which is adapted to newer forms of storage. F2FS also remedies some
known issues of the older log structured file systems, such as high
cleaning overhead.
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_FAT
bool "fat filesystem"
default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_FAT
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_HFS
bool "hfs filesystem"
default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_HFS
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_ISO9660
bool "iso9660 filesystem"
default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_ISO9660
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_JFS
bool "jfs filesystem"
default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_JFS
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_LINUXRAID
bool "linuxraid"
default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_LINUXRAID
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_LINUXSWAP
bool "linux swap filesystem"
default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_LINUXSWAP
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_LUKS
bool "luks filesystem"
default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_LUKS
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_NILFS
bool "nilfs filesystem"
default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_NILFS
depends on BUSYBOX_CONFIG_VOLUMEID
help
NILFS is a New Implementation of a Log-Structured File System (LFS)
that supports continuous snapshots. This provides features like
versioning of the entire filesystem, restoration of files that
were deleted a few minutes ago. NILFS keeps consistency like
conventional LFS, so it provides quick recovery after system crashes.
The possible use of NILFS includes versioning, tamper detection,
SOX compliance logging, and so forth. It can serve as an alternative
filesystem for Linux desktop environment, or as a basis of advanced
storage appliances.
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_NTFS
bool "ntfs filesystem"
default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_NTFS
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_OCFS2
bool "ocfs2 filesystem"
default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_OCFS2
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_REISERFS
bool "Reiser filesystem"
default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_REISERFS
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_ROMFS
bool "romfs filesystem"
default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_ROMFS
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_SQUASHFS
bool "SquashFS filesystem"
default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_SQUASHFS
depends on BUSYBOX_CONFIG_VOLUMEID && BUSYBOX_CONFIG_FEATURE_BLKID_TYPE
help
Squashfs is a compressed read-only filesystem for Linux. Squashfs is
intended for general read-only filesystem use and in constrained block
device/memory systems (e.g. embedded systems) where low overhead is
needed.
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_SYSV
bool "sysv filesystem"
default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_SYSV
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_UDF
bool "udf filesystem"
default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_UDF
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
### config FEATURE_VOLUMEID_HIGHPOINTRAID
### bool "highpoint raid"
### default y
### depends on VOLUMEID
### help
### TODO
### config FEATURE_VOLUMEID_HPFS
### bool "hpfs filesystem"
### default y
### depends on VOLUMEID
### help
### TODO
### config FEATURE_VOLUMEID_ISWRAID
### bool "intel raid"
### default y
### depends on VOLUMEID
### help
### TODO
### config FEATURE_VOLUMEID_LSIRAID
### bool "lsi raid"
### default y
### depends on VOLUMEID
### help
### TODO
### config FEATURE_VOLUMEID_LVM
### bool "lvm"
### default y
### depends on VOLUMEID
### help
### TODO
### config FEATURE_VOLUMEID_MAC
### bool "mac filesystem"
### default y
### depends on VOLUMEID
### help
### TODO
### config FEATURE_VOLUMEID_MINIX
### bool "minix filesystem"
### default y
### depends on VOLUMEID
### help
### TODO
### config FEATURE_VOLUMEID_MSDOS
### bool "msdos filesystem"
### default y
### depends on VOLUMEID
### help
### TODO
### config FEATURE_VOLUMEID_NVIDIARAID
### bool "nvidia raid"
### default y
### depends on VOLUMEID
### help
### TODO
### config FEATURE_VOLUMEID_PROMISERAID
### bool "promise raid"
### default y
### depends on VOLUMEID
### help
### TODO
### config FEATURE_VOLUMEID_SILICONRAID
### bool "silicon raid"
### default y
### depends on VOLUMEID
### help
### TODO
### config FEATURE_VOLUMEID_UFS
### bool "ufs filesystem"
### default y
### depends on VOLUMEID
### help
### TODO
### config FEATURE_VOLUMEID_VIARAID
### bool "via raid"
### default y
### depends on VOLUMEID
### help
### TODO
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_XFS
bool "xfs filesystem"
default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_XFS
depends on BUSYBOX_CONFIG_VOLUMEID
help
TODO
endmenu

@ -1,20 +0,0 @@
From eb80c2a5315ed08bd329448217695375d89732c9 Mon Sep 17 00:00:00 2001
From: Nicolas Thill <nico@openwrt.org>
Date: Wed, 9 Nov 2011 18:17:20 +0100
Subject: [PATCH] passwd: use MD5 hash by default (like it used to be)
---
loginutils/passwd.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
--- a/loginutils/passwd.c
+++ b/loginutils/passwd.c
@@ -94,7 +94,7 @@ int passwd_main(int argc UNUSED_PARAM, c
};
unsigned opt;
int rc;
- const char *opt_a = "d"; /* des */
+ const char *opt_a = "m"; /* md5 */
const char *filename;
char *myname;
char *name;

@ -0,0 +1,11 @@
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -13014,7 +13014,7 @@ init(void)
setvar2("PPID", utoa(getppid()));
#if ENABLE_ASH_BASH_COMPAT
p = lookupvar("SHLVL");
- setvar2("SHLVL", utoa(p ? atoi(p) + 1 : 1));
+ setvar("SHLVL", utoa((p ? atoi(p) : 0) + 1), VEXPORT);
#endif
p = lookupvar("PWD");
if (p) {

@ -1,37 +0,0 @@
--- a/networking/brctl.c
+++ b/networking/brctl.c
@@ -129,7 +129,7 @@ int brctl_main(int argc UNUSED_PARAM, ch
"setageing\0" "setfd\0" "sethello\0" "setmaxage\0"
"setpathcost\0" "setportprio\0" "setbridgeprio\0"
)
- IF_FEATURE_BRCTL_SHOW("showmacs\0" "show\0");
+ IF_FEATURE_BRCTL_SHOW("show\0");
enum { ARG_addbr = 0, ARG_delbr, ARG_addif, ARG_delif
IF_FEATURE_BRCTL_FANCY(,
@@ -137,7 +137,7 @@ int brctl_main(int argc UNUSED_PARAM, ch
ARG_setageing, ARG_setfd, ARG_sethello, ARG_setmaxage,
ARG_setpathcost, ARG_setportprio, ARG_setbridgeprio
)
- IF_FEATURE_BRCTL_SHOW(, ARG_showmacs, ARG_show)
+ IF_FEATURE_BRCTL_SHOW(, ARG_show)
};
int fd;
--- a/networking/Config.src
+++ b/networking/Config.src
@@ -82,12 +82,12 @@ config FEATURE_BRCTL_FANCY
This adds about 600 bytes.
config FEATURE_BRCTL_SHOW
- bool "Support show, showmac and showstp"
+ bool "Support show"
default y
depends on BRCTL && FEATURE_BRCTL_FANCY
help
Add support for option which prints the current config:
- showmacs, showstp, show
+ show
config DNSD
bool "dnsd"

@ -0,0 +1,30 @@
--- a/libbb/time.c
+++ b/libbb/time.c
@@ -68,15 +68,23 @@ void FAST_FUNC parse_datestr(const char
/* else end != NUL and we error out */
}
} else
- /* yyyy-mm-dd HH */
- if (sscanf(date_str, "%u-%u-%u %u%c", &ptm->tm_year,
+ if (strchr(date_str, '-')
+ /* Why strchr('-') check?
+ * sscanf below will trash ptm->tm_year, this breaks
+ * if parse_str is "10101010" (iow, "MMddhhmm" form)
+ * because we destroy year. Do these sscanf
+ * only if we saw a dash in parse_str.
+ */
+ /* yyyy-mm-dd HH */
+ && (sscanf(date_str, "%u-%u-%u %u%c", &ptm->tm_year,
&ptm->tm_mon, &ptm->tm_mday,
&ptm->tm_hour,
&end) >= 4
- /* yyyy-mm-dd */
- || sscanf(date_str, "%u-%u-%u%c", &ptm->tm_year,
+ /* yyyy-mm-dd */
+ || sscanf(date_str, "%u-%u-%u%c", &ptm->tm_year,
&ptm->tm_mon, &ptm->tm_mday,
&end) >= 3
+ )
) {
ptm->tm_year -= 1900; /* Adjust years */
ptm->tm_mon -= 1; /* Adjust month from 1-12 to 0-11 */

@ -1,237 +0,0 @@
http://git.busybox.net/busybox/commit/?id=dd1061b6a79b0161597799e825bfefc27993ace5
From dd1061b6a79b0161597799e825bfefc27993ace5 Mon Sep 17 00:00:00 2001
From: Denys Vlasenko <vda.linux@googlemail.com>
Date: Sun, 11 Sep 2011 21:04:02 +0200
Subject: [PATCH] wget: URL-decode user:password before base64-encoding it into auth hdr. Closes 3625.
function old new delta
percent_decode_in_place - 152 +152
parse_url 304 317 +13
handle_incoming_and_exit 2795 2798 +3
httpd_main 763 760 -3
decodeString 152 - -152
------------------------------------------------------------------------------
(add/remove: 2/1 grow/shrink: 2/1 up/down: 168/-155) Total: 13 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
--- a/include/libbb.h
+++ b/include/libbb.h
@@ -1570,6 +1570,15 @@ int starts_with_cpu(const char *str) FAS
unsigned get_cpu_count(void) FAST_FUNC;
+/* Use strict=1 if you process input from untrusted source:
+ * it will return NULL on invalid %xx (bad hex chars)
+ * and str + 1 if decoded char is / or NUL.
+ * In non-strict mode, it always succeeds (returns str),
+ * and also it additionally decoded '+' to space.
+ */
+char *percent_decode_in_place(char *str, int strict) FAST_FUNC;
+
+
extern const char bb_uuenc_tbl_base64[];
extern const char bb_uuenc_tbl_std[];
void bb_uuencode(char *store, const void *s, int length, const char *tbl) FAST_FUNC;
--- /dev/null
+++ b/libbb/percent_decode.c
@@ -0,0 +1,69 @@
+/* vi: set sw=4 ts=4: */
+/*
+ * Licensed under GPLv2 or later, see file LICENSE in this source tree.
+ */
+
+//kbuild:lib-y += percent_decode.o
+
+#include "libbb.h"
+
+static unsigned hex_to_bin(unsigned char c)
+{
+ unsigned v;
+
+ v = c - '0';
+ if (v <= 9)
+ return v;
+ /* c | 0x20: letters to lower case, non-letters
+ * to (potentially different) non-letters */
+ v = (unsigned)(c | 0x20) - 'a';
+ if (v <= 5)
+ return v + 10;
+ return ~0;
+/* For testing:
+void t(char c) { printf("'%c'(%u) %u\n", c, c, hex_to_bin(c)); }
+int main() { t(0x10); t(0x20); t('0'); t('9'); t('A'); t('F'); t('a'); t('f');
+t('0'-1); t('9'+1); t('A'-1); t('F'+1); t('a'-1); t('f'+1); return 0; }
+*/
+}
+
+char* FAST_FUNC percent_decode_in_place(char *str, int strict)
+{
+ /* note that decoded string is always shorter than original */
+ char *src = str;
+ char *dst = str;
+ char c;
+
+ while ((c = *src++) != '\0') {
+ unsigned v;
+
+ if (!strict && c == '+') {
+ *dst++ = ' ';
+ continue;
+ }
+ if (c != '%') {
+ *dst++ = c;
+ continue;
+ }
+ v = hex_to_bin(src[0]);
+ if (v > 15) {
+ bad_hex:
+ if (strict)
+ return NULL;
+ *dst++ = '%';
+ continue;
+ }
+ v = (v * 16) | hex_to_bin(src[1]);
+ if (v > 255)
+ goto bad_hex;
+ if (strict && (v == '/' || v == '\0')) {
+ /* caller takes it as indication of invalid
+ * (dangerous wrt exploits) chars */
+ return str + 1;
+ }
+ *dst++ = v;
+ src += 2;
+ }
+ *dst = '\0';
+ return str;
+}
--- a/networking/httpd.c
+++ b/networking/httpd.c
@@ -820,78 +820,6 @@ static char *encodeString(const char *st
}
#endif
-/*
- * Given a URL encoded string, convert it to plain ascii.
- * Since decoding always makes strings smaller, the decode is done in-place.
- * Thus, callers should xstrdup() the argument if they do not want the
- * argument modified. The return is the original pointer, allowing this
- * function to be easily used as arguments to other functions.
- *
- * string The first string to decode.
- * option_d 1 if called for httpd -d
- *
- * Returns a pointer to the decoded string (same as input).
- */
-static unsigned hex_to_bin(unsigned char c)
-{
- unsigned v;
-
- v = c - '0';
- if (v <= 9)
- return v;
- /* c | 0x20: letters to lower case, non-letters
- * to (potentially different) non-letters */
- v = (unsigned)(c | 0x20) - 'a';
- if (v <= 5)
- return v + 10;
- return ~0;
-/* For testing:
-void t(char c) { printf("'%c'(%u) %u\n", c, c, hex_to_bin(c)); }
-int main() { t(0x10); t(0x20); t('0'); t('9'); t('A'); t('F'); t('a'); t('f');
-t('0'-1); t('9'+1); t('A'-1); t('F'+1); t('a'-1); t('f'+1); return 0; }
-*/
-}
-static char *decodeString(char *orig, int option_d)
-{
- /* note that decoded string is always shorter than original */
- char *string = orig;
- char *ptr = string;
- char c;
-
- while ((c = *ptr++) != '\0') {
- unsigned v;
-
- if (option_d && c == '+') {
- *string++ = ' ';
- continue;
- }
- if (c != '%') {
- *string++ = c;
- continue;
- }
- v = hex_to_bin(ptr[0]);
- if (v > 15) {
- bad_hex:
- if (!option_d)
- return NULL;
- *string++ = '%';
- continue;
- }
- v = (v * 16) | hex_to_bin(ptr[1]);
- if (v > 255)
- goto bad_hex;
- if (!option_d && (v == '/' || v == '\0')) {
- /* caller takes it as indication of invalid
- * (dangerous wrt exploits) chars */
- return orig + 1;
- }
- *string++ = v;
- ptr += 2;
- }
- *string = '\0';
- return orig;
-}
-
#if ENABLE_FEATURE_HTTPD_BASIC_AUTH
/*
* Decode a base64 data stream as per rfc1521.
@@ -1949,7 +1877,7 @@ static void handle_incoming_and_exit(con
}
/* Decode URL escape sequences */
- tptr = decodeString(urlcopy, 0);
+ tptr = percent_decode_in_place(urlcopy, /*strict:*/ 1);
if (tptr == NULL)
send_headers_and_exit(HTTP_BAD_REQUEST);
if (tptr == urlcopy + 1) {
@@ -2408,7 +2336,7 @@ int httpd_main(int argc UNUSED_PARAM, ch
, &verbose
);
if (opt & OPT_DECODE_URL) {
- fputs(decodeString(url_for_decode, 1), stdout);
+ fputs(percent_decode_in_place(url_for_decode, /*strict:*/ 0), stdout);
return 0;
}
#if ENABLE_FEATURE_HTTPD_ENCODE_URL_STR
--- a/networking/wget.c
+++ b/networking/wget.c
@@ -298,8 +298,13 @@ static void parse_url(const char *src_ur
sp = strrchr(h->host, '@');
if (sp != NULL) {
- h->user = h->host;
+ // URL-decode "user:password" string before base64-encoding:
+ // wget http://test:my%20pass@example.com should send
+ // Authorization: Basic dGVzdDpteSBwYXNz
+ // which decodes to "test:my pass".
+ // Standard wget and curl do this too.
*sp = '\0';
+ h->user = percent_decode_in_place(h->host, /*strict:*/ 0);
h->host = sp + 1;
}
@@ -661,12 +666,6 @@ static void download_one_url(const char
#if ENABLE_FEATURE_WGET_AUTHENTICATION
if (target.user) {
-//TODO: URL-decode "user:password" string before base64-encoding:
-//wget http://test:my%20pass@example.com should send
-// Authorization: Basic dGVzdDpteSBwYXNz
-//which decodes to "test:my pass", instead of what we send now:
-// Authorization: Basic dGVzdDpteSUyMHBhc3M=
-//Can reuse decodeString() from httpd.c
fprintf(sfp, "Proxy-Authorization: Basic %s\r\n"+6,
base64enc(target.user));
}

@ -0,0 +1,19 @@
--- a/networking/libiproute/iplink.c
+++ b/networking/libiproute/iplink.c
@@ -31,6 +31,16 @@
#ifndef IFLA_LINKINFO
# define IFLA_LINKINFO 18
# define IFLA_INFO_KIND 1
+# define IFLA_INFO_DATA 2
+#endif
+
+#ifndef IFLA_VLAN_MAX
+# define IFLA_VLAN_ID 1
+# define IFLA_VLAN_FLAGS 2
+struct ifla_vlan_flags {
+ uint32_t flags;
+ uint32_t mask;
+};
#endif
/* taken from linux/sockios.h */

@ -0,0 +1,15 @@
--- a/networking/nc_bloaty.c
+++ b/networking/nc_bloaty.c
@@ -175,9 +175,9 @@ enum {
OPT_w = (1 << 5),
OPT_l = (1 << 6) * ENABLE_NC_SERVER,
OPT_k = (1 << 7) * ENABLE_NC_SERVER,
- OPT_i = (1 << (7+2*ENABLE_NC_SERVER)) * ENABLE_NC_EXTRA,
- OPT_o = (1 << (8+2*ENABLE_NC_SERVER)) * ENABLE_NC_EXTRA,
- OPT_z = (1 << (9+2*ENABLE_NC_SERVER)) * ENABLE_NC_EXTRA,
+ OPT_i = (1 << (6+2*ENABLE_NC_SERVER)) * ENABLE_NC_EXTRA,
+ OPT_o = (1 << (7+2*ENABLE_NC_SERVER)) * ENABLE_NC_EXTRA,
+ OPT_z = (1 << (8+2*ENABLE_NC_SERVER)) * ENABLE_NC_EXTRA,
};
#define o_nflag (option_mask32 & OPT_n)

@ -1,164 +0,0 @@
--- a/networking/udhcp/common.c
+++ b/networking/udhcp/common.c
@@ -29,16 +29,16 @@ const struct dhcp_optflag dhcp_optflags[
// { OPTION_IP | OPTION_LIST , 0x07 }, /* DHCP_LOG_SERVER */
// { OPTION_IP | OPTION_LIST , 0x08 }, /* DHCP_COOKIE_SERVER */
{ OPTION_IP | OPTION_LIST , 0x09 }, /* DHCP_LPR_SERVER */
- { OPTION_STRING | OPTION_REQ, 0x0c }, /* DHCP_HOST_NAME */
+ { OPTION_STRING_HOST | OPTION_REQ, 0x0c }, /* DHCP_HOST_NAME */
{ OPTION_U16 , 0x0d }, /* DHCP_BOOT_SIZE */
- { OPTION_STRING | OPTION_REQ, 0x0f }, /* DHCP_DOMAIN_NAME */
+ { OPTION_STRING_HOST | OPTION_REQ, 0x0f }, /* DHCP_DOMAIN_NAME */
{ OPTION_IP , 0x10 }, /* DHCP_SWAP_SERVER */
{ OPTION_STRING , 0x11 }, /* DHCP_ROOT_PATH */
{ OPTION_U8 , 0x17 }, /* DHCP_IP_TTL */
{ OPTION_U16 , 0x1a }, /* DHCP_MTU */
{ OPTION_IP | OPTION_REQ, 0x1c }, /* DHCP_BROADCAST */
{ OPTION_IP_PAIR | OPTION_LIST , 0x21 }, /* DHCP_ROUTES */
- { OPTION_STRING , 0x28 }, /* DHCP_NIS_DOMAIN */
+ { OPTION_STRING_HOST , 0x28 }, /* DHCP_NIS_DOMAIN */
{ OPTION_IP | OPTION_LIST , 0x29 }, /* DHCP_NIS_SERVER */
{ OPTION_IP | OPTION_LIST | OPTION_REQ, 0x2a }, /* DHCP_NTP_SERVER */
{ OPTION_IP | OPTION_LIST , 0x2c }, /* DHCP_WINS_SERVER */
@@ -46,7 +46,7 @@ const struct dhcp_optflag dhcp_optflags[
{ OPTION_IP , 0x36 }, /* DHCP_SERVER_ID */
{ OPTION_STRING , 0x38 }, /* DHCP_ERR_MESSAGE */
//TODO: must be combined with 'sname' and 'file' handling:
- { OPTION_STRING , 0x42 }, /* DHCP_TFTP_SERVER_NAME */
+ { OPTION_STRING_HOST , 0x42 }, /* DHCP_TFTP_SERVER_NAME */
{ OPTION_STRING , 0x43 }, /* DHCP_BOOT_FILE */
//TODO: not a string, but a set of LASCII strings:
// { OPTION_STRING , 0x4D }, /* DHCP_USER_CLASS */
@@ -143,6 +143,7 @@ const uint8_t dhcp_option_lengths[] ALIG
[OPTION_IP_PAIR] = 8,
// [OPTION_BOOLEAN] = 1,
[OPTION_STRING] = 1, /* ignored by udhcp_str2optset */
+ [OPTION_STRING_HOST] = 1, /* ignored by udhcp_str2optset */
#if ENABLE_FEATURE_UDHCP_RFC3397
[OPTION_DNS_STRING] = 1, /* ignored by both udhcp_str2optset and xmalloc_optname_optval */
[OPTION_SIP_SERVERS] = 1,
@@ -411,7 +412,9 @@ static NOINLINE void attach_option(
/* actually 255 is ok too, but adding a space can overlow it */
existing->data = xrealloc(existing->data, OPT_DATA + 1 + old_len + length);
- if ((optflag->flags & OPTION_TYPE_MASK) == OPTION_STRING) {
+ if ((optflag->flags & OPTION_TYPE_MASK) == OPTION_STRING
+ || (optflag->flags & OPTION_TYPE_MASK) == OPTION_STRING_HOST
+ ) {
/* add space separator between STRING options in a list */
existing->data[OPT_DATA + old_len] = ' ';
old_len++;
@@ -475,6 +478,7 @@ int FAST_FUNC udhcp_str2optset(const cha
retval = udhcp_str2nip(val, buffer + 4);
break;
case OPTION_STRING:
+ case OPTION_STRING_HOST:
#if ENABLE_FEATURE_UDHCP_RFC3397
case OPTION_DNS_STRING:
#endif
--- a/networking/udhcp/common.h
+++ b/networking/udhcp/common.h
@@ -80,6 +80,9 @@ enum {
OPTION_IP = 1,
OPTION_IP_PAIR,
OPTION_STRING,
+ /* Opts of STRING_HOST type will be sanitized before they are passed
+ * to udhcpc script's environment: */
+ OPTION_STRING_HOST,
// OPTION_BOOLEAN,
OPTION_U8,
OPTION_U16,
--- a/networking/udhcp/dhcpc.c
+++ b/networking/udhcp/dhcpc.c
@@ -101,6 +101,7 @@ static const uint8_t len_of_option_as_st
[OPTION_IP_PAIR ] = sizeof("255.255.255.255 ") * 2,
[OPTION_STATIC_ROUTES ] = sizeof("255.255.255.255/32 255.255.255.255 "),
[OPTION_STRING ] = 1,
+ [OPTION_STRING_HOST ] = 1,
#if ENABLE_FEATURE_UDHCP_RFC3397
[OPTION_DNS_STRING ] = 1, /* unused */
/* Hmmm, this severely overestimates size if SIP_SERVERS option
@@ -135,6 +136,63 @@ static int mton(uint32_t mask)
return i;
}
+/* Check if a given label represents a valid DNS label
+ * Return pointer to the first character after the label upon success,
+ * NULL otherwise.
+ * See RFC1035, 2.3.1
+ */
+/* We don't need to be particularly anal. For example, allowing _, hyphen
+ * at the end, or leading and trailing dots would be ok, since it
+ * can't be used for attacks. (Leading hyphen can be, if someone uses
+ * cmd "$hostname"
+ * in the script: then hostname may be treated as an option)
+ */
+static const char *valid_domain_label(const char *label)
+{
+ unsigned char ch;
+ unsigned pos = 0;
+
+ for (;;) {
+ ch = *label;
+ if ((ch|0x20) < 'a' || (ch|0x20) > 'z') {
+ if (pos == 0) {
+ /* label must begin with letter */
+ return NULL;
+ }
+ if (ch < '0' || ch > '9') {
+ if (ch == '\0' || ch == '.')
+ return label;
+ /* DNS allows only '-', but we are more permissive */
+ if (ch != '-' && ch != '_')
+ return NULL;
+ }
+ }
+ label++;
+ pos++;
+ //Do we want this?
+ //if (pos > 63) /* NS_MAXLABEL; labels must be 63 chars or less */
+ // return NULL;
+ }
+}
+
+/* Check if a given name represents a valid DNS name */
+/* See RFC1035, 2.3.1 */
+static int good_hostname(const char *name)
+{
+ //const char *start = name;
+
+ for (;;) {
+ name = valid_domain_label(name);
+ if (!name)
+ return 0;
+ if (!name[0])
+ return 1;
+ //Do we want this?
+ //return ((name - start) < 1025); /* NS_MAXDNAME */
+ name++;
+ }
+}
+
/* Create "opt_name=opt_value" string */
static NOINLINE char *xmalloc_optname_optval(uint8_t *option, const struct dhcp_optflag *optflag, const char *opt_name)
{
@@ -185,8 +243,11 @@ static NOINLINE char *xmalloc_optname_op
break;
}
case OPTION_STRING:
+ case OPTION_STRING_HOST:
memcpy(dest, option, len);
dest[len] = '\0';
+ if (type == OPTION_STRING_HOST && !good_hostname(dest))
+ safe_strncpy(dest, "bad", len);
return ret; /* Short circuit this case */
case OPTION_STATIC_ROUTES: {
/* Option binary format:
@@ -314,6 +375,7 @@ static char **fill_envp(struct dhcp_pack
/* +1 element for each option, +2 for subnet option: */
if (packet) {
/* note: do not search for "pad" (0) and "end" (255) options */
+//TODO: change logic to scan packet _once_
for (i = 1; i < 255; i++) {
temp = udhcp_get_option(packet, i);
if (temp) {

@ -1,97 +0,0 @@
--- a/coreutils/dd.c
+++ b/coreutils/dd.c
@@ -10,7 +10,7 @@
//usage:#define dd_trivial_usage
//usage: "[if=FILE] [of=FILE] " IF_FEATURE_DD_IBS_OBS("[ibs=N] [obs=N] ") "[bs=N] [count=N] [skip=N]\n"
-//usage: " [seek=N]" IF_FEATURE_DD_IBS_OBS(" [conv=notrunc|noerror|sync|fsync]")
+//usage: " [seek=N]" IF_FEATURE_DD_IBS_OBS(" [conv=notrunc|noerror|sync|fsync|swab]")
//usage:#define dd_full_usage "\n\n"
//usage: "Copy a file with converting and formatting\n"
//usage: "\n if=FILE Read from FILE instead of stdin"
@@ -30,6 +30,7 @@
//usage: "\n conv=noerror Continue after read errors"
//usage: "\n conv=sync Pad blocks with zeros"
//usage: "\n conv=fsync Physically write data out before finishing"
+//usage: "\n conv=swab Swap every pair of bytes"
//usage: )
//usage: "\n"
//usage: "\nNumbers may be suffixed by c (x1), w (x2), b (x512), kD (x1000), k (x1024),"
@@ -155,9 +156,10 @@ int dd_main(int argc UNUSED_PARAM, char
FLAG_SYNC = 1 << 1,
FLAG_NOERROR = 1 << 2,
FLAG_FSYNC = 1 << 3,
+ FLAG_SWAB = 1 << 4,
/* end of conv flags */
- FLAG_TWOBUFS = 1 << 4,
- FLAG_COUNT = 1 << 5,
+ FLAG_TWOBUFS = 1 << 5,
+ FLAG_COUNT = 1 << 6,
};
static const char keywords[] ALIGN1 =
"bs\0""count\0""seek\0""skip\0""if\0""of\0"
@@ -167,7 +169,7 @@ int dd_main(int argc UNUSED_PARAM, char
;
#if ENABLE_FEATURE_DD_IBS_OBS
static const char conv_words[] ALIGN1 =
- "notrunc\0""sync\0""noerror\0""fsync\0";
+ "notrunc\0""sync\0""noerror\0""fsync\0""swab\0";
#endif
enum {
OP_bs = 0,
@@ -185,11 +187,11 @@ int dd_main(int argc UNUSED_PARAM, char
OP_conv_sync,
OP_conv_noerror,
OP_conv_fsync,
+ OP_conv_swab,
/* Unimplemented conv=XXX: */
//nocreat do not create the output file
//excl fail if the output file already exists
//fdatasync physically write output file data before finishing
- //swab swap every pair of input bytes
//lcase change upper case to lower case
//ucase change lower case to upper case
//block pad newline-terminated records with spaces to cbs-size
@@ -207,12 +209,14 @@ int dd_main(int argc UNUSED_PARAM, char
struct {
int flags;
size_t oc;
+ ssize_t prev_read_size; /* for detecting swab failure */
off_t count;
off_t seek, skip;
const char *infile, *outfile;
} Z;
#define flags (Z.flags )
#define oc (Z.oc )
+#define prev_read_size (Z.prev_read_size)
#define count (Z.count )
#define seek (Z.seek )
#define skip (Z.skip )
@@ -375,6 +379,27 @@ int dd_main(int argc UNUSED_PARAM, char
* conv=noerror just ignores input bad blocks */
n = 0;
}
+ if (flags & FLAG_SWAB) {
+ uint16_t *p16;
+ ssize_t n2;
+
+ /* Our code allows only last read to be odd-sized */
+ if (prev_read_size & 1)
+ bb_error_msg_and_die("can't swab %lu byte buffer",
+ (unsigned long)prev_read_size);
+ prev_read_size = n;
+
+ /* If n is odd, last byte is not swapped:
+ * echo -n "qwe" | dd conv=swab
+ * prints "wqe".
+ */
+ p16 = (void*) ibuf;
+ n2 = (n >> 1);
+ while (--n2 >= 0) {
+ *p16 = bswap_16(*p16);
+ p16++;
+ }
+ }
if ((size_t)n == ibs)
G.in_full++;
else {

@ -1,11 +1,11 @@
--- a/Makefile.flags
+++ b/Makefile.flags
@@ -50,7 +50,7 @@ CFLAGS += $(call cc-option,-fno-builtin-
@@ -51,7 +51,7 @@ CFLAGS += $(call cc-option,-fno-builtin-
# -fno-guess-branch-probability: prohibit pseudo-random guessing
# of branch probabilities (hopefully makes bloatcheck more stable):
CFLAGS += $(call cc-option,-fno-guess-branch-probability,)
-CFLAGS += $(call cc-option,-funsigned-char -static-libgcc,)
+CFLAGS += $(call cc-option,-funsigned-char,)
CFLAGS += $(call cc-option,-falign-functions=1 -falign-jumps=1 -falign-labels=1 -falign-loops=1,)
# FIXME: These warnings are at least partially to be concerned about and should
# Defeat .eh_frame bloat (gcc 4.6.3 x86-32 defconfig: 20% smaller busybox binary):
CFLAGS += $(call cc-option,-fno-unwind-tables,)

@ -1,11 +0,0 @@
--- a/networking/wget.c
+++ b/networking/wget.c
@@ -873,7 +873,7 @@ int wget_main(int argc UNUSED_PARAM, cha
/* Ignored: */
// "tries\0" Required_argument "t"
/* Ignored (we always use PASV): */
- "passive-ftp\0" No_argument "\xff"
+ "passive-ftp\0" No_argument "\xfd"
"header\0" Required_argument "\xfe"
"post-data\0" Required_argument "\xfd"
/* Ignored (we don't do ssl) */

@ -1,6 +1,6 @@
--- a/util-linux/mount.c
+++ b/util-linux/mount.c
@@ -128,9 +128,6 @@
@@ -138,9 +138,6 @@
#if ENABLE_FEATURE_MOUNT_NFS
/* This is just a warning of a common mistake. Possibly this should be a
* uclibc faq entry rather than in busybox... */

@ -1,6 +1,6 @@
--- a/scripts/kconfig/mconf.c
+++ b/scripts/kconfig/mconf.c
@@ -25,6 +25,10 @@
@@ -27,6 +27,10 @@
#include <unistd.h>
#include <locale.h>

@ -1,6 +1,6 @@
--- a/networking/udhcp/dhcpc.c
+++ b/networking/udhcp/dhcpc.c
@@ -602,6 +602,7 @@ static int raw_bcast_from_client_config_
@@ -681,6 +681,7 @@ static int bcast_or_ucast(struct dhcp_pa
static NOINLINE int send_discover(uint32_t xid, uint32_t requested)
{
struct dhcp_packet packet;
@ -8,7 +8,7 @@
/* Fill in: op, htype, hlen, cookie, chaddr fields,
* random xid field (we override it below),
@@ -619,6 +620,7 @@ static NOINLINE int send_discover(uint32
@@ -698,6 +699,7 @@ static NOINLINE int send_discover(uint32
*/
add_client_options(&packet);

@ -1,6 +1,6 @@
--- a/networking/udhcp/dhcpc.c
+++ b/networking/udhcp/dhcpc.c
@@ -1267,6 +1267,12 @@ int udhcpc_main(int argc UNUSED_PARAM, c
@@ -1400,6 +1400,12 @@ int udhcpc_main(int argc UNUSED_PARAM, c
/* silence "uninitialized!" warning */
unsigned timestamp_before_wait = timestamp_before_wait;

@ -0,0 +1,18 @@
--- a/networking/udhcp/common.c
+++ b/networking/udhcp/common.c
@@ -64,6 +64,7 @@ const struct dhcp_optflag dhcp_optflags[
#endif
{ OPTION_STRING , 0xd1 }, /* DHCP_PXE_CONF_FILE */
{ OPTION_6RD , 0xd4 }, /* DHCP_6RD */
+ { OPTION_6RD , 0x96 }, /* DHCP_6RD (Comcast) */
{ OPTION_STATIC_ROUTES | OPTION_LIST , 0xf9 }, /* DHCP_MS_STATIC_ROUTES */
{ OPTION_STRING , 0xfc }, /* DHCP_WPAD */
@@ -131,6 +132,7 @@ const char dhcp_option_strings[] ALIGN1
#endif
"pxeconffile" "\0" /* DHCP_PXE_CONF_FILE */
"ip6rd" "\0" /* DHCP_6RD */
+ "ip6rd" "\0" /* DHCP_6RD (Comcast) */
"msstaticroutes""\0"/* DHCP_MS_STATIC_ROUTES */
"wpad" "\0" /* DHCP_WPAD */
;

@ -1,6 +1,6 @@
--- a/networking/udhcp/dhcpc.c
+++ b/networking/udhcp/dhcpc.c
@@ -1045,7 +1045,6 @@ static void perform_renew(void)
@@ -1087,7 +1087,6 @@ static void perform_renew(void)
state = RENEW_REQUESTED;
break;
case RENEW_REQUESTED: /* impatient are we? fine, square 1 */

@ -1,6 +1,6 @@
--- a/include/applets.src.h
+++ b/include/applets.src.h
@@ -266,6 +266,7 @@ IF_MT(APPLET(mt, BB_DIR_BIN, BB_SUID_DRO
@@ -255,6 +255,7 @@ IF_MT(APPLET(mt, BB_DIR_BIN, BB_SUID_DRO
IF_MV(APPLET(mv, BB_DIR_BIN, BB_SUID_DROP))
IF_NAMEIF(APPLET(nameif, BB_DIR_SBIN, BB_SUID_DROP))
IF_NC(APPLET(nc, BB_DIR_USR_BIN, BB_SUID_DROP))
@ -10,7 +10,7 @@
IF_NOHUP(APPLET(nohup, BB_DIR_USR_BIN, BB_SUID_DROP))
--- a/networking/Config.src
+++ b/networking/Config.src
@@ -612,6 +612,12 @@ config FEATURE_IPCALC_LONG_OPTIONS
@@ -620,6 +620,12 @@ config FEATURE_IPCALC_LONG_OPTIONS
help
Support long options for the ipcalc applet.
@ -96,7 +96,7 @@
+ }
+
+ return 0;
+
+
+fail:
+ close(s);
+ exit(1);

@ -1,6 +1,6 @@
--- a/include/applets.src.h
+++ b/include/applets.src.h
@@ -218,6 +218,7 @@ IF_LN(APPLET_NOEXEC(ln, ln, BB_DIR_BIN,
@@ -212,6 +212,7 @@ IF_LN(APPLET_NOEXEC(ln, ln, BB_DIR_BIN,
IF_LOAD_POLICY(APPLET(load_policy, BB_DIR_USR_SBIN, BB_SUID_DROP))
IF_LOADFONT(APPLET(loadfont, BB_DIR_USR_SBIN, BB_SUID_DROP))
IF_LOADKMAP(APPLET(loadkmap, BB_DIR_SBIN, BB_SUID_DROP))

@ -1,14 +1,14 @@
--- a/networking/ntpd.c
+++ b/networking/ntpd.c
@@ -216,6 +216,7 @@ typedef struct {
@@ -238,6 +238,7 @@ typedef struct {
typedef struct {
len_and_sockaddr *p_lsa;
char *p_dotted;
+ char *p_hostname;
/* when to send new query (if p_fd == -1)
* or when receive times out (if p_fd >= 0): */
int p_fd;
@@ -646,8 +647,9 @@ add_peers(char *s)
int datapoint_idx;
uint32_t lastpkt_refid;
@@ -738,8 +739,9 @@ add_peers(char *s)
peer_t *p;
p = xzalloc(sizeof(*p));
@ -20,7 +20,7 @@
p->p_fd = -1;
p->p_xmt_msg.m_status = MODE_CLIENT | (NTP_VERSION << 3);
p->next_action_time = G.cur_time; /* = set_next(p, 0); */
@@ -696,6 +698,25 @@ send_query_to_peer(peer_t *p)
@@ -788,6 +790,25 @@ send_query_to_peer(peer_t *p)
*
* Uncomment this and use strace to see it in action:
*/

@ -1,6 +1,6 @@
--- a/networking/telnetd.c
+++ b/networking/telnetd.c
@@ -330,6 +330,7 @@ make_new_session(
@@ -331,6 +331,7 @@ make_new_session(
/* Restore default signal handling ASAP */
bb_signals((1 << SIGCHLD) + (1 << SIGPIPE), SIG_DFL);

@ -1,20 +0,0 @@
--- a/networking/udhcp/dhcpc.c
+++ b/networking/udhcp/dhcpc.c
@@ -1319,7 +1319,7 @@ int udhcpc_main(int argc UNUSED_PARAM, c
switch (state) {
case INIT_SELECTING:
- if (packet_num < discover_retries) {
+ if (!discover_retries || packet_num < discover_retries) {
if (packet_num == 0)
xid = random_xid();
/* broadcast */
@@ -1348,7 +1348,7 @@ int udhcpc_main(int argc UNUSED_PARAM, c
packet_num = 0;
continue;
case REQUESTING:
- if (packet_num < discover_retries) {
+ if (!discover_retries || packet_num < discover_retries) {
/* send broadcast select packet */
send_select(xid, server_addr, requested_ip);
timeout = discover_timeout;

@ -1,143 +0,0 @@
--- a/networking/udhcp/common.c
+++ b/networking/udhcp/common.c
@@ -60,6 +60,8 @@ const struct dhcp_optflag dhcp_optflags[
{ OPTION_U8 , 0x85 }, /* DHCP_VLAN_PRIORITY */
#endif
{ OPTION_STATIC_ROUTES , 0xf9 }, /* DHCP_MS_STATIC_ROUTES */
+ { OPTION_6RD , 0xd4 }, /* DHCP_6RD (RFC) */
+ { OPTION_6RD , 0x96 }, /* DHCP_6RD (Comcast) */
{ OPTION_STRING , 0xfc }, /* DHCP_WPAD */
/* Options below have no match in dhcp_option_strings[],
@@ -127,6 +129,8 @@ const char dhcp_option_strings[] ALIGN1
"vlanpriority" "\0"/* DHCP_VLAN_PRIORITY */
#endif
"msstaticroutes""\0"/* DHCP_MS_STATIC_ROUTES */
+ "ip6rd" "\0" /* DHCP_6RD (RFC) */
+ "ip6rd" "\0" /* DHCP_6RD (Comcast) */
"wpad" "\0" /* DHCP_WPAD */
;
@@ -155,6 +159,7 @@ const uint8_t dhcp_option_lengths[] ALIG
[OPTION_S32] = 4,
/* Just like OPTION_STRING, we use minimum length here */
[OPTION_STATIC_ROUTES] = 5,
+ [OPTION_6RD] = 22,
};
--- a/networking/udhcp/common.h
+++ b/networking/udhcp/common.h
@@ -91,6 +91,7 @@ enum {
OPTION_S32,
OPTION_BIN,
OPTION_STATIC_ROUTES,
+ OPTION_6RD,
#if ENABLE_FEATURE_UDHCP_RFC3397
OPTION_DNS_STRING, /* RFC1035 compressed domain name list */
OPTION_SIP_SERVERS,
--- a/networking/udhcp/dhcpc.c
+++ b/networking/udhcp/dhcpc.c
@@ -100,6 +100,7 @@ static const uint8_t len_of_option_as_st
[OPTION_IP ] = sizeof("255.255.255.255 "),
[OPTION_IP_PAIR ] = sizeof("255.255.255.255 ") * 2,
[OPTION_STATIC_ROUTES ] = sizeof("255.255.255.255/32 255.255.255.255 "),
+ [OPTION_6RD ] = sizeof("32 128 FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF 255.255.255.255 "),
[OPTION_STRING ] = 1,
[OPTION_STRING_HOST ] = 1,
#if ENABLE_FEATURE_UDHCP_RFC3397
@@ -124,6 +125,23 @@ static int sprint_nip(char *dest, const
return sprintf(dest, "%s%u.%u.%u.%u", pre, ip[0], ip[1], ip[2], ip[3]);
}
+static int sprint_nip6(char *dest, const char *pre, const uint8_t *ip)
+{
+ int len = 0;
+ int off;
+ uint16_t word;
+
+ len += sprintf(dest, "%s", pre);
+
+ for (off = 0; off < 16; off += 2)
+ {
+ move_from_unaligned16(word, &ip[off]);
+ len += sprintf(dest+len, "%s%04X", off ? ":" : "", htons(word));
+ }
+
+ return len;
+}
+
/* really simple implementation, just count the bits */
static int mton(uint32_t mask)
{
@@ -292,6 +310,70 @@ static NOINLINE char *xmalloc_optname_op
}
return ret;
+ }
+ case OPTION_6RD: {
+ /* Option binary format:
+ * 0 1 2 3
+ * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ * | OPTION_6RD | option-length | IPv4MaskLen | 6rdPrefixLen |
+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ * | |
+ * | 6rdPrefix |
+ * | (16 octets) |
+ * | |
+ * | |
+ * | |
+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ * | 6rdBRIPv4Address(es) |
+ * . .
+ * . .
+ * . .
+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ *
+ * We convert it to a string "IPv4MaskLen 6rdPrefixLen 6rdPrefix 6rdBRIPv4Address"
+ */
+
+ /* Sanity check: ensure that our length is at least 22 bytes, that
+ * IPv4MaskLen is <= 32, 6rdPrefixLen <= 128 and that the sum of
+ * (32 - IPv4MaskLen) + 6rdPrefixLen is less than or equal to 128.
+ * If any of these requirements is not fulfilled, return with empty
+ * value.
+ */
+ if ((len >= 22) && (*option <= 32) && (*(option+1) <= 128) &&
+ (((32 - *option) + *(option+1)) <= 128))
+ {
+ /* IPv4MaskLen */
+ dest += sprintf(dest, "%u ", *option++);
+ len--;
+
+ /* 6rdPrefixLen */
+ dest += sprintf(dest, "%u ", *option++);
+ len--;
+
+ /* 6rdPrefix */
+ dest += sprint_nip6(dest, "", option);
+ option += 16;
+ len -= 16;
+
+ /* 6rdBRIPv4Addresses */
+ while (len >= 4)
+ {
+ dest += sprint_nip(dest, " ", option);
+ option += 4;
+ len -= 4;
+
+ /* the code to determine the option size fails to work with
+ * lengths that are not a multiple of the minimum length,
+ * adding all advertised 6rdBRIPv4Addresses here would
+ * overflow the destination buffer, therefore skip the rest
+ * for now
+ */
+ break;
+ }
+ }
+
+ return ret;
}
#if ENABLE_FEATURE_UDHCP_RFC3397
case OPTION_DNS_STRING:

@ -1,34 +0,0 @@
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -12611,8 +12611,17 @@ exportcmd(int argc UNUSED_PARAM, char **
const char *p;
char **aptr;
int flag = argv[0][0] == 'r' ? VREADONLY : VEXPORT;
+ int mask = ~0;
+ int nopt;
+ while ((nopt = nextopt("np"))) {
+ if (nopt == 'n') {
+ mask = ~flag;
+ } else { /* p */
+ break;
+ }
+ }
- if (nextopt("p") != 'p') {
+ if (nopt != 'p') {
aptr = argptr;
name = *aptr;
if (name) {
@@ -12624,10 +12633,11 @@ exportcmd(int argc UNUSED_PARAM, char **
vp = *findvar(hashvar(name), name);
if (vp) {
vp->flags |= flag;
+ vp->flags &= mask;
continue;
}
}
- setvar(name, p, flag);
+ setvar(name, p, flag & mask);
} while ((name = *++aptr) != NULL);
return 0;
}

@ -8,7 +8,7 @@
//usage: "\n"
//usage: "\nRecognized TIME formats:"
//usage: "\n hh:mm[:ss]"
@@ -135,6 +136,7 @@
@@ -138,6 +139,7 @@
//usage: "Wed Apr 12 18:52:41 MDT 2000\n"
#include "libbb.h"
@ -16,7 +16,7 @@
#if ENABLE_FEATURE_DATE_NANO
# include <sys/syscall.h>
#endif
@@ -145,8 +147,9 @@ enum {
@@ -148,8 +150,9 @@ enum {
OPT_UTC = (1 << 2), /* u */
OPT_DATE = (1 << 3), /* d */
OPT_REFERENCE = (1 << 4), /* r */
@ -28,7 +28,7 @@
};
static void maybe_set_utc(int opt)
@@ -164,12 +167,15 @@ static const char date_longopts[] ALIGN1
@@ -167,12 +170,15 @@ static const char date_longopts[] ALIGN1
/* "universal\0" No_argument "u" */
"date\0" Required_argument "d"
"reference\0" Required_argument "r"
@ -44,7 +44,7 @@
struct timespec ts;
struct tm tm_time;
char buf_fmt_dt2str[64];
@@ -184,7 +190,7 @@ int date_main(int argc UNUSED_PARAM, cha
@@ -187,7 +193,7 @@ int date_main(int argc UNUSED_PARAM, cha
opt_complementary = "d--s:s--d"
IF_FEATURE_DATE_ISOFMT(":R--I:I--R");
IF_LONG_OPTS(applet_long_options = date_longopts;)
@ -53,7 +53,7 @@
IF_FEATURE_DATE_ISOFMT("I::D:"),
&date_str, &date_str, &filename
IF_FEATURE_DATE_ISOFMT(, &isofmt_arg, &fmt_str2dt));
@@ -241,6 +247,31 @@ int date_main(int argc UNUSED_PARAM, cha
@@ -244,6 +250,31 @@ int date_main(int argc UNUSED_PARAM, cha
if (*argv)
bb_show_usage();

@ -1,12 +0,0 @@
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -6846,8 +6846,7 @@ evalvar(char *p, int flags, struct strli
patloc = expdest - (char *)stackblock();
if (NULL == subevalvar(p, /* varname: */ NULL, patloc, subtype,
startloc, varflags,
-//TODO: | EXP_REDIR too? All other such places do it too
- /* quotes: */ flags & (EXP_FULL | EXP_CASE),
+ /* quotes: */ flags & (EXP_FULL | EXP_CASE | EXP_REDIR),
var_str_list)
) {
int amount = expdest - (

@ -1,22 +0,0 @@
--- a/networking/vconfig.c
+++ b/networking/vconfig.c
@@ -116,8 +116,6 @@ static const char name_types[] ALIGN1 =
'_', 'N', 'O', '_', 'P', 'A', 'D', 0,
};
-static const char conf_file_name[] ALIGN1 = "/proc/net/vlan/config";
-
int vconfig_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int vconfig_main(int argc, char **argv)
{
@@ -129,10 +127,6 @@ int vconfig_main(int argc, char **argv)
bb_show_usage();
}
- /* Don't bother closing the filedes. It will be closed on cleanup. */
- /* Will die if 802.1q is not present */
- xopen(conf_file_name, O_RDONLY);
-
memset(&ifr, 0, sizeof(ifr));
++argv;

@ -1,29 +0,0 @@
From b7841cf7b919b16d1bd4619154bf7cb4c22b4ccd Mon Sep 17 00:00:00 2001
From: Paul Marks <paul@pmarks.net>
Date: Mon, 14 Jan 2013 01:39:10 +0000
Subject: ntpd: fix incorrect m_status field in outgoing packets. Closes 5120
When using busybox ntpd with an NTPv3 client and NTPv4 server (or vice
versa), the version numbers can be incorrectly ORed together, yielding
the bogus value of "NTPv7". This makes ntpd unusable with clients
such as Chrony and Windows "Internet Time".
This patch avoids the version mangling, by copying only the Leap
Indicator bits from the server's status field.
Signed-off-by: Paul Marks <paul@pmarks.net>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
---
(limited to 'networking/ntpd.c')
--- a/networking/ntpd.c
+++ b/networking/ntpd.c
@@ -1794,7 +1794,7 @@ recv_and_process_client_pkt(void /*int f
/* Build a reply packet */
memset(&msg, 0, sizeof(msg));
- msg.m_status = G.stratum < MAXSTRAT ? G.ntp_status : LI_ALARM;
+ msg.m_status = G.stratum < MAXSTRAT ? (G.ntp_status & LI_MASK) : LI_ALARM;
msg.m_status |= (query_status & VERSION_MASK);
msg.m_status |= ((query_status & MODE_MASK) == MODE_CLIENT) ?
MODE_SERVER : MODE_SYM_PAS;

@ -1,11 +0,0 @@
--- a/libbb/dump.c
+++ b/libbb/dump.c
@@ -301,7 +301,7 @@ static NOINLINE void rewrite(priv_dumper
) {
fu->reps += (dumper->blocksize - fs->bcnt) / fu->bcnt;
}
- if (fu->reps > 1) {
+ if (fu->reps > 1 && fu->nextpr) {
for (pr = fu->nextpr;; pr = pr->nextpr)
if (!pr->nextpr)
break;

@ -1,86 +0,0 @@
--- a/networking/udhcp/dhcpc.c
+++ b/networking/udhcp/dhcpc.c
@@ -26,8 +26,8 @@
#include "dhcpc.h"
#include <netinet/if_ether.h>
-#include <netpacket/packet.h>
#include <linux/filter.h>
+#include <linux/if_packet.h>
/* struct client_config_t client_config is in bb_common_bufsiz1 */
@@ -846,17 +846,41 @@ static int send_release(uint32_t server,
static NOINLINE int udhcp_recv_raw_packet(struct dhcp_packet *dhcp_pkt, int fd)
{
int bytes;
+ int nocsum = 0;
struct ip_udp_dhcp_packet packet;
uint16_t check;
+ unsigned char cmsgbuf[CMSG_LEN(sizeof(struct tpacket_auxdata))];
+ struct iovec iov = {
+ .iov_base = &packet,
+ .iov_len = sizeof(packet),
+ };
+ struct msghdr msg = {
+ .msg_iov = &iov,
+ .msg_iovlen = 1,
+ .msg_control = cmsgbuf,
+ .msg_controllen = sizeof(cmsgbuf),
+ };
+ struct cmsghdr *cmsg;
memset(&packet, 0, sizeof(packet));
- bytes = safe_read(fd, &packet, sizeof(packet));
+ do {
+ bytes = recvmsg(fd, &msg, 0);
+ } while (bytes < 0 && errno == EINTR);
+
if (bytes < 0) {
log1("Packet read error, ignoring");
/* NB: possible down interface, etc. Caller should pause. */
return bytes; /* returns -1 */
}
+ for (cmsg = CMSG_FIRSTHDR(&msg); cmsg; cmsg = CMSG_NXTHDR(&msg, cmsg)) {
+ if (cmsg->cmsg_level == SOL_PACKET &&
+ cmsg->cmsg_type == PACKET_AUXDATA) {
+ struct tpacket_auxdata *aux = (void *)CMSG_DATA(cmsg);
+ nocsum = aux->tp_status & TP_STATUS_CSUMNOTREADY;
+ }
+ }
+
if (bytes < (int) (sizeof(packet.ip) + sizeof(packet.udp))) {
log1("Packet is too short, ignoring");
return -2;
@@ -896,7 +920,7 @@ static NOINLINE int udhcp_recv_raw_packe
packet.ip.tot_len = packet.udp.len; /* yes, this is needed */
check = packet.udp.check;
packet.udp.check = 0;
- if (check && check != udhcp_checksum(&packet, bytes)) {
+ if (!nocsum && check && check != udhcp_checksum(&packet, bytes)) {
log1("Packet with bad UDP checksum received, ignoring");
return -2;
}
@@ -942,6 +966,7 @@ static int udhcp_raw_socket(int ifindex)
{
int fd;
struct sockaddr_ll sock;
+ int val;
/*
* Comment:
@@ -1008,6 +1033,13 @@ static int udhcp_raw_socket(int ifindex)
log1("Attached filter to raw socket fd %d", fd); // log?
}
+ val = 1;
+ if (setsockopt(fd, SOL_PACKET, PACKET_AUXDATA, &val,
+ sizeof(val)) < 0) {
+ if (errno != ENOPROTOOPT)
+ log1("Failed to set auxiliary packet data for socket fd %d", fd);
+ }
+
log1("Created raw socket");
return fd;

@ -1,16 +0,0 @@
--- a/include/platform.h
+++ b/include/platform.h
@@ -443,6 +443,13 @@ typedef unsigned smalluint;
# undef HAVE_NET_ETHERNET_H
#endif
+#if defined(__musl__)
+# undef HAVE_SETBIT
+# include <stddef.h>
+# include <termios.h>
+# include <sys/ioctl.h>
+#endif
+
/*
* Now, define prototypes for all the functions defined in platform.c
* These must come after all the HAVE_* macros are defined (or not)
Loading…
Cancel
Save