diff options
Diffstat (limited to 'ntpd/ntp_leapsec.c')
| -rw-r--r-- | ntpd/ntp_leapsec.c | 69 | 
1 files changed, 36 insertions, 33 deletions
| diff --git a/ntpd/ntp_leapsec.c b/ntpd/ntp_leapsec.c index 95a06736751ba..7d20873d618d4 100644 --- a/ntpd/ntp_leapsec.c +++ b/ntpd/ntp_leapsec.c @@ -422,7 +422,8 @@ int/*BOOL*/  leapsec_load_stream(  	FILE       * ifp  ,  	const char * fname, -	int/*BOOL*/  logall) +	int/*BOOL*/  logall, +	int/*BOOL*/  vhash)  {  	leap_table_t *pt;  	int           rcheck; @@ -430,36 +431,37 @@ leapsec_load_stream(  	if (NULL == fname)  		fname = "<unknown>"; -	rcheck = leapsec_validate((leapsec_reader)getc, ifp); -	if (logall) -		switch (rcheck) -		{ -		case LSVALID_GOODHASH: -			msyslog(LOG_NOTICE, "%s ('%s'): good hash signature", -				logPrefix, fname); -			break; - -		case LSVALID_NOHASH: -			msyslog(LOG_ERR, "%s ('%s'): no hash signature", -				logPrefix, fname); -			break; -		case LSVALID_BADHASH: -			msyslog(LOG_ERR, "%s ('%s'): signature mismatch", -				logPrefix, fname); -			break; -		case LSVALID_BADFORMAT: -			msyslog(LOG_ERR, "%s ('%s'): malformed hash signature", -				logPrefix, fname); -			break; -		default: -			msyslog(LOG_ERR, "%s ('%s'): unknown error code %d", -				logPrefix, fname, rcheck); -			break; -		} -	if (rcheck < 0) -		return FALSE; - -	rewind(ifp); +	if (vhash) { +		rcheck = leapsec_validate((leapsec_reader)getc, ifp); +		if (logall) +			switch (rcheck) +			{ +			case LSVALID_GOODHASH: +				msyslog(LOG_NOTICE, "%s ('%s'): good hash signature", +					logPrefix, fname); +				break; +				 +			case LSVALID_NOHASH: +				msyslog(LOG_ERR, "%s ('%s'): no hash signature", +					logPrefix, fname); +				break; +			case LSVALID_BADHASH: +				msyslog(LOG_ERR, "%s ('%s'): signature mismatch", +					logPrefix, fname); +				break; +			case LSVALID_BADFORMAT: +				msyslog(LOG_ERR, "%s ('%s'): malformed hash signature", +					logPrefix, fname); +				break; +			default: +				msyslog(LOG_ERR, "%s ('%s'): unknown error code %d", +					logPrefix, fname, rcheck); +				break; +			} +		if (rcheck < 0) +			return FALSE; +		rewind(ifp); +	}  	pt = leapsec_get_table(TRUE);  	if (!leapsec_load(pt, (leapsec_reader)getc, ifp, TRUE)) {  		switch (errno) { @@ -498,7 +500,8 @@ leapsec_load_file(  	const char  * fname,  	struct stat * sb_old,  	int/*BOOL*/   force, -	int/*BOOL*/   logall) +	int/*BOOL*/   logall, +	int/*BOOL*/   vhash)  {  	FILE       * fp;  	struct stat  sb_new; @@ -551,7 +554,7 @@ leapsec_load_file(  		return FALSE;  	} -	rc = leapsec_load_stream(fp, fname, logall); +	rc = leapsec_load_stream(fp, fname, logall, vhash);  	fclose(fp);  	return rc;  } | 
