]> git.ipfire.org Git - thirdparty/ntp.git/commitdiff
CID 971094: Clean up time of check/time of use in check_leap_file()
authorHarlan Stenn <stenn@ntp.org>
Mon, 18 Feb 2013 06:09:24 +0000 (01:09 -0500)
committerHarlan Stenn <stenn@ntp.org>
Mon, 18 Feb 2013 06:09:24 +0000 (01:09 -0500)
bk: 5121c594ZH10I5UpeNyysQ6s87ojZA

ChangeLog
ntpd/ntp_util.c

index 614bcc7305eeed8d1f58552af01d29ff748104f5..06764c1260bb787defb24c029695af655b79f973 100644 (file)
--- 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 <stenn@ntp.org>
 * CID 97194: Check return from setsockopt().
 * CID 739473,739532: Out-of-bounds access/illegal address computation.
index 5494559d68bc59b5dc745922b09811dc89b5a188..7224d43217dacc29bbe07523d83958a0b20e3ee2 100644 (file)
@@ -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;