From 3afbe1669f179d9c3535a9b85167837bb16a82d2 Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Sat, 19 Jan 2013 10:11:34 +0000 Subject: [PATCH] busybox: add an upstream ntpd fix (#12841) SVN-Revision: 35239 --- package/busybox/Makefile | 4 +-- ...004-upstream-percent_decode_in_place.patch | 2 +- .../006-upstream_CVE-2011-2716_fixes.patch | 12 ++++---- .../611-upstream_ntpd_version_fix.patch | 29 +++++++++++++++++++ package/busybox/patches/911-date-k-flag.patch | 13 ++++----- .../patches/998-arping_missing_includes.patch | 5 ++-- package/busybox/patches/999-musl-fixes.patch | 7 ++--- 7 files changed, 49 insertions(+), 23 deletions(-) create mode 100644 package/busybox/patches/611-upstream_ntpd_version_fix.patch diff --git a/package/busybox/Makefile b/package/busybox/Makefile index 0450d897e3..7aaaf6cb17 100644 --- a/package/busybox/Makefile +++ b/package/busybox/Makefile @@ -1,5 +1,5 @@ # -# Copyright (C) 2006-2012 OpenWrt.org +# Copyright (C) 2006-2013 OpenWrt.org # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=busybox PKG_VERSION:=1.19.4 -PKG_RELEASE:=5 +PKG_RELEASE:=6 PKG_FLAGS:=essential PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 diff --git a/package/busybox/patches/004-upstream-percent_decode_in_place.patch b/package/busybox/patches/004-upstream-percent_decode_in_place.patch index d94ee47900..bef4a90790 100644 --- a/package/busybox/patches/004-upstream-percent_decode_in_place.patch +++ b/package/busybox/patches/004-upstream-percent_decode_in_place.patch @@ -222,7 +222,7 @@ Signed-off-by: Denys Vlasenko h->host = sp + 1; } -@@ -661,12 +666,6 @@ static void download_one_url(const char +@@ -661,12 +666,6 @@ static void download_one_url(const char #if ENABLE_FEATURE_WGET_AUTHENTICATION if (target.user) { diff --git a/package/busybox/patches/006-upstream_CVE-2011-2716_fixes.patch b/package/busybox/patches/006-upstream_CVE-2011-2716_fixes.patch index 94d5f34a16..532fcee0fb 100644 --- a/package/busybox/patches/006-upstream_CVE-2011-2716_fixes.patch +++ b/package/busybox/patches/006-upstream_CVE-2011-2716_fixes.patch @@ -1,5 +1,5 @@ ---- busybox-1.19.4/networking/udhcp/common.c -+++ busybox-1.19.4-udhcp/networking/udhcp/common.c +--- a/networking/udhcp/common.c ++++ b/networking/udhcp/common.c @@ -29,16 +29,16 @@ const struct dhcp_optflag dhcp_optflags[ // { OPTION_IP | OPTION_LIST , 0x07 }, /* DHCP_LOG_SERVER */ // { OPTION_IP | OPTION_LIST , 0x08 }, /* DHCP_COOKIE_SERVER */ @@ -56,8 +56,8 @@ #if ENABLE_FEATURE_UDHCP_RFC3397 case OPTION_DNS_STRING: #endif ---- busybox-1.19.4/networking/udhcp/common.h -+++ busybox-1.19.4-udhcp/networking/udhcp/common.h +--- a/networking/udhcp/common.h ++++ b/networking/udhcp/common.h @@ -80,6 +80,9 @@ enum { OPTION_IP = 1, OPTION_IP_PAIR, @@ -68,8 +68,8 @@ // OPTION_BOOLEAN, OPTION_U8, OPTION_U16, ---- busybox-1.19.4/networking/udhcp/dhcpc.c -+++ busybox-1.19.4-udhcp/networking/udhcp/dhcpc.c +--- a/networking/udhcp/dhcpc.c ++++ b/networking/udhcp/dhcpc.c @@ -101,6 +101,7 @@ static const uint8_t len_of_option_as_st [OPTION_IP_PAIR ] = sizeof("255.255.255.255 ") * 2, [OPTION_STATIC_ROUTES ] = sizeof("255.255.255.255/32 255.255.255.255 "), diff --git a/package/busybox/patches/611-upstream_ntpd_version_fix.patch b/package/busybox/patches/611-upstream_ntpd_version_fix.patch new file mode 100644 index 0000000000..7bcb8475d7 --- /dev/null +++ b/package/busybox/patches/611-upstream_ntpd_version_fix.patch @@ -0,0 +1,29 @@ +From b7841cf7b919b16d1bd4619154bf7cb4c22b4ccd Mon Sep 17 00:00:00 2001 +From: Paul Marks +Date: Mon, 14 Jan 2013 01:39:10 +0000 +Subject: ntpd: fix incorrect m_status field in outgoing packets. Closes 5120 + +When using busybox ntpd with an NTPv3 client and NTPv4 server (or vice +versa), the version numbers can be incorrectly ORed together, yielding +the bogus value of "NTPv7". This makes ntpd unusable with clients +such as Chrony and Windows "Internet Time". + +This patch avoids the version mangling, by copying only the Leap +Indicator bits from the server's status field. + +Signed-off-by: Paul Marks +Signed-off-by: Denys Vlasenko +--- +(limited to 'networking/ntpd.c') + +--- a/networking/ntpd.c ++++ b/networking/ntpd.c +@@ -1794,7 +1794,7 @@ recv_and_process_client_pkt(void /*int f + + /* Build a reply packet */ + memset(&msg, 0, sizeof(msg)); +- msg.m_status = G.stratum < MAXSTRAT ? G.ntp_status : LI_ALARM; ++ msg.m_status = G.stratum < MAXSTRAT ? (G.ntp_status & LI_MASK) : LI_ALARM; + msg.m_status |= (query_status & VERSION_MASK); + msg.m_status |= ((query_status & MODE_MASK) == MODE_CLIENT) ? + MODE_SERVER : MODE_SYM_PAS; diff --git a/package/busybox/patches/911-date-k-flag.patch b/package/busybox/patches/911-date-k-flag.patch index 71f2af5c9b..c55ee23369 100644 --- a/package/busybox/patches/911-date-k-flag.patch +++ b/package/busybox/patches/911-date-k-flag.patch @@ -1,6 +1,5 @@ -diff -urN busybox-1.19.4/coreutils/date.c busybox-1.19.4.new/coreutils/date.c ---- busybox-1.19.4/coreutils/date.c 2012-02-04 20:24:55.000000000 +0100 -+++ busybox-1.19.4.new/coreutils/date.c 2012-11-23 16:48:21.945200539 +0100 +--- a/coreutils/date.c ++++ b/coreutils/date.c @@ -123,6 +123,7 @@ //usage: IF_FEATURE_DATE_ISOFMT( //usage: "\n -D FMT Use FMT for -d TIME conversion" @@ -17,7 +16,7 @@ diff -urN busybox-1.19.4/coreutils/date.c busybox-1.19.4.new/coreutils/date.c #if ENABLE_FEATURE_DATE_NANO # include #endif -@@ -145,8 +147,9 @@ +@@ -145,8 +147,9 @@ enum { OPT_UTC = (1 << 2), /* u */ OPT_DATE = (1 << 3), /* d */ OPT_REFERENCE = (1 << 4), /* r */ @@ -29,7 +28,7 @@ diff -urN busybox-1.19.4/coreutils/date.c busybox-1.19.4.new/coreutils/date.c }; static void maybe_set_utc(int opt) -@@ -164,12 +167,15 @@ +@@ -164,12 +167,15 @@ static const char date_longopts[] ALIGN1 /* "universal\0" No_argument "u" */ "date\0" Required_argument "d" "reference\0" Required_argument "r" @@ -45,7 +44,7 @@ diff -urN busybox-1.19.4/coreutils/date.c busybox-1.19.4.new/coreutils/date.c struct timespec ts; struct tm tm_time; char buf_fmt_dt2str[64]; -@@ -184,7 +190,7 @@ +@@ -184,7 +190,7 @@ int date_main(int argc UNUSED_PARAM, cha opt_complementary = "d--s:s--d" IF_FEATURE_DATE_ISOFMT(":R--I:I--R"); IF_LONG_OPTS(applet_long_options = date_longopts;) @@ -54,7 +53,7 @@ diff -urN busybox-1.19.4/coreutils/date.c busybox-1.19.4.new/coreutils/date.c IF_FEATURE_DATE_ISOFMT("I::D:"), &date_str, &date_str, &filename IF_FEATURE_DATE_ISOFMT(, &isofmt_arg, &fmt_str2dt)); -@@ -241,6 +247,31 @@ +@@ -241,6 +247,31 @@ int date_main(int argc UNUSED_PARAM, cha if (*argv) bb_show_usage(); diff --git a/package/busybox/patches/998-arping_missing_includes.patch b/package/busybox/patches/998-arping_missing_includes.patch index 07c7dd4c00..a9d4a62af3 100644 --- a/package/busybox/patches/998-arping_missing_includes.patch +++ b/package/busybox/patches/998-arping_missing_includes.patch @@ -1,6 +1,5 @@ -diff -urN busybox-1.19.4/networking/arping.c busybox-1.19.4.new/networking/arping.c ---- busybox-1.19.4/networking/arping.c 2012-02-04 20:24:55.000000000 +0100 -+++ busybox-1.19.4.new/networking/arping.c 2012-11-23 17:22:13.753252564 +0100 +--- a/networking/arping.c ++++ b/networking/arping.c @@ -24,6 +24,8 @@ #include diff --git a/package/busybox/patches/999-musl-fixes.patch b/package/busybox/patches/999-musl-fixes.patch index e0bc9a87db..b528b3e81b 100644 --- a/package/busybox/patches/999-musl-fixes.patch +++ b/package/busybox/patches/999-musl-fixes.patch @@ -1,7 +1,6 @@ -diff -Naur busybox-1.19.3-old/include/platform.h busybox-1.19.3/include/platform.h ---- busybox-1.19.3-old/include/platform.h 2011-10-29 05:43:01.000000000 -0600 -+++ busybox-1.19.3/include/platform.h 2011-12-18 15:53:49.817278374 -0700 -@@ -443,6 +443,13 @@ +--- a/include/platform.h ++++ b/include/platform.h +@@ -443,6 +443,13 @@ typedef unsigned smalluint; # undef HAVE_NET_ETHERNET_H #endif -- 2.25.1