diff options
Diffstat (limited to 'contrib/ntp/ntpd/ntp_leapsec.c')
-rw-r--r-- | contrib/ntp/ntpd/ntp_leapsec.c | 69 |
1 files changed, 36 insertions, 33 deletions
diff --git a/contrib/ntp/ntpd/ntp_leapsec.c b/contrib/ntp/ntpd/ntp_leapsec.c index 95a06736751b..7d20873d618d 100644 --- a/contrib/ntp/ntpd/ntp_leapsec.c +++ b/contrib/ntp/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; } |