From: Harlan Stenn Date: Mon, 18 Feb 2013 06:09:24 +0000 (-0500) Subject: CID 971094: Clean up time of check/time of use in check_leap_file() X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bebfce48cc052f17d2fd85603325983cbf857e19;p=thirdparty%2Fntp.git CID 971094: Clean up time of check/time of use in check_leap_file() bk: 5121c594ZH10I5UpeNyysQ6s87ojZA --- diff --git a/ChangeLog b/ChangeLog index 614bcc7305..06764c1260 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,4 @@ +* CID 971094: Clean up time of check/time of use in check_leap_file(). (4.2.7p354) 2013/02/10 Released by Harlan Stenn * CID 97194: Check return from setsockopt(). * CID 739473,739532: Out-of-bounds access/illegal address computation. diff --git a/ntpd/ntp_util.c b/ntpd/ntp_util.c index 5494559d68..7224d43217 100644 --- a/ntpd/ntp_util.c +++ b/ntpd/ntp_util.c @@ -864,34 +864,34 @@ check_leap_file( void ) { + FILE *fp; struct stat *sp1 = &leapseconds_file_sb1; struct stat *sp2 = &leapseconds_file_sb2; if (leapseconds_file) { - if (stat(leapseconds_file, &leapseconds_file_sb2)) { + if ((fp = fopen(leapseconds_file, "r")) == NULL) { + msyslog(LOG_ERR, + "check_leap_file: fopen(%s): %m", + leapseconds_file); + return; + } + if (fstat(fileno(fp), &leapseconds_file_sb2)) { msyslog(LOG_ERR, "check_leap_file: stat(%s): %m", leapseconds_file); + fclose(fp); return; } if ( (sp1->st_mtime != sp2->st_mtime) || (sp1->st_ctime != sp2->st_ctime)) { - FILE *fp; - - if ((fp = fopen(leapseconds_file, "r")) == NULL) { + leapseconds_file_sb1 = leapseconds_file_sb2; + if (leap_file(fp) < 0) { msyslog(LOG_ERR, - "check_leap_file: fopen(%s): %m", + "format error leapseconds file %s", leapseconds_file); - } else { - leapseconds_file_sb1 = leapseconds_file_sb2; - if (leap_file(fp) < 0) { - msyslog(LOG_ERR, - "format error leapseconds file %s", - leapseconds_file); - } - fclose(fp); } } + fclose(fp); } return;