[comp.protocols.time.ntp] Bug in ntpd.c

kirk@FSW348.JPL.NASA.GOV (Kirk Reinholtz) (06/10/91)

Heres the header of the file with the problem.

static char *rcsid = "$Source: /usr/users/louie/ntp/RCS/ntpd.c,v $ $Revision: 3.4.1.9 $ $Date: 89/05/18 18:30:17 $";
#endif	lint

The error is that drift_comp has a undefined value if there is some
problem with the /etc/ntp.drift file, like for example it has nothing
in it because ntp wasn't up long enough to post anything.  The fix is
to set drift_comp to 0.0 in the "else" part of the validation check.

Heres the code I ended up with:

	if ((fp = fopen(driftcomp_file, "r")) != NULL) {
		if (fscanf(fp, "%lf", &j) == 1 && j > -1.0 && j < 1.0) {
			drift_comp = j;
		} else {
		        drift_comp = 0.0;
			fprintf(stderr,
				"init_ntp: bad drift compensation value\n");
			syslog(LOG_ERR,
			       "init_ntp: bad drift compensation value\n");
		};
		syslog(LOG_INFO,
			"Drift compensation value initialized to %f",drift_comp
		);
		fclose(fp);
	}

Enjoy!