busybox: update to version 1.24.1

Patches applied upstream and dropped:
280-fix_find_regression.patch
300-ip-addr-improvements.patch

Fixed upstream:
290-ash-fix-a-regression-in-handling-local-variables.patch (see thread: http://lists.busybox.net/pipermail/busybox/2015-April/082783.html)

Signed-off-by: Magnus Kroken <mkroken@gmail.com>

SVN-Revision: 47288
This commit is contained in:
Felix Fietkau 2015-10-30 15:18:17 +00:00
parent ce09894398
commit e35d42e890
12 changed files with 19 additions and 198 deletions

View file

@ -8,14 +8,14 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=busybox
PKG_VERSION:=1.23.2
PKG_RELEASE:=3
PKG_VERSION:=1.24.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:=7925683d7dd105aabe9b6b618d48cc73
PKG_MD5SUM:=be98a40cadf84ce2d6b05fa41a275c6a
PKG_BUILD_DEPENDS:=BUSYBOX_USE_LIBRPC:librpc BUSYBOX_CONFIG_PAM:libpam
PKG_BUILD_PARALLEL:=1

View file

@ -1,6 +1,6 @@
--- a/util-linux/mount.c
+++ b/util-linux/mount.c
@@ -138,9 +138,6 @@
@@ -236,9 +236,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... */

View file

@ -1,6 +1,6 @@
--- a/networking/udhcp/dhcpc.c
+++ b/networking/udhcp/dhcpc.c
@@ -685,6 +685,7 @@ static int bcast_or_ucast(struct dhcp_pa
@@ -695,6 +695,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),
@@ -702,6 +703,7 @@ static NOINLINE int send_discover(uint32
@@ -712,6 +713,7 @@ static NOINLINE int send_discover(uint32
*/
add_client_options(&packet);

View file

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

View file

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

View file

@ -1,6 +1,6 @@
--- a/networking/udhcp/dhcpc.c
+++ b/networking/udhcp/dhcpc.c
@@ -663,10 +663,10 @@ static void add_client_options(struct dh
@@ -673,10 +673,10 @@ static void add_client_options(struct dh
* client reverts to using the IP broadcast address.
*/
@ -13,7 +13,7 @@
/*dst*/ INADDR_BROADCAST, SERVER_PORT, MAC_BCAST_ADDR,
client_config.ifindex);
}
@@ -677,7 +677,7 @@ static int bcast_or_ucast(struct dhcp_pa
@@ -687,7 +687,7 @@ static int bcast_or_ucast(struct dhcp_pa
return udhcp_send_kernel_packet(packet,
ciaddr, CLIENT_PORT,
server, SERVER_PORT);
@ -22,7 +22,7 @@
}
/* Broadcast a DHCP discover packet to the network, with an optionally requested IP */
@@ -705,7 +705,7 @@ static NOINLINE int send_discover(uint32
@@ -715,7 +715,7 @@ static NOINLINE int send_discover(uint32
if (msgs++ < 3)
bb_info_msg("Sending discover...");
@ -31,7 +31,7 @@
}
/* Broadcast a DHCP request message */
@@ -749,7 +749,7 @@ static NOINLINE int send_select(uint32_t
@@ -759,7 +759,7 @@ static NOINLINE int send_select(uint32_t
addr.s_addr = requested;
bb_info_msg("Sending select for %s...", inet_ntoa(addr));
@ -40,7 +40,7 @@
}
/* Unicast or broadcast a DHCP renew message */
@@ -817,7 +817,7 @@ static NOINLINE int send_decline(/*uint3
@@ -827,7 +827,7 @@ static NOINLINE int send_decline(/*uint3
udhcp_add_simple_option(&packet, DHCP_SERVER_ID, server);
bb_info_msg("Sending decline...");

View file

@ -10,7 +10,7 @@
IF_NOHUP(APPLET(nohup, BB_DIR_USR_BIN, BB_SUID_DROP))
--- a/networking/Config.src
+++ b/networking/Config.src
@@ -619,6 +619,12 @@ config FEATURE_IPCALC_LONG_OPTIONS
@@ -626,6 +626,12 @@ config FEATURE_IPCALC_LONG_OPTIONS
help
Support long options for the ipcalc applet.

View file

@ -1,6 +1,6 @@
--- a/networking/ntpd.c
+++ b/networking/ntpd.c
@@ -251,6 +251,7 @@ typedef struct {
@@ -265,6 +265,7 @@ typedef struct {
typedef struct {
len_and_sockaddr *p_lsa;
char *p_dotted;
@ -8,7 +8,7 @@
int p_fd;
int datapoint_idx;
uint32_t lastpkt_refid;
@@ -756,8 +757,9 @@ add_peers(const char *s)
@@ -766,8 +767,9 @@ add_peers(const 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); */
@@ -806,6 +808,25 @@ send_query_to_peer(peer_t *p)
@@ -816,6 +818,25 @@ send_query_to_peer(peer_t *p)
*
* Uncomment this and use strace to see it in action:
*/

View file

@ -1,6 +1,6 @@
--- a/libbb/printable_string.c
+++ b/libbb/printable_string.c
@@ -31,8 +31,6 @@ const char* FAST_FUNC printable_string(u
@@ -28,8 +28,6 @@ const char* FAST_FUNC printable_string(u
}
if (c < ' ')
break;
@ -9,7 +9,7 @@
s++;
}
@@ -45,7 +43,7 @@ const char* FAST_FUNC printable_string(u
@@ -42,7 +40,7 @@ const char* FAST_FUNC printable_string(u
unsigned char c = *d;
if (c == '\0')
break;

View file

@ -1,31 +0,0 @@
find: fix regression in status processing for path arguments
Regression added in commit 14158b4127dba30466c50147b868a6a89702960b
"find: add optional support for '-exec ... {} +'"
This commit causes find to exit on the first path argument that was not
found, which breaks existing scripts and is incompatible to other
implementations.
Instead of exiting on the first failure, return EXIT_FAILURE at the end
if any error occurred.
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
--- a/findutils/find.c
+++ b/findutils/find.c
@@ -1460,12 +1460,10 @@ int find_main(int argc UNUSED_PARAM, cha
NULL, /* user data */
0) /* depth */
) {
- status = EXIT_FAILURE;
- goto out;
+ status |= EXIT_FAILURE;
}
}
- IF_FEATURE_FIND_EXEC_PLUS(status = flush_exec_plus();)
-out:
+ IF_FEATURE_FIND_EXEC_PLUS(status |= flush_exec_plus();)
return status;
}

View file

@ -1,75 +0,0 @@
From: Felix Fietkau <nbd@openwrt.org>
Date: Fri, 17 Apr 2015 01:54:51 +0200
Subject: [PATCH] ash: fix a regression in handling local variables
commit 109ee5d33694a03cda3424b4846584250832ba8e
"ash: make "locak VAR" unset VAR (bash does that)"
This commit introduced a regression where calling local on an already
local variable unsets it. This does not match bash behavior.
Update test case to check for this behavior
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
---
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -8961,6 +8961,21 @@ parse_command_args(char **argv, const ch
}
#endif
+static bool
+findlocal(struct var *vp)
+{
+ struct localvar *lvp = localvars;
+
+ while (lvp) {
+ if (lvp->vp == vp)
+ return true;
+
+ lvp = lvp->next;
+ }
+
+ return false;
+}
+
/*
* Make a variable a local variable. When a variable is made local, it's
* value and flags are saved in a localvar structure. The saved values
@@ -9000,7 +9015,7 @@ mklocal(char *name)
vp->flags |= VSTRFIXED|VTEXTFIXED;
if (eq)
setvareq(name, 0);
- else
+ else if (!findlocal(vp))
/* "local VAR" unsets VAR: */
setvar(name, NULL, 0);
}
--- a/shell/ash_test/ash-misc/local1.right
+++ b/shell/ash_test/ash-misc/local1.right
@@ -1,4 +1,5 @@
A1:'A'
A2:''
-A3:''
-A4:'A'
+A3:'B'
+A4:''
+A5:'A'
--- a/shell/ash_test/ash-misc/local1.tests
+++ b/shell/ash_test/ash-misc/local1.tests
@@ -3,9 +3,12 @@ f() {
local a
# the above line unsets $a
echo "A2:'$a'"
- unset a
+ a=B
+ local a
echo "A3:'$a'"
+ unset a
+ echo "A4:'$a'"
}
echo "A1:'$a'"
f
-echo "A4:'$a'"
+echo "A5:'$a'"

View file

@ -1,73 +0,0 @@
From 6a7cd3d4aba493c0b0d00155b1e09a867db437cf Mon Sep 17 00:00:00 2001
From: Michael Tokarev <mjt@tls.msk.ru>
Date: Wed, 20 May 2015 16:27:44 +0300
Subject: [PATCH] ip addr: support change and replace commands
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
---
networking/ip.c | 2 +-
networking/libiproute/ipaddress.c | 20 ++++++++++++--------
2 files changed, 13 insertions(+), 9 deletions(-)
--- a/networking/ip.c
+++ b/networking/ip.c
@@ -33,7 +33,7 @@
//usage: "{ {add|del} IFADDR dev STRING | {show|flush}\n"
//usage: " [dev STRING] [to PREFIX] }"
//usage:#define ipaddr_full_usage "\n\n"
-//usage: "ipaddr {add|delete} IFADDR dev STRING\n"
+//usage: "ipaddr {add|change|replace|delete} IFADDR dev STRING\n"
//usage: "ipaddr {show|flush} [dev STRING] [scope SCOPE-ID]\n"
//usage: " [to PREFIX] [label PATTERN]\n"
//usage: " IFADDR := PREFIX | ADDR peer PREFIX\n"
--- a/networking/libiproute/ipaddress.c
+++ b/networking/libiproute/ipaddress.c
@@ -598,7 +598,7 @@ static int default_scope(inet_prefix *lc
}
/* Return value becomes exitcode. It's okay to not return at all */
-static int ipaddr_modify(int cmd, char **argv)
+static int ipaddr_modify(int cmd, int flags, char **argv)
{
static const char option[] ALIGN1 =
"peer\0""remote\0""broadcast\0""brd\0"
@@ -622,7 +622,7 @@ static int ipaddr_modify(int cmd, char *
memset(&req, 0, sizeof(req));
req.n.nlmsg_len = NLMSG_LENGTH(sizeof(struct ifaddrmsg));
- req.n.nlmsg_flags = NLM_F_REQUEST;
+ req.n.nlmsg_flags = NLM_F_REQUEST | flags;
req.n.nlmsg_type = cmd;
req.ifa.ifa_family = preferred_family;
@@ -749,16 +749,24 @@ static int ipaddr_modify(int cmd, char *
int FAST_FUNC do_ipaddr(char **argv)
{
static const char commands[] ALIGN1 =
- "add\0""delete\0""list\0""show\0""lst\0""flush\0";
+ /* 0 1 2 3 4 5 6 7 8 */
+ "add\0""change\0""chg\0""replace\0""delete\0""list\0""show\0""lst\0""flush\0";
int cmd = 2;
if (*argv) {
cmd = index_in_substrings(commands, *argv);
if (cmd < 0)
invarg(*argv, applet_name);
argv++;
- if (cmd <= 1)
- return ipaddr_modify((cmd == 0) ? RTM_NEWADDR : RTM_DELADDR, argv);
+ if (cmd <= 4) {
+ return ipaddr_modify(
+ /*cmd:*/ cmd == 4 ? RTM_DELADDR : RTM_NEWADDR,
+ /*flags:*/
+ cmd == 0 ? NLM_F_CREATE|NLM_F_EXCL : /* add */
+ cmd == 1 || cmd == 2 ? NLM_F_REPLACE : /* change */
+ cmd == 3 ? NLM_F_CREATE|NLM_F_REPLACE : /* replace */
+ 0 /* delete */
+ , argv);
+ }
}
- /* 2 == list, 3 == show, 4 == lst */
- return ipaddr_list_or_flush(argv, cmd == 5);
+ return ipaddr_list_or_flush(argv, cmd == 8);
}