update busybox to 1.31.1
This commit is contained in:
parent
d526271148
commit
a8d4f35290
@ -1,20 +0,0 @@
|
|||||||
diff --git a/miscutils/crond.c b/miscutils/crond.c
|
|
||||||
index f6580a9..5f3963d 100644
|
|
||||||
--- a/miscutils/crond.c
|
|
||||||
+++ b/miscutils/crond.c
|
|
||||||
@@ -737,6 +737,7 @@ fork_job(const char *user, int mailFd, CronLine *line, bool run_sendmail)
|
|
||||||
err:
|
|
||||||
pid = 0;
|
|
||||||
} /* else: PARENT, FORK SUCCESS */
|
|
||||||
+ waitpid(pid, NULL, 0);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Close the mail file descriptor.. we can't just leave it open in
|
|
||||||
@@ -867,6 +868,7 @@ static pid_t start_one_job(const char *user, CronLine *line)
|
|
||||||
err:
|
|
||||||
pid = 0;
|
|
||||||
}
|
|
||||||
+ waitpid(pid, NULL, 0);
|
|
||||||
line->cl_pid = pid;
|
|
||||||
return pid;
|
|
||||||
}
|
|
||||||
@ -1,18 +0,0 @@
|
|||||||
diff -Nur old/miscutils/crontab.c new/miscutils/crontab.c
|
|
||||||
--- old/miscutils/crontab.c 2015-11-30 14:45:22.000000000 +0800
|
|
||||||
+++ new/miscutils/crontab.c 2015-11-30 15:25:36.000000000 +0800
|
|
||||||
@@ -153,7 +153,13 @@
|
|
||||||
switch (opt_ler) {
|
|
||||||
|
|
||||||
default: /* case OPT_r: Delete */
|
|
||||||
- unlink(pas->pw_name);
|
|
||||||
+ if(unlink(pas->pw_name) != 0){
|
|
||||||
+ if(errno == ENOENT)
|
|
||||||
+ fprintf(stderr, "no crontab for %s\n", pas->pw_name);
|
|
||||||
+ else
|
|
||||||
+ perror(pas->pw_name);
|
|
||||||
+ exit(1);
|
|
||||||
+ }
|
|
||||||
break;
|
|
||||||
|
|
||||||
case OPT_l: /* List */
|
|
||||||
@ -1,12 +0,0 @@
|
|||||||
diff --git a/util-linux/dmesg.c b/util-linux/dmesg.c
|
|
||||||
index 81ba1c9..8602d28 100644
|
|
||||||
--- a/util-linux/dmesg.c
|
|
||||||
+++ b/util-linux/dmesg.c
|
|
||||||
@@ -64,6 +64,7 @@ int dmesg_main(int argc UNUSED_PARAM, char **argv)
|
|
||||||
if (last == '\n' && buf[in] == '<') {
|
|
||||||
while (buf[in++] != '>' && in < len)
|
|
||||||
;
|
|
||||||
+ last = buf[in];
|
|
||||||
} else {
|
|
||||||
last = buf[in++];
|
|
||||||
putchar(last);
|
|
||||||
@ -1,19 +0,0 @@
|
|||||||
diff --git a/util-linux/getopt.c b/util-linux/getopt.c
|
|
||||||
index 1ae0c59..626872d 100644
|
|
||||||
--- a/util-linux/getopt.c
|
|
||||||
+++ b/util-linux/getopt.c
|
|
||||||
@@ -385,7 +385,14 @@ int getopt_main(int argc, char **argv)
|
|
||||||
option_mask32 |= OPT_u; /* quoting off */
|
|
||||||
s = xstrdup(s + strspn(s, "-+"));
|
|
||||||
argv[1] = argv[0];
|
|
||||||
+#if ENABLE_FEATURE_GETOPT_LONG
|
|
||||||
+ if (long_options != NULL)
|
|
||||||
+ return generate_output(argv+1, argc-1, s, long_options);
|
|
||||||
+ else
|
|
||||||
+ bb_error_msg_and_die("input error,please check");
|
|
||||||
+#else
|
|
||||||
return generate_output(argv+1, argc-1, s, long_options);
|
|
||||||
+#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
#if !ENABLE_FEATURE_GETOPT_LONG
|
|
||||||
@ -1,22 +0,0 @@
|
|||||||
Upstream-Status: Pending
|
|
||||||
|
|
||||||
# copy commit message from OE as the patch comment:
|
|
||||||
# commit 5a0e1d473ca7aca5ffefffe9a2ec44ae7a1f35bc
|
|
||||||
# Author: Frans Meulenbroeks <fransmeulenbroeks@gmail.com>
|
|
||||||
# Date: Wed Feb 11 22:40:21 2009 +0100
|
|
||||||
#
|
|
||||||
# busybox: fix tar problem with filenames that are exactly 100 bytes
|
|
||||||
#
|
|
||||||
# above comment added by Kevin Tian <kevin.tian@intel.com>, 2010-07-06
|
|
||||||
|
|
||||||
--- busybox-1.13.2/archival/libarchive/get_header_tar.c.orig 2008-11-09 18:28:02.000000000 +0100
|
|
||||||
+++ busybox-1.13.2/archival/libarchive/get_header_tar.c 2009-02-11 22:34:52.000000000 +0100
|
|
||||||
@@ -252,6 +252,8 @@
|
|
||||||
file_header->name = concat_path_file(tar.prefix, tar.name);
|
|
||||||
} else
|
|
||||||
file_header->name = xstrdup(tar.name);
|
|
||||||
+ if (strlen(file_header->name) > 100)
|
|
||||||
+ file_header->name[100] = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set bits 12-15 of the files mode */
|
|
||||||
@ -1,34 +0,0 @@
|
|||||||
There is a potential race when building libbb, as some header files
|
|
||||||
needed by libbb are not generated yet (or are being modified) at the time
|
|
||||||
libbb is compiled.
|
|
||||||
This patch avoids this scenario by building libbb as the last directory.
|
|
||||||
|
|
||||||
Upstream-Status: Submitted
|
|
||||||
Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
|
|
||||||
|
|
||||||
Index: busybox-1.24.1/Makefile
|
|
||||||
===================================================================
|
|
||||||
diff --git a/Makefile b/Makefile
|
|
||||||
index 5cfc763..69f3831 100644
|
|
||||||
--- a/Makefile
|
|
||||||
+++ b/Makefile
|
|
||||||
@@ -738,9 +738,18 @@ $(sort $(busybox-all)): $(busybox-dirs) ;
|
|
||||||
# Error messages still appears in the original language
|
|
||||||
|
|
||||||
PHONY += $(busybox-dirs)
|
|
||||||
-$(busybox-dirs): prepare scripts
|
|
||||||
+
|
|
||||||
+libbb-dir = $(filter libbb,$(busybox-dirs))
|
|
||||||
+busybox-dirs1 = $(filter-out libbb,$(busybox-dirs))
|
|
||||||
+
|
|
||||||
+$(busybox-dirs1): prepare scripts
|
|
||||||
$(Q)$(MAKE) $(build)=$@
|
|
||||||
|
|
||||||
+ifneq ($(libbb-dir),)
|
|
||||||
+$(libbb-dir): | $(busybox-dirs1)
|
|
||||||
+ $(Q)$(MAKE) $(build)=$@
|
|
||||||
+endif
|
|
||||||
+
|
|
||||||
# Build the kernel release string
|
|
||||||
# The KERNELRELEASE is stored in a file named .kernelrelease
|
|
||||||
# to be used when executing for example make install or make modules_install
|
|
||||||
@ -1,27 +0,0 @@
|
|||||||
diff -urN old/shell/ash.c new/shell/ash.c
|
|
||||||
--- old/shell/ash.c 2018-11-06 21:47:50.000000000 +0800
|
|
||||||
+++ new/shell/ash.c 2018-11-06 21:55:43.337608907 +0800
|
|
||||||
@@ -9011,6 +9011,7 @@
|
|
||||||
int checkexit = 0;
|
|
||||||
int (*evalfn)(union node *, int);
|
|
||||||
int status = 0;
|
|
||||||
+ struct stackmark smark;
|
|
||||||
|
|
||||||
if (n == NULL) {
|
|
||||||
TRACE(("evaltree(NULL) called\n"));
|
|
||||||
@@ -9031,6 +9032,7 @@
|
|
||||||
status = !evaltree(n->nnot.com, EV_TESTED);
|
|
||||||
goto setstatus;
|
|
||||||
case NREDIR:
|
|
||||||
+ setstackmark(&smark);
|
|
||||||
expredir(n->nredir.redirect);
|
|
||||||
pushredir(n->nredir.redirect);
|
|
||||||
status = redirectsafe(n->nredir.redirect, REDIR_PUSH);
|
|
||||||
@@ -9042,6 +9044,7 @@
|
|
||||||
}
|
|
||||||
if (n->nredir.redirect)
|
|
||||||
popredir(/*drop:*/ 0);
|
|
||||||
+ popstackmark(&smark);
|
|
||||||
goto setstatus;
|
|
||||||
case NCMD:
|
|
||||||
evalfn = evalcommand;
|
|
||||||
@ -1,39 +0,0 @@
|
|||||||
diff --git a/libbb/loop.c b/libbb/loop.c
|
|
||||||
index c78535a..6387e40 100644
|
|
||||||
--- a/libbb/loop.c
|
|
||||||
+++ b/libbb/loop.c
|
|
||||||
@@ -90,9 +90,9 @@ int FAST_FUNC set_loop(char **device, const char *file, unsigned long long offse
|
|
||||||
char *try;
|
|
||||||
bb_loop_info loopinfo;
|
|
||||||
struct stat statbuf;
|
|
||||||
- int i, dfd, ffd, mode, rc;
|
|
||||||
+ int i, dfd, ffd, mode, rc, mknod_flag;
|
|
||||||
|
|
||||||
- rc = dfd = -1;
|
|
||||||
+ rc = dfd = mknod_flag = -1;
|
|
||||||
|
|
||||||
/* Open the file. Barf if this doesn't work. */
|
|
||||||
mode = (flags & BB_LO_FLAGS_READ_ONLY) ? O_RDONLY : O_RDWR;
|
|
||||||
@@ -123,8 +123,10 @@ int FAST_FUNC set_loop(char **device, const char *file, unsigned long long offse
|
|
||||||
&& try == dev
|
|
||||||
) {
|
|
||||||
/* Node doesn't exist, try to create it. */
|
|
||||||
- if (mknod(dev, S_IFBLK|0644, makedev(7, i)) == 0)
|
|
||||||
+ if (mknod(dev, S_IFBLK|0644, makedev(7, i)) == 0) {
|
|
||||||
+ mknod_flag = 0;
|
|
||||||
goto try_to_open;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
/* Ran out of block devices, return failure. */
|
|
||||||
rc = -1;
|
|
||||||
@@ -140,6 +142,10 @@ int FAST_FUNC set_loop(char **device, const char *file, unsigned long long offse
|
|
||||||
if (dfd < 0) {
|
|
||||||
if (errno == ENXIO) {
|
|
||||||
/* Happens if loop module is not loaded */
|
|
||||||
+ if (mknod_flag == 0) {
|
|
||||||
+ mknod_flag = -1;
|
|
||||||
+ (void)unlink(dev);
|
|
||||||
+ }
|
|
||||||
rc = -1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
Binary file not shown.
BIN
busybox-1.31.1.tar.bz2
Normal file
BIN
busybox-1.31.1.tar.bz2
Normal file
Binary file not shown.
@ -1,68 +0,0 @@
|
|||||||
From 871b0b55d092965b974201315d0a1487051901f2 Mon Sep 17 00:00:00 2001
|
|
||||||
From: leizhongkai <leizhongkai@huawei.com>
|
|
||||||
Date: Wed, 5 Jun 2019 15:12:45 +0800
|
|
||||||
Subject: [PATCH 2/2] busybox: fix CVE-2018-1000500
|
|
||||||
|
|
||||||
reason:fix CVE-2018-1000500
|
|
||||||
backport from https://git.busybox.net/busybox/commit/networking/wget.c?id=0972c7f7a570c38edb68e1c60a45614b7a7c7d55
|
|
||||||
see https://nvd.nist.gov/vuln/detail/CVE-2018-1000500 and https://people.canonical.com/~ubuntu-security/cve/2018/CVE-2018-1000500.html
|
|
||||||
for more details
|
|
||||||
|
|
||||||
Signed-off-by: leizhongkai <leizhongkai@huawei.com>
|
|
||||||
---
|
|
||||||
networking/wget.c | 9 +++++++--
|
|
||||||
1 file changed, 7 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/networking/wget.c b/networking/wget.c
|
|
||||||
index 309b983..6477f36 100644
|
|
||||||
--- a/networking/wget.c
|
|
||||||
+++ b/networking/wget.c
|
|
||||||
@@ -136,6 +136,7 @@
|
|
||||||
//usage: "Retrieve files via HTTP or FTP\n"
|
|
||||||
//usage: IF_FEATURE_WGET_LONG_OPTIONS(
|
|
||||||
//usage: "\n --spider Only check URL existence: $? is 0 if exists"
|
|
||||||
+///////: "\n --no-check-certificate Don't validate the server's certificate"
|
|
||||||
//usage: )
|
|
||||||
//usage: "\n -c Continue retrieval of aborted transfer"
|
|
||||||
//usage: "\n -q Quiet"
|
|
||||||
@@ -267,6 +268,7 @@ enum {
|
|
||||||
WGET_OPT_HEADER = (1 << 10) * ENABLE_FEATURE_WGET_LONG_OPTIONS,
|
|
||||||
WGET_OPT_POST_DATA = (1 << 11) * ENABLE_FEATURE_WGET_LONG_OPTIONS,
|
|
||||||
WGET_OPT_SPIDER = (1 << 12) * ENABLE_FEATURE_WGET_LONG_OPTIONS,
|
|
||||||
+ WGET_OPT_NO_CHECK_CERT = (1 << 13) * ENABLE_FEATURE_WGET_LONG_OPTIONS,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum {
|
|
||||||
@@ -765,6 +767,9 @@ static void spawn_ssl_client(const char *host, int network_fd)
|
|
||||||
int pid;
|
|
||||||
char *servername, *p;
|
|
||||||
|
|
||||||
+ if (!(option_mask32 & WGET_OPT_NO_CHECK_CERT))
|
|
||||||
+ bb_error_msg("note: TLS certificate validation not implemented");
|
|
||||||
+
|
|
||||||
servername = xstrdup(host);
|
|
||||||
p = strrchr(servername, ':');
|
|
||||||
if (p) *p = '\0';
|
|
||||||
@@ -1362,10 +1367,9 @@ IF_DESKTOP( "tries\0" Required_argument "t")
|
|
||||||
"header\0" Required_argument "\xff"
|
|
||||||
"post-data\0" Required_argument "\xfe"
|
|
||||||
"spider\0" No_argument "\xfd"
|
|
||||||
+ "no-check-certificate\0" No_argument "\xfc"
|
|
||||||
/* Ignored (we always use PASV): */
|
|
||||||
IF_DESKTOP( "passive-ftp\0" No_argument "\xf0")
|
|
||||||
- /* Ignored (we don't do ssl) */
|
|
||||||
-IF_DESKTOP( "no-check-certificate\0" No_argument "\xf0")
|
|
||||||
/* Ignored (we don't support caching) */
|
|
||||||
IF_DESKTOP( "no-cache\0" No_argument "\xf0")
|
|
||||||
IF_DESKTOP( "no-verbose\0" No_argument "\xf0")
|
|
||||||
@@ -1425,6 +1429,7 @@ IF_DESKTOP( "no-parent\0" No_argument "\xf0")
|
|
||||||
if (option_mask32 & WGET_OPT_HEADER) bb_error_msg("--header");
|
|
||||||
if (option_mask32 & WGET_OPT_POST_DATA) bb_error_msg("--post-data");
|
|
||||||
if (option_mask32 & WGET_OPT_SPIDER) bb_error_msg("--spider");
|
|
||||||
+ if (option_mask32 & WGET_OPT_NO_CHECK_CERT) bb_error_msg("--no-check-certificate");
|
|
||||||
exit(0);
|
|
||||||
#endif
|
|
||||||
argv += optind;
|
|
||||||
--
|
|
||||||
1.8.3.1
|
|
||||||
|
|
||||||
@ -1,52 +0,0 @@
|
|||||||
From 97d64d270d094d02a686dfe0d80e232df66d92e6 Mon Sep 17 00:00:00 2001
|
|
||||||
From: leizhongkai <leizhongkai@huawei.com>
|
|
||||||
Date: Wed, 5 Jun 2019 12:00:48 +0800
|
|
||||||
Subject: [PATCH 1/2] busybox: fix CVE-2018-1000517
|
|
||||||
|
|
||||||
reason:fix CVE-2018-1000517
|
|
||||||
cherry-pick from https://git.busybox.net/busybox/commit/?id=8e2174e9bd836e53c8b9c6e00d1bc6e2a718686e
|
|
||||||
see https://nvd.nist.gov/vuln/detail/CVE-2018-1000517 for more details
|
|
||||||
|
|
||||||
Signed-off-by: leizhongkai <leizhongkai@huawei.com>
|
|
||||||
---
|
|
||||||
networking/wget.c | 13 +++++++++++--
|
|
||||||
1 file changed, 11 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/networking/wget.c b/networking/wget.c
|
|
||||||
index d1d8523..309b983 100644
|
|
||||||
--- a/networking/wget.c
|
|
||||||
+++ b/networking/wget.c
|
|
||||||
@@ -641,7 +641,7 @@ static FILE* prepare_ftp_session(FILE **dfpp, struct host_info *target, len_and_
|
|
||||||
if (ftpcmd("SIZE ", target->path, sfp) == 213) {
|
|
||||||
G.content_len = BB_STRTOOFF(G.wget_buf + 4, NULL, 10);
|
|
||||||
if (G.content_len < 0 || errno) {
|
|
||||||
- bb_error_msg_and_die("SIZE value is garbage");
|
|
||||||
+ bb_error_msg_and_die("bad SIZE value '%s'", G.wget_buf + 4);
|
|
||||||
}
|
|
||||||
G.got_clen = 1;
|
|
||||||
}
|
|
||||||
@@ -924,11 +924,20 @@ static void NOINLINE retrieve_file_data(FILE *dfp)
|
|
||||||
if (!G.chunked)
|
|
||||||
break;
|
|
||||||
|
|
||||||
+ /* Each chunk ends with "\r\n" - eat it */
|
|
||||||
+ fgets_trim_sanitize(dfp, NULL);
|
|
||||||
fgets_and_trim(dfp, NULL); /* Eat empty line */
|
|
||||||
get_clen:
|
|
||||||
+ /* chunk size format is "HEXNUM[;name[=val]]\r\n" */
|
|
||||||
fgets_and_trim(dfp, NULL);
|
|
||||||
+ errno = 0;
|
|
||||||
G.content_len = STRTOOFF(G.wget_buf, NULL, 16);
|
|
||||||
- /* FIXME: error check? */
|
|
||||||
+ /*
|
|
||||||
+ * Had a bug with inputs like "ffffffff0001f400"
|
|
||||||
+ * smashing the heap later. Ensure >= 0.
|
|
||||||
+ */
|
|
||||||
+ if (G.content_len < 0 || errno)
|
|
||||||
+ bb_error_msg_and_die("bad chunk length '%s'", G.wget_buf);
|
|
||||||
if (G.content_len == 0)
|
|
||||||
break; /* all done! */
|
|
||||||
G.got_clen = 1;
|
|
||||||
--
|
|
||||||
1.8.3.1
|
|
||||||
|
|
||||||
@ -1,129 +0,0 @@
|
|||||||
From e5835352b8dd5b8717fc8fccc6573851c33c6533 Mon Sep 17 00:00:00 2001
|
|
||||||
From: zhangchenfeng <zhangchenfeng1@huawei.com>
|
|
||||||
Date: Fri, 1 Mar 2019 10:24:02 +0800
|
|
||||||
Subject: [PATCH 1/2] fix CVE-2018-20679
|
|
||||||
|
|
||||||
---
|
|
||||||
networking/udhcp/common.c | 19 +++++++++++++++++++
|
|
||||||
networking/udhcp/common.h | 4 ++++
|
|
||||||
networking/udhcp/dhcpc.c | 6 +++---
|
|
||||||
networking/udhcp/dhcpd.c | 6 +++---
|
|
||||||
4 files changed, 29 insertions(+), 6 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/networking/udhcp/common.c b/networking/udhcp/common.c
|
|
||||||
index 52ef875..074e28d 100644
|
|
||||||
--- a/networking/udhcp/common.c
|
|
||||||
+++ b/networking/udhcp/common.c
|
|
||||||
@@ -270,6 +270,15 @@ uint8_t* FAST_FUNC udhcp_get_option(struct dhcp_packet *packet, int code)
|
|
||||||
goto complain; /* complain and return NULL */
|
|
||||||
|
|
||||||
if (optionptr[OPT_CODE] == code) {
|
|
||||||
+ if (optionptr[OPT_LEN] == 0) {
|
|
||||||
+ /* So far no valid option with length 0 known.
|
|
||||||
+ * Having this check means that searching
|
|
||||||
+ * for DHCP_MESSAGE_TYPE need not worry
|
|
||||||
+ * that returned pointer might be unsafe
|
|
||||||
+ * to dereference.
|
|
||||||
+ */
|
|
||||||
+ goto complain; /* complain and return NULL */
|
|
||||||
+ }
|
|
||||||
log_option("option found", optionptr);
|
|
||||||
return optionptr + OPT_DATA;
|
|
||||||
}
|
|
||||||
@@ -287,6 +296,16 @@ uint8_t* FAST_FUNC udhcp_get_option(struct dhcp_packet *packet, int code)
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
+uint8_t* FAST_FUNC udhcp_get_option32(struct dhcp_packet *packet, int code)
|
|
||||||
+{
|
|
||||||
+ uint8_t *r = udhcp_get_option(packet, code);
|
|
||||||
+ if (r) {
|
|
||||||
+ if (r[-1] != 4)
|
|
||||||
+ r = NULL;
|
|
||||||
+ }
|
|
||||||
+ return r;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
/* Return the position of the 'end' option (no bounds checking) */
|
|
||||||
int FAST_FUNC udhcp_end_option(uint8_t *optionptr)
|
|
||||||
{
|
|
||||||
diff --git a/networking/udhcp/common.h b/networking/udhcp/common.h
|
|
||||||
index 50ea919..1d694ad 100644
|
|
||||||
--- a/networking/udhcp/common.h
|
|
||||||
+++ b/networking/udhcp/common.h
|
|
||||||
@@ -204,6 +204,10 @@ extern const uint8_t dhcp_option_lengths[] ALIGN1;
|
|
||||||
unsigned FAST_FUNC udhcp_option_idx(const char *name, const char *option_strings);
|
|
||||||
|
|
||||||
uint8_t *udhcp_get_option(struct dhcp_packet *packet, int code) FAST_FUNC;
|
|
||||||
+/* Same as above + ensures that option length is 4 bytes
|
|
||||||
+ * (returns NULL if size is different)
|
|
||||||
+ */
|
|
||||||
+uint8_t *udhcp_get_option32(struct dhcp_packet *packet, int code) FAST_FUNC;
|
|
||||||
int udhcp_end_option(uint8_t *optionptr) FAST_FUNC;
|
|
||||||
void udhcp_add_binary_option(struct dhcp_packet *packet, uint8_t *addopt) FAST_FUNC;
|
|
||||||
#if ENABLE_UDHCPC || ENABLE_UDHCPD
|
|
||||||
diff --git a/networking/udhcp/dhcpc.c b/networking/udhcp/dhcpc.c
|
|
||||||
index c2805a0..57f1966 100644
|
|
||||||
--- a/networking/udhcp/dhcpc.c
|
|
||||||
+++ b/networking/udhcp/dhcpc.c
|
|
||||||
@@ -1683,7 +1683,7 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv)
|
|
||||||
* They say ISC DHCP client supports this case.
|
|
||||||
*/
|
|
||||||
server_addr = 0;
|
|
||||||
- temp = udhcp_get_option(&packet, DHCP_SERVER_ID);
|
|
||||||
+ temp = udhcp_get_option32(&packet, DHCP_SERVER_ID);
|
|
||||||
if (!temp) {
|
|
||||||
bb_error_msg("no server ID, using 0.0.0.0");
|
|
||||||
} else {
|
|
||||||
@@ -1710,7 +1710,7 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv)
|
|
||||||
struct in_addr temp_addr;
|
|
||||||
uint8_t *temp;
|
|
||||||
|
|
||||||
- temp = udhcp_get_option(&packet, DHCP_LEASE_TIME);
|
|
||||||
+ temp = udhcp_get_option32(&packet, DHCP_LEASE_TIME);
|
|
||||||
if (!temp) {
|
|
||||||
bb_error_msg("no lease time with ACK, using 1 hour lease");
|
|
||||||
lease_seconds = 60 * 60;
|
|
||||||
@@ -1804,7 +1804,7 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv)
|
|
||||||
uint32_t svid;
|
|
||||||
uint8_t *temp;
|
|
||||||
|
|
||||||
- temp = udhcp_get_option(&packet, DHCP_SERVER_ID);
|
|
||||||
+ temp = udhcp_get_option32(&packet, DHCP_SERVER_ID);
|
|
||||||
if (!temp) {
|
|
||||||
non_matching_svid:
|
|
||||||
log1("received DHCP NAK with wrong"
|
|
||||||
diff --git a/networking/udhcp/dhcpd.c b/networking/udhcp/dhcpd.c
|
|
||||||
index a8cd3f0..477856d 100644
|
|
||||||
--- a/networking/udhcp/dhcpd.c
|
|
||||||
+++ b/networking/udhcp/dhcpd.c
|
|
||||||
@@ -640,7 +640,7 @@ static void add_server_options(struct dhcp_packet *packet)
|
|
||||||
static uint32_t select_lease_time(struct dhcp_packet *packet)
|
|
||||||
{
|
|
||||||
uint32_t lease_time_sec = server_config.max_lease_sec;
|
|
||||||
- uint8_t *lease_time_opt = udhcp_get_option(packet, DHCP_LEASE_TIME);
|
|
||||||
+ uint8_t *lease_time_opt = udhcp_get_option32(packet, DHCP_LEASE_TIME);
|
|
||||||
if (lease_time_opt) {
|
|
||||||
move_from_unaligned32(lease_time_sec, lease_time_opt);
|
|
||||||
lease_time_sec = ntohl(lease_time_sec);
|
|
||||||
@@ -987,7 +987,7 @@ int udhcpd_main(int argc UNUSED_PARAM, char **argv)
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Get SERVER_ID if present */
|
|
||||||
- server_id_opt = udhcp_get_option(&packet, DHCP_SERVER_ID);
|
|
||||||
+ server_id_opt = udhcp_get_option32(&packet, DHCP_SERVER_ID);
|
|
||||||
if (server_id_opt) {
|
|
||||||
uint32_t server_id_network_order;
|
|
||||||
move_from_unaligned32(server_id_network_order, server_id_opt);
|
|
||||||
@@ -1011,7 +1011,7 @@ int udhcpd_main(int argc UNUSED_PARAM, char **argv)
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Get REQUESTED_IP if present */
|
|
||||||
- requested_ip_opt = udhcp_get_option(&packet, DHCP_REQUESTED_IP);
|
|
||||||
+ requested_ip_opt = udhcp_get_option32(&packet, DHCP_REQUESTED_IP);
|
|
||||||
if (requested_ip_opt) {
|
|
||||||
move_from_unaligned32(requested_nip, requested_ip_opt);
|
|
||||||
}
|
|
||||||
--
|
|
||||||
1.8.3.1
|
|
||||||
|
|
||||||
@ -1,53 +0,0 @@
|
|||||||
From 2aea2ffccc29a7bdc597c983fd912685dd6df71e Mon Sep 17 00:00:00 2001
|
|
||||||
From: zhangchenfeng1 <zhangchenfeng1@huawei.com>
|
|
||||||
Date: Fri, 1 Mar 2019 10:28:00 +0800
|
|
||||||
Subject: [PATCH 2/2] fix CVE-2019-5747
|
|
||||||
|
|
||||||
---
|
|
||||||
networking/udhcp/common.c | 2 +-
|
|
||||||
networking/udhcp/common.h | 2 +-
|
|
||||||
networking/udhcp/dhcpc.c | 2 +-
|
|
||||||
3 files changed, 3 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/networking/udhcp/common.c b/networking/udhcp/common.c
|
|
||||||
index 074e28d..cc37a69 100644
|
|
||||||
--- a/networking/udhcp/common.c
|
|
||||||
+++ b/networking/udhcp/common.c
|
|
||||||
@@ -300,7 +300,7 @@ uint8_t* FAST_FUNC udhcp_get_option32(struct dhcp_packet *packet, int code)
|
|
||||||
{
|
|
||||||
uint8_t *r = udhcp_get_option(packet, code);
|
|
||||||
if (r) {
|
|
||||||
- if (r[-1] != 4)
|
|
||||||
+ if (r[-OPT_DATA + OPT_LEN] != 4)
|
|
||||||
r = NULL;
|
|
||||||
}
|
|
||||||
return r;
|
|
||||||
diff --git a/networking/udhcp/common.h b/networking/udhcp/common.h
|
|
||||||
index 1d694ad..e84943c 100644
|
|
||||||
--- a/networking/udhcp/common.h
|
|
||||||
+++ b/networking/udhcp/common.h
|
|
||||||
@@ -119,7 +119,7 @@ enum {
|
|
||||||
//#define DHCP_TIME_SERVER 0x04 /* RFC 868 time server (32-bit, 0 = 1.1.1900) */
|
|
||||||
//#define DHCP_NAME_SERVER 0x05 /* IEN 116 _really_ ancient kind of NS */
|
|
||||||
//#define DHCP_DNS_SERVER 0x06
|
|
||||||
-//#define DHCP_LOG_SERVER 0x07 /* port 704 UDP log (not syslog)
|
|
||||||
+//#define DHCP_LOG_SERVER 0x07 /* port 704 UDP log (not syslog) */
|
|
||||||
//#define DHCP_COOKIE_SERVER 0x08 /* "quote of the day" server */
|
|
||||||
//#define DHCP_LPR_SERVER 0x09
|
|
||||||
#define DHCP_HOST_NAME 0x0c /* either client informs server or server gives name to client */
|
|
||||||
diff --git a/networking/udhcp/dhcpc.c b/networking/udhcp/dhcpc.c
|
|
||||||
index 57f1966..8d33d86 100644
|
|
||||||
--- a/networking/udhcp/dhcpc.c
|
|
||||||
+++ b/networking/udhcp/dhcpc.c
|
|
||||||
@@ -523,7 +523,7 @@ static char **fill_envp(struct dhcp_packet *packet)
|
|
||||||
temp = udhcp_get_option(packet, code);
|
|
||||||
*curr = xmalloc_optname_optval(temp, &dhcp_optflags[i], opt_name);
|
|
||||||
putenv(*curr++);
|
|
||||||
- if (code == DHCP_SUBNET) {
|
|
||||||
+ if (code == DHCP_SUBNET && temp[-OPT_DATA + OPT_LEN] == 4) {
|
|
||||||
/* Subnet option: make things like "$ip/$mask" possible */
|
|
||||||
uint32_t subnet;
|
|
||||||
move_from_unaligned32(subnet, temp);
|
|
||||||
--
|
|
||||||
1.8.3.1
|
|
||||||
|
|
||||||
24
busybox.spec
24
busybox.spec
@ -1,10 +1,10 @@
|
|||||||
#spec file for busybox
|
#spec file for busybox
|
||||||
%if "%{!?VERSION:1}"
|
%if "%{!?VERSION:1}"
|
||||||
%define VERSION 1.28.3
|
%define VERSION 1.31.1
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%if "%{!?RELEASE:1}"
|
%if "%{!?RELEASE:1}"
|
||||||
%define RELEASE 5
|
%define RELEASE 6
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
Name: busybox
|
Name: busybox
|
||||||
@ -25,20 +25,6 @@ BuildRequires: gcc glibc-static git
|
|||||||
BuildRequires: libselinux-devel >= 1.27.7-2
|
BuildRequires: libselinux-devel >= 1.27.7-2
|
||||||
BuildRequires: libsepol-devel libselinux-static libsepol-static
|
BuildRequires: libsepol-devel libselinux-static libsepol-static
|
||||||
|
|
||||||
Patch6000: bugfix-get_header_tar.patch
|
|
||||||
Patch6001: bugfix-makefile-libbb-race.patch
|
|
||||||
Patch6002: busybox-CVE-2018-20679.patch
|
|
||||||
Patch6003: busybox-CVE-2019-5747.patch
|
|
||||||
Patch6004: busybox-CVE-2018-1000517.patch
|
|
||||||
Patch6005: busybox-CVE-2018-1000500.patch
|
|
||||||
|
|
||||||
Patch9000: bugfix-memleak.patch
|
|
||||||
Patch9001: bugfix-dmesg_pretty.patch
|
|
||||||
Patch9002: bugfix-crontab_remove_bug.patch
|
|
||||||
Patch9003: bugfix-crond_zombie_no_exit_cmd_bug.patch
|
|
||||||
Patch9004: bugfix-fix-getopt-segmentation-fault.patch
|
|
||||||
Patch9005: bugfix-when-mount-failed-clean-it-creates-dev-loopN.patch
|
|
||||||
|
|
||||||
Provides: bundled(md5-drepper2)
|
Provides: bundled(md5-drepper2)
|
||||||
|
|
||||||
%package petitboot
|
%package petitboot
|
||||||
@ -107,6 +93,12 @@ install -m 644 docs/busybox.dynamic.1 $RPM_BUILD_ROOT/%{_mandir}/man1/busybox.1
|
|||||||
%{_mandir}/man1/busybox.petitboot.1.gz
|
%{_mandir}/man1/busybox.petitboot.1.gz
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Jan 8 2020 openEuler Buildteam <buildteam@openeuler.org> - 1:1.31.1-6
|
||||||
|
- Type:enhancement
|
||||||
|
- Id:NA
|
||||||
|
- SUG:NA
|
||||||
|
- DESC:update busybox to 1.31.1
|
||||||
|
|
||||||
* Wed May 08 2019 gulining<gulining1@huawei.com> - 1:1.28.3-2.h3
|
* Wed May 08 2019 gulining<gulining1@huawei.com> - 1:1.28.3-2.h3
|
||||||
- Type:bugfix
|
- Type:bugfix
|
||||||
- ID:NA
|
- ID:NA
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user