summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Marks <paul@pmarks.net>2013-01-14 01:39:10 (GMT)
committer Denys Vlasenko <vda.linux@googlemail.com>2013-01-14 01:39:10 (GMT)
commitb7841cf7b919b16d1bd4619154bf7cb4c22b4ccd (patch)
tree117e6973c78259945ed5ea9bcd14eade951066ea
parent90801dadfa06e2277d136132f71a75569593eda4 (diff)
downloadbusybox-b7841cf7b919b16d1bd4619154bf7cb4c22b4ccd.tar.gz
busybox-b7841cf7b919b16d1bd4619154bf7cb4c22b4ccd.tar.bz2
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 <paul@pmarks.net> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--networking/ntpd.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/networking/ntpd.c b/networking/ntpd.c
index 45485c0..79b7c37 100644
--- a/networking/ntpd.c
+++ b/networking/ntpd.c
@@ -1851,7 +1851,7 @@ recv_and_process_client_pkt(void /*int fd*/)
/* 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;