commit
759ac93084
@ -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
|
||||
%if "%{!?VERSION:1}"
|
||||
%define VERSION 1.28.3
|
||||
%define VERSION 1.31.1
|
||||
%endif
|
||||
|
||||
%if "%{!?RELEASE:1}"
|
||||
%define RELEASE 5
|
||||
%define RELEASE 6
|
||||
%endif
|
||||
|
||||
Name: busybox
|
||||
@ -25,20 +25,6 @@ BuildRequires: gcc glibc-static git
|
||||
BuildRequires: libselinux-devel >= 1.27.7-2
|
||||
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)
|
||||
|
||||
%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
|
||||
|
||||
%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
|
||||
- Type:bugfix
|
||||
- ID:NA
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user