aboutsummaryrefslogtreecommitdiff
path: root/contrib/ntp/ntpq/ntpq-subs.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/ntp/ntpq/ntpq-subs.c')
-rw-r--r--contrib/ntp/ntpq/ntpq-subs.c41
1 files changed, 25 insertions, 16 deletions
diff --git a/contrib/ntp/ntpq/ntpq-subs.c b/contrib/ntp/ntpq/ntpq-subs.c
index 527be098b561..6aded4050c15 100644
--- a/contrib/ntp/ntpq/ntpq-subs.c
+++ b/contrib/ntp/ntpq/ntpq-subs.c
@@ -1495,7 +1495,7 @@ radiostatus(
#endif /* UNUSED */
/*
- * when - print how long its been since his last packet arrived
+ * when - return how long its been since his last packet arrived
*/
static long
when(
@@ -1691,6 +1691,7 @@ doprintpeers(
u_int32 u32;
const char *dstadr_refid = "0.0.0.0";
const char *serverlocal;
+ char *drbuf = NULL;
size_t drlen;
u_long stratum = 0;
long ppoll = 0;
@@ -1772,12 +1773,13 @@ doprintpeers(
} else if (decodenetnum(value, &refidadr)) {
if (SOCK_UNSPEC(&refidadr))
dstadr_refid = "0.0.0.0";
- else if (ISREFCLOCKADR(&refidadr))
+ else if (ISREFCLOCKADR(&refidadr)) {
dstadr_refid =
refnumtoa(&refidadr);
- else
+ } else {
dstadr_refid =
stoa(&refidadr);
+ }
} else {
have_da_rid = FALSE;
}
@@ -1796,19 +1798,25 @@ doprintpeers(
} else if (decodenetnum(value, &refidadr)) {
if (SOCK_UNSPEC(&refidadr))
dstadr_refid = "0.0.0.0";
- else if (ISREFCLOCKADR(&refidadr))
+ else if (ISREFCLOCKADR(&refidadr)) {
dstadr_refid =
- refnumtoa(&refidadr);
- else {
- char *buf = emalloc(10);
- int i = ntohl(refidadr.sa4.sin_addr.s_addr);
-
- snprintf(buf, 10,
- "%0x", i);
- dstadr_refid = buf;
- //xprintf(stderr, "apeervarlist refid: value=<%x>\n", i);
+ refnumtoa(&refidadr);
+ if (pvl == apeervarlist) {
+ /*
+ * restrict refid to
+ * 8 chars [Bug 3850]
+ */
+ dstadr_refid =
+ trunc_right(
+ dstadr_refid,
+ 8);
+ }
+ } else {
+ drbuf = emalloc(10);
+ snprintf(drbuf, 10, "%0x",
+ SRCADR(&refidadr));
+ dstadr_refid = drbuf;
}
- //xprintf(stderr, "apeervarlist refid: value=<%s>\n", value);
} else {
have_da_rid = FALSE;
}
@@ -1843,7 +1851,7 @@ doprintpeers(
if (!decodets(value, &reftime))
L_CLR(&reftime);
} else if (!strcmp("flash", name)) {
- decodeuint(value, &flash);
+ decodeuint(value, &flash);
} else {
// xprintf(stderr, "UNRECOGNIZED name=%s ", name);
}
@@ -1931,6 +1939,7 @@ doprintpeers(
drlen = strlen(dstadr_refid);
makeascii(drlen, dstadr_refid, fp);
}
+ free(drbuf);
if (pvl == apeervarlist) {
while (drlen++ < 9)
xputc(' ', fp);
@@ -2452,7 +2461,7 @@ fetch_nonce(
return FALSE;
}
- if ((size_t)rsize <= sizeof(nonce_eq) - 1 ||
+ if (rsize <= sizeof(nonce_eq) - 1 ||
strncmp(rdata, nonce_eq, sizeof(nonce_eq) - 1)) {
xprintf(stderr, "unexpected nonce response format: %.*s\n",
(int)rsize, rdata); /* cast is wobbly */