Hi, this patch updates busybox to 1.20.0.
The only patch i wasn't shure about was 310-passwd_access.patch - this patch isn't included. Signed-off-by: Peter Wagner <tripo...@gmx.at>
diff --git a/package/busybox/Makefile b/package/busybox/Makefile index af27df0..571c448 100644 --- a/package/busybox/Makefile +++ b/package/busybox/Makefile @@ -8,14 +8,14 @@ include $(TOPDIR)/rules.mk PKG_NAME:=busybox -PKG_VERSION:=1.19.4 +PKG_VERSION:=1.20.0 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:=4334b34fa1cdae54e9d2dc174f35c9ae PKG_BUILD_DEPENDS:=BUSYBOX_USE_LIBRPC:librpc PKG_BUILD_PARALLEL:=1 diff --git a/package/busybox/busybox-1.20.0-sed.patch b/package/busybox/busybox-1.20.0-sed.patch new file mode 100644 index 0000000..70dc63f --- /dev/null +++ b/package/busybox/busybox-1.20.0-sed.patch @@ -0,0 +1,29 @@ +--- busybox-1.20.0/editors/sed.c ++++ busybox-1.20.0-sed/editors/sed.c +@@ -743,7 +743,7 @@ static int do_subst_command(sed_cmd_t *s + */ + if (!G.regmatch[0].rm_so && !G.regmatch[0].rm_eo && match_count) { + pipe_putc(*line++); +- continue; ++ goto next; + } + + match_count++; +@@ -755,7 +755,7 @@ static int do_subst_command(sed_cmd_t *s + ) { + for (i = 0; i < G.regmatch[0].rm_eo; i++) + pipe_putc(*line++); +- continue; ++ goto next; + } + + /* print everything before the match */ +@@ -773,7 +773,7 @@ static int do_subst_command(sed_cmd_t *s + /* if we're not doing this globally, get out now */ + if (sed_cmd->which_match != 0) + break; +- ++ next: + if (*line == '\0') + break; + diff --git a/package/busybox/config/Config.in b/package/busybox/config/Config.in index 0045036..cddc2f6 100644 --- a/package/busybox/config/Config.in +++ b/package/busybox/config/Config.in @@ -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 y 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 y 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 y 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 @@ -598,12 +599,39 @@ config BUSYBOX_CONFIG_CROSS_COMPILER_PREFIX Native builds leave this empty. +config BUSYBOX_CONFIG_SYSROOT + string "Path to sysroot" + default "" + 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 "" help Additional CFLAGS to pass to the compiler verbatim. +config BUSYBOX_CONFIG_EXTRA_LDFLAGS + string "Additional LDFLAGS" + default "" + help + Additional LDFLAGS to pass to the linker verbatim. + +config BUSYBOX_CONFIG_EXTRA_LDLIBS + string "Additional LDLIBS" + default "" + help + Additional LDLIBS to pass to the linker with -l. + endmenu menu 'Debugging Options' diff --git a/package/busybox/config/archival/Config.in b/package/busybox/config/archival/Config.in index d2bfa48..fa3d18c 100644 --- a/package/busybox/config/archival/Config.in +++ b/package/busybox/config/archival/Config.in @@ -7,7 +7,6 @@ menu "Archival Utilities" - config BUSYBOX_CONFIG_FEATURE_SEAMLESS_XZ bool "Make tar, rpm, modprobe etc understand .xz data" default n @@ -33,10 +32,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 n help - Make tar and gunzip understand .Z data. + Make tar, rpm, modprobe etc understand .Z data. config BUSYBOX_CONFIG_AR bool "ar" @@ -188,6 +187,18 @@ 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 0 + 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 n @@ -331,12 +342,9 @@ config BUSYBOX_CONFIG_UNLZMA is generally considerably better than that achieved by the bzip2 compressors. - The BusyBox unlzma applet is limited to de-compression only. + The BusyBox unlzma applet is limited to decompression 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 n diff --git a/package/busybox/config/console-tools/Config.in b/package/busybox/config/console-tools/Config.in index 9069b0f..d996230 100644 --- a/package/busybox/config/console-tools/Config.in +++ b/package/busybox/config/console-tools/Config.in @@ -7,7 +7,6 @@ menu "Console Utilities" - config BUSYBOX_CONFIG_CHVT bool "chvt" default n diff --git a/package/busybox/config/coreutils/Config.in b/package/busybox/config/coreutils/Config.in index d055e4f..3e284d0 100644 --- a/package/busybox/config/coreutils/Config.in +++ b/package/busybox/config/coreutils/Config.in @@ -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 y + help + hostid prints the numeric identifier (in hexadecimal) for + the current host. config BUSYBOX_CONFIG_ID bool "id" default y @@ -88,6 +94,13 @@ 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_SUSV3 + bool "Add support for SUSV3 features (-d -t -r)" + default n + 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 y @@ -393,13 +406,6 @@ config BUSYBOX_CONFIG_FEATURE_FANCY_HEAD help This enables the head options (-c, -q, and -v). -config BUSYBOX_CONFIG_HOSTID - bool "hostid" - default y - help - hostid prints the numeric identifier (in hexadecimal) for - the current host. - config BUSYBOX_CONFIG_INSTALL bool "install" default n diff --git a/package/busybox/config/debianutils/Config.in b/package/busybox/config/debianutils/Config.in index be69666..093d62b 100644 --- a/package/busybox/config/debianutils/Config.in +++ b/package/busybox/config/debianutils/Config.in @@ -7,7 +7,6 @@ menu "Debian Utilities" - config BUSYBOX_CONFIG_MKTEMP bool "mktemp" default y diff --git a/package/busybox/config/e2fsprogs/Config.in b/package/busybox/config/e2fsprogs/Config.in index 282681d..ba7fb3b 100644 --- a/package/busybox/config/e2fsprogs/Config.in +++ b/package/busybox/config/e2fsprogs/Config.in @@ -7,7 +7,6 @@ menu "Linux Ext2 FS Progs" - config BUSYBOX_CONFIG_CHATTR bool "chattr" default n diff --git a/package/busybox/config/e2fsprogs/old_e2fsprogs/Config.in b/package/busybox/config/e2fsprogs/old_e2fsprogs/Config.in index 105c93a..c4b6c05 100644 --- a/package/busybox/config/e2fsprogs/old_e2fsprogs/Config.in +++ b/package/busybox/config/e2fsprogs/old_e2fsprogs/Config.in @@ -7,7 +7,6 @@ menu "Linux Ext2 FS Progs" - config BUSYBOX_CONFIG_CHATTR bool "chattr" default n diff --git a/package/busybox/config/libbb/Config.in b/package/busybox/config/libbb/Config.in index 6475403..4b7ae4f 100644 --- a/package/busybox/config/libbb/Config.in +++ b/package/busybox/config/libbb/Config.in @@ -28,7 +28,7 @@ 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 2 range 0 3 @@ -108,6 +108,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 n + 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 n @@ -198,8 +205,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. diff --git a/package/busybox/config/loginutils/Config.in b/package/busybox/config/loginutils/Config.in index 8c32851..1043b51 100644 --- a/package/busybox/config/loginutils/Config.in +++ b/package/busybox/config/loginutils/Config.in @@ -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 n 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 n @@ -288,6 +299,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 "md5" + 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 n diff --git a/package/busybox/config/mailutils/Config.in b/package/busybox/config/mailutils/Config.in index 8db3031..f2d3a8d 100644 --- a/package/busybox/config/mailutils/Config.in +++ b/package/busybox/config/mailutils/Config.in @@ -2,7 +2,6 @@ menu "Mail Utilities" - config BUSYBOX_CONFIG_MAKEMIME bool "makemime" default n diff --git a/package/busybox/config/miscutils/Config.in b/package/busybox/config/miscutils/Config.in index e69d684..aeef44d 100644 --- a/package/busybox/config/miscutils/Config.in +++ b/package/busybox/config/miscutils/Config.in @@ -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 n 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" diff --git a/package/busybox/config/networking/Config.in b/package/busybox/config/networking/Config.in index 3df7b1f..90cdc75 100644 --- a/package/busybox/config/networking/Config.in +++ b/package/busybox/config/networking/Config.in @@ -102,7 +102,7 @@ config BUSYBOX_CONFIG_WHOIS config BUSYBOX_CONFIG_FEATURE_IPV6 bool "Enable IPv6 support" - default IPV6 + default y help Enable IPv6 support in busybox. This adds IPv6 support in the networking applets. @@ -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 n 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 diff --git a/package/busybox/config/networking/udhcp/Config.in b/package/busybox/config/networking/udhcp/Config.in index f4d26ec..4c21508 100644 --- a/package/busybox/config/networking/udhcp/Config.in +++ b/package/busybox/config/networking/udhcp/Config.in @@ -4,7 +4,11 @@ # see scripts/kbuild/config-language.txt. # - +config BUSYBOX_CONFIG_UDHCPC6 + bool "udhcp client for DHCPv6 (udhcpc6)" + default n # not yet ready + help + udhcpc6 is a DHCPv6 client config BUSYBOX_CONFIG_UDHCPD bool "udhcp server (udhcpd)" diff --git a/package/busybox/config/printutils/Config.in b/package/busybox/config/printutils/Config.in index ca2ea9f..8ee9f20 100644 --- a/package/busybox/config/printutils/Config.in +++ b/package/busybox/config/printutils/Config.in @@ -7,7 +7,6 @@ menu "Print Utilities" - config BUSYBOX_CONFIG_LPD bool "lpd" default n diff --git a/package/busybox/config/procps/Config.in b/package/busybox/config/procps/Config.in index 25eb3e5..0bd0711 100644 --- a/package/busybox/config/procps/Config.in +++ b/package/busybox/config/procps/Config.in @@ -11,6 +11,12 @@ config BUSYBOX_CONFIG_IOSTAT default n help Report CPU and I/O statistics +config BUSYBOX_CONFIG_LSOF + bool "lsof" + default n + 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 n @@ -146,12 +152,20 @@ config BUSYBOX_CONFIG_PS config BUSYBOX_CONFIG_FEATURE_PS_WIDE bool "Enable wide output option (-w)" default y - 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 n + 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 n diff --git a/package/busybox/config/runit/Config.in b/package/busybox/config/runit/Config.in index 9d7c597..ed07c5a 100644 --- a/package/busybox/config/runit/Config.in +++ b/package/busybox/config/runit/Config.in @@ -7,7 +7,6 @@ menu "Runit Utilities" - config BUSYBOX_CONFIG_RUNSV bool "runsv" default n diff --git a/package/busybox/config/selinux/Config.in b/package/busybox/config/selinux/Config.in index e7317ca..d9e8397 100644 --- a/package/busybox/config/selinux/Config.in +++ b/package/busybox/config/selinux/Config.in @@ -8,7 +8,6 @@ menu "SELinux Utilities" depends on BUSYBOX_CONFIG_SELINUX - config BUSYBOX_CONFIG_CHCON bool "chcon" default n diff --git a/package/busybox/config/shell/Config.in b/package/busybox/config/shell/Config.in index a271a38..c8e8eef 100644 --- a/package/busybox/config/shell/Config.in +++ b/package/busybox/config/shell/Config.in @@ -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 n @@ -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 diff --git a/package/busybox/config/sysklogd/Config.in b/package/busybox/config/sysklogd/Config.in index 20e1aff..2e9b9c6 100644 --- a/package/busybox/config/sysklogd/Config.in +++ b/package/busybox/config/sysklogd/Config.in @@ -7,7 +7,6 @@ menu "System Logging Utilities" - config BUSYBOX_CONFIG_SYSLOGD bool "syslogd" default y diff --git a/package/busybox/config/util-linux/Config.in b/package/busybox/config/util-linux/Config.in index 14d4777..de6a029 100644 --- a/package/busybox/config/util-linux/Config.in +++ b/package/busybox/config/util-linux/Config.in @@ -11,6 +11,63 @@ config BUSYBOX_CONFIG_BLOCKDEV default n help Performs some ioctls with block devices. +config BUSYBOX_CONFIG_MDEV + bool "mdev" + default n + 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 n + 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 n + 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 n + 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 n + 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 n + 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 n @@ -414,64 +471,6 @@ config BUSYBOX_CONFIG_LSUSB This version uses sysfs (/sys/bus/usb/devices) only. -config BUSYBOX_CONFIG_MDEV - bool "mdev" - default n - 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 n - 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 n - 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 n - 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 n - 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 n - 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 n @@ -553,13 +552,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 n 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" diff --git a/package/busybox/patches/000-getty.patch b/package/busybox/patches/000-getty.patch new file mode 100644 index 0000000..ed52159 --- /dev/null +++ b/package/busybox/patches/000-getty.patch @@ -0,0 +1,17 @@ +--- busybox-1.20.0/loginutils/getty.c ++++ busybox-1.20.0-getty/loginutils/getty.c +@@ -561,8 +561,14 @@ int getty_main(int argc UNUSED_PARAM, ch + */ + fd = open("/dev/tty", O_RDWR | O_NONBLOCK); + if (fd >= 0) { ++ /* TIOCNOTTY sends SIGHUP to the foreground ++ * process group - which may include us! ++ * Make sure to not die on it: ++ */ ++ sighandler_t old = signal(SIGHUP, SIG_IGN); + ioctl(fd, TIOCNOTTY); + close(fd); ++ signal(SIGHUP, old); + } + } + diff --git a/package/busybox/patches/000-lineedit.patch b/package/busybox/patches/000-lineedit.patch new file mode 100644 index 0000000..ee236ff --- /dev/null +++ b/package/busybox/patches/000-lineedit.patch @@ -0,0 +1,22 @@ +--- busybox-1.20.0/libbb/lineedit.c ++++ busybox-1.20.0-lineedit/libbb/lineedit.c +@@ -1352,8 +1352,7 @@ static void load_history(line_input_t *s + /* fill temp_h[], retaining only last MAX_HISTORY lines */ + memset(temp_h, 0, sizeof(temp_h)); + idx = 0; +- if (!ENABLE_FEATURE_EDITING_SAVE_ON_EXIT) +- st_parm->cnt_history_in_file = 0; ++ st_parm->cnt_history_in_file = 0; + while ((line = xmalloc_fgetline(fp)) != NULL) { + if (line[0] == '\0') { + free(line); +@@ -1361,8 +1360,7 @@ static void load_history(line_input_t *s + } + free(temp_h[idx]); + temp_h[idx] = line; +- if (!ENABLE_FEATURE_EDITING_SAVE_ON_EXIT) +- st_parm->cnt_history_in_file++; ++ st_parm->cnt_history_in_file++; + idx++; + if (idx == st_parm->max_history) + idx = 0; diff --git a/package/busybox/patches/000-sed.patch b/package/busybox/patches/000-sed.patch new file mode 100644 index 0000000..70dc63f --- /dev/null +++ b/package/busybox/patches/000-sed.patch @@ -0,0 +1,29 @@ +--- busybox-1.20.0/editors/sed.c ++++ busybox-1.20.0-sed/editors/sed.c +@@ -743,7 +743,7 @@ static int do_subst_command(sed_cmd_t *s + */ + if (!G.regmatch[0].rm_so && !G.regmatch[0].rm_eo && match_count) { + pipe_putc(*line++); +- continue; ++ goto next; + } + + match_count++; +@@ -755,7 +755,7 @@ static int do_subst_command(sed_cmd_t *s + ) { + for (i = 0; i < G.regmatch[0].rm_eo; i++) + pipe_putc(*line++); +- continue; ++ goto next; + } + + /* print everything before the match */ +@@ -773,7 +773,7 @@ static int do_subst_command(sed_cmd_t *s + /* if we're not doing this globally, get out now */ + if (sed_cmd->which_match != 0) + break; +- ++ next: + if (*line == '\0') + break; + diff --git a/package/busybox/patches/002-passwd_use_md5_hash_by_default_like_it_used_to_be.patch b/package/busybox/patches/002-passwd_use_md5_hash_by_default_like_it_used_to_be.patch deleted file mode 100644 index ff79f3e..0000000 --- a/package/busybox/patches/002-passwd_use_md5_hash_by_default_like_it_used_to_be.patch +++ /dev/null @@ -1,20 +0,0 @@ -From eb80c2a5315ed08bd329448217695375d89732c9 Mon Sep 17 00:00:00 2001 -From: Nicolas Thill <n...@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; diff --git a/package/busybox/patches/004-upstream-percent_decode_in_place.patch b/package/busybox/patches/004-upstream-percent_decode_in_place.patch deleted file mode 100644 index d94ee47..0000000 --- a/package/busybox/patches/004-upstream-percent_decode_in_place.patch +++ /dev/null @@ -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.li...@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.li...@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%20p...@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%20p...@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)); - } diff --git a/package/busybox/patches/241-udhcpc-oversized_packets.patch b/package/busybox/patches/241-udhcpc-oversized_packets.patch index 471d704..0ad5f3f 100644 --- a/package/busybox/patches/241-udhcpc-oversized_packets.patch +++ b/package/busybox/patches/241-udhcpc-oversized_packets.patch @@ -1,7 +1,9 @@ +diff --git a/networking/udhcp/packet.c b/networking/udhcp/packet.c +index 33c9585..e2cef85 100644 --- a/networking/udhcp/packet.c +++ b/networking/udhcp/packet.c -@@ -158,6 +158,11 @@ uint16_t FAST_FUNC udhcp_checksum(void * - return ~sum; +@@ -101,6 +101,11 @@ int FAST_FUNC udhcp_recv_kernel_packet(struct dhcp_packet *packet, int fd) + return bytes; } +int udhcp_get_payload_len(struct dhcp_packet *dhcp_pkt) @@ -12,7 +14,7 @@ /* Construct a ip/udp header for a packet, send packet */ int FAST_FUNC udhcp_send_raw_packet(struct dhcp_packet *dhcp_pkt, uint32_t source_nip, int source_port, -@@ -166,10 +171,10 @@ int FAST_FUNC udhcp_send_raw_packet(stru +@@ -109,10 +114,10 @@ int FAST_FUNC udhcp_send_raw_packet(struct dhcp_packet *dhcp_pkt, { struct sockaddr_ll dest_sll; struct ip_udp_dhcp_packet packet; @@ -24,7 +26,7 @@ fd = socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_IP)); if (fd < 0) { -@@ -178,8 +183,8 @@ int FAST_FUNC udhcp_send_raw_packet(stru +@@ -121,8 +126,8 @@ int FAST_FUNC udhcp_send_raw_packet(struct dhcp_packet *dhcp_pkt, } memset(&dest_sll, 0, sizeof(dest_sll)); @@ -35,7 +37,7 @@ dest_sll.sll_family = AF_PACKET; dest_sll.sll_protocol = htons(ETH_P_IP); -@@ -192,36 +197,24 @@ int FAST_FUNC udhcp_send_raw_packet(stru +@@ -135,37 +140,24 @@ int FAST_FUNC udhcp_send_raw_packet(struct dhcp_packet *dhcp_pkt, goto ret_close; } @@ -61,16 +63,17 @@ + p_len += sizeof(packet.udp); + packet.udp.len = htons(p_len); packet.ip.tot_len = packet.udp.len; -- packet.udp.check = udhcp_checksum(&packet, IP_UDP_DHCP_SIZE - padding); +- packet.udp.check = inet_cksum((uint16_t *)&packet, +- IP_UDP_DHCP_SIZE - padding); - /* but for sending, it is set to IP packet len */ - packet.ip.tot_len = htons(IP_UDP_DHCP_SIZE - padding); + p_len += sizeof(packet.ip); -+ packet.udp.check = udhcp_checksum(&packet, p_len); ++ packet.udp.check = inet_cksum((uint16_t *)&packet, p_len); + packet.ip.tot_len = htons(p_len); packet.ip.ihl = sizeof(packet.ip) >> 2; packet.ip.version = IPVERSION; packet.ip.ttl = IPDEFTTL; - packet.ip.check = udhcp_checksum(&packet.ip, sizeof(packet.ip)); + packet.ip.check = inet_cksum((uint16_t *)&packet.ip, sizeof(packet.ip)); udhcp_dump_packet(dhcp_pkt); - result = sendto(fd, &packet, IP_UDP_DHCP_SIZE - padding, /*flags:*/ 0, @@ -78,19 +81,18 @@ (struct sockaddr *) &dest_sll, sizeof(dest_sll)); msg = "sendto"; ret_close: -@@ -239,7 +232,6 @@ int FAST_FUNC udhcp_send_kernel_packet(s +@@ -183,7 +175,6 @@ int FAST_FUNC udhcp_send_kernel_packet(struct dhcp_packet *dhcp_pkt, uint32_t dest_nip, int dest_port) { - struct sockaddr_in client; + struct sockaddr_in sa; - unsigned padding; int fd; int result = -1; const char *msg; -@@ -270,9 +262,7 @@ int FAST_FUNC udhcp_send_kernel_packet(s +@@ -214,8 +205,7 @@ int FAST_FUNC udhcp_send_kernel_packet(struct dhcp_packet *dhcp_pkt, } udhcp_dump_packet(dhcp_pkt); -- - padding = DHCP_OPTIONS_BUFSIZE - 1 - udhcp_end_option(dhcp_pkt->options); - result = safe_write(fd, dhcp_pkt, DHCP_SIZE - padding); + result = safe_write(fd, dhcp_pkt, udhcp_get_payload_len(dhcp_pkt)); diff --git a/package/busybox/patches/244-udhcpc_add_6rd_option.patch b/package/busybox/patches/244-udhcpc_add_6rd_option.patch index 9e30ef7..e17f74b 100644 --- a/package/busybox/patches/244-udhcpc_add_6rd_option.patch +++ b/package/busybox/patches/244-udhcpc_add_6rd_option.patch @@ -1,143 +1,24 @@ +diff --git a/networking/udhcp/common.c b/networking/udhcp/common.c +index ae0e0d3..147e176 100644 --- a/networking/udhcp/common.c +++ b/networking/udhcp/common.c -@@ -60,6 +60,8 @@ const struct dhcp_optflag dhcp_optflags[ +@@ -62,7 +62,8 @@ const struct dhcp_optflag dhcp_optflags[] = { + { OPTION_U16 , 0x84 }, /* DHCP_VLAN_ID */ { OPTION_U8 , 0x85 }, /* DHCP_VLAN_PRIORITY */ #endif - { OPTION_STATIC_ROUTES , 0xf9 }, /* DHCP_MS_STATIC_ROUTES */ +- { OPTION_6RD , 0xd4 }, /* DHCP_6RD */ + { OPTION_6RD , 0xd4 }, /* DHCP_6RD (RFC) */ + { OPTION_6RD , 0x96 }, /* DHCP_6RD (Comcast) */ + { OPTION_STATIC_ROUTES | OPTION_LIST , 0xf9 }, /* DHCP_MS_STATIC_ROUTES */ { OPTION_STRING , 0xfc }, /* DHCP_WPAD */ - /* Options below have no match in dhcp_option_strings[], -@@ -127,6 +129,8 @@ const char dhcp_option_strings[] ALIGN1 +@@ -128,7 +129,8 @@ const char dhcp_option_strings[] ALIGN1 = + "vlanid" "\0" /* DHCP_VLAN_ID */ "vlanpriority" "\0"/* DHCP_VLAN_PRIORITY */ #endif +- "ip6rd" "\0" /* DHCP_6RD */ ++ "ip6rd" "\0" /* DHCP_6RD (RFC) */ ++ "ip6rd" "\0" /* DHCP_6RD (Comcast) */ "msstaticroutes""\0"/* DHCP_MS_STATIC_ROUTES */ -+ "ip6rd" "\0" /* DHCP_6RD (RFC) */ -+ "ip6rd" "\0" /* DHCP_6RD (Comcast) */ "wpad" "\0" /* DHCP_WPAD */ ; - -@@ -154,6 +158,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 -@@ -88,6 +88,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, - #if ENABLE_FEATURE_UDHCP_RFC3397 - [OPTION_DNS_STRING ] = 1, /* unused */ -@@ -123,6 +124,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) - { -@@ -231,6 +249,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: diff --git a/package/busybox/patches/310-passwd_access.patch b/package/busybox/patches/310-passwd_access.patch deleted file mode 100644 index daa1b99..0000000 --- a/package/busybox/patches/310-passwd_access.patch +++ /dev/null @@ -1,41 +0,0 @@ - - Copyright (C) 2006 OpenWrt.org - ---- a/networking/httpd.c -+++ b/networking/httpd.c -@@ -1700,21 +1700,32 @@ static int check_user_passwd(const char - - if (ENABLE_FEATURE_HTTPD_AUTH_MD5) { - char *md5_passwd; -+ int user_len_p1; - - md5_passwd = strchr(cur->after_colon, ':'); -- if (md5_passwd && md5_passwd[1] == '$' && md5_passwd[2] == '1' -+ user_len_p1 = md5_passwd + 1 - cur->after_colon; -+ if (md5_passwd && !strncmp(md5_passwd + 1, "$p$", 3)) { -+ struct passwd *pwd = NULL; -+ -+ pwd = getpwnam(&md5_passwd[4]); -+ if(!pwd->pw_passwd || !pwd->pw_passwd[0] || pwd->pw_passwd[0] == '!') -+ return 1; -+ -+ md5_passwd = pwd->pw_passwd; -+ goto check_md5_pw; -+ } else if (md5_passwd && md5_passwd[1] == '$' && md5_passwd[2] == '1' - && md5_passwd[3] == '$' && md5_passwd[4] - ) { - char *encrypted; -- int r, user_len_p1; -+ int r; - - md5_passwd++; -- user_len_p1 = md5_passwd - cur->after_colon; - /* comparing "user:" */ - if (strncmp(cur->after_colon, user_and_passwd, user_len_p1) != 0) { - continue; - } - -+check_md5_pw: - encrypted = pw_encrypt( - user_and_passwd + user_len_p1 /* cleartext pwd from user */, - md5_passwd /*salt */, 1 /* cleanup */); diff --git a/package/busybox/patches/350-httpd_redir.patch b/package/busybox/patches/350-httpd_redir.patch index 11125e7..b03fe98 100644 --- a/package/busybox/patches/350-httpd_redir.patch +++ b/package/busybox/patches/350-httpd_redir.patch @@ -1,6 +1,8 @@ +diff --git a/networking/httpd.c b/networking/httpd.c +index 12218a0..0d60bd7 100644 --- a/networking/httpd.c +++ b/networking/httpd.c -@@ -105,6 +105,7 @@ +@@ -107,6 +107,7 @@ //usage: IF_FEATURE_HTTPD_BASIC_AUTH(" [-r REALM]") //usage: " [-h HOME]\n" //usage: "or httpd -d/-e" IF_FEATURE_HTTPD_AUTH_MD5("/-m") " STRING" @@ -8,16 +10,15 @@ //usage:#define httpd_full_usage "\n\n" //usage: "Listen for incoming HTTP requests\n" //usage: "\n -i Inetd mode" -@@ -121,6 +122,8 @@ +@@ -123,6 +124,7 @@ //usage: "\n -m STRING MD5 crypt STRING") //usage: "\n -e STRING HTML encode STRING" //usage: "\n -d STRING URL decode STRING" -+//usage: "\n -R PATH Redirect target path" +//usage: "\n -H HOST Redirect target host" #include "libbb.h" - #if ENABLE_FEATURE_HTTPD_USE_SENDFILE -@@ -272,6 +275,8 @@ struct globals { + #if ENABLE_PAM +@@ -282,6 +284,8 @@ struct globals { const char *found_mime_type; const char *found_moved_temporarily; @@ -26,7 +27,7 @@ Htaccess_IP *ip_a_d; /* config allow/deny lines */ IF_FEATURE_HTTPD_BASIC_AUTH(const char *g_realm;) -@@ -322,6 +327,8 @@ struct globals { +@@ -332,6 +336,8 @@ struct globals { #define index_page (G.index_page ) #define found_mime_type (G.found_mime_type ) #define found_moved_temporarily (G.found_moved_temporarily) @@ -35,7 +36,7 @@ #define last_mod (G.last_mod ) #define ip_a_d (G.ip_a_d ) #define g_realm (G.g_realm ) -@@ -956,8 +963,11 @@ static void send_headers(int responseNum +@@ -967,8 +973,11 @@ static void send_headers(int responseNum) } #endif if (responseNum == HTTP_MOVED_TEMPORARILY) { @@ -48,9 +49,9 @@ (g_query ? "?" : ""), (g_query ? g_query : "")); } -@@ -1925,8 +1935,12 @@ static void handle_incoming_and_exit(con - } while (*++tptr); - *++urlp = '\0'; /* terminate after last character */ +@@ -2056,8 +2065,12 @@ static void handle_incoming_and_exit(const len_and_sockaddr *fromAddr) + tptr++; + } + /* redirect active */ + if (redirect_path && (strncmp(urlcopy, redirect_path, strlen(redirect_path)) != 0)) @@ -59,10 +60,10 @@ /* If URL is a directory, add '/' */ - if (urlp[-1] != '/') { + if (!redirect_path && (urlp[-1] != '/')) { - if (is_directory(urlcopy + 1, 1, NULL)) { + if (is_directory(urlcopy + 1, /*followlinks:*/ 1)) { found_moved_temporarily = urlcopy; } -@@ -2283,7 +2297,9 @@ static void sighup_handler(int sig UNUSE +@@ -2422,7 +2435,9 @@ static void sighup_handler(int sig UNUSED_PARAM) } enum { @@ -73,7 +74,7 @@ d_opt_decode_url, h_opt_home_httpd, IF_FEATURE_HTTPD_ENCODE_URL_STR(e_opt_encode_url,) -@@ -2332,12 +2348,13 @@ int httpd_main(int argc UNUSED_PARAM, ch +@@ -2471,12 +2486,13 @@ int httpd_main(int argc UNUSED_PARAM, char **argv) /* We do not "absolutize" path given by -h (home) opt. * If user gives relative path in -h, * $SCRIPT_FILENAME will not be set. */ diff --git a/package/busybox/patches/700-hexdump_segfault_fix.patch b/package/busybox/patches/700-hexdump_segfault_fix.patch deleted file mode 100644 index ab09fb3..0000000 --- a/package/busybox/patches/700-hexdump_segfault_fix.patch +++ /dev/null @@ -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;
_______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel