From: Miroslav Lichvar Date: Wed, 5 Nov 2008 23:48:58 +0000 (+0000) Subject: Fix errors detected by valgrind X-Git-Tag: 1.24-pre1~106 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8336f14680f59340ad1f6d01910cb9f307de9443;p=thirdparty%2Fchrony.git Fix errors detected by valgrind I tried running chronyd in valgrind and the result was that there are four places where memory is not initialized. A patch fixing the errors is in the attachment. --- diff --git a/cmdmon.c b/cmdmon.c index e88d7c36..819977c9 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 60d433c6..8dfd6cfb 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 163a2ebd..564eb3ac 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;