diff --git a/cmdmon.c b/cmdmon.c index e88d7c3..819977c 100644 --- a/cmdmon.c +++ b/cmdmon.c @@ -166,7 +166,7 @@ CAM_Initialise(void) int port_number; struct sockaddr_in my_addr; unsigned long bind_address; - int on_off; + int on_off = 1; if (initialised) { CROAK("Shouldn't be initialised"); @@ -1631,11 +1631,13 @@ read_from_cmd_socket(void *anything) tx_message.reply = htons(RPY_NULL); tx_message.number = htons(1); tx_message.total = htons(1); + tx_message.pad1 = 0; tx_message.utoken = htonl(utoken); /* Set this to a default (invalid) value. This protects against the token field being set to an arbitrary value if we reject the message, e.g. due to the host failing the access check. */ tx_message.token = htonl(0xffffffffUL); + memset(&tx_message.auth, 0, sizeof(tx_message.auth)); remote_ip = ntohl(where_from.sin_addr.s_addr); remote_port = ntohs(where_from.sin_port); diff --git a/ntp_core.c b/ntp_core.c index 60d433c..8dfd6cf 100644 --- a/ntp_core.c +++ b/ntp_core.c @@ -300,6 +300,9 @@ create_instance(NTP_Remote_Address *remote_addr, NTP_Mode mode, SourceParameters result->tx_count = 0; + result->remote_orig.hi = 0; + result->remote_orig.lo = 0; + result->score = 0; if (params->online) { diff --git a/sourcestats.c b/sourcestats.c index 163a2eb..564eb3a 100644 --- a/sourcestats.c +++ b/sourcestats.c @@ -721,8 +721,12 @@ SST_PredictOffset(SST_Stats inst, struct timeval *when) if (inst->n_samples < 3) { /* We don't have any useful statistics, and presumably the poll interval is minimal. We can't do any useful prediction other - than use the latest sample */ - return inst->offsets[inst->n_samples - 1]; + than use the latest sample or zero if we don't have any samples */ + if (inst->n_samples > 0) { + return inst->offsets[inst->n_samples - 1]; + } else { + return 0.0; + } } else { UTI_DiffTimevalsToDouble(&elapsed, when, &inst->offset_time); return inst->estimated_offset + elapsed * inst->estimated_frequency;