[exim-cvs] More care with time types

Página Principal
Apagar esta mensagem
Responder a esta mensagem
Autor: Exim Git Commits Mailing List
Data:  
Para: exim-cvs
Assunto: [exim-cvs] More care with time types
Gitweb: http://git.exim.org/exim.git/commitdiff/19050083522f210e8bb4f1a5ba03928ed0077a49
Commit:     19050083522f210e8bb4f1a5ba03928ed0077a49
Parent:     a6d4c44ef48936ac169cd0da7ea149cbc81c9716
Author:     Jeremy Harris <jgh146exb@???>
AuthorDate: Fri Jun 6 15:58:54 2014 +0100
Committer:  Jeremy Harris <jgh146exb@???>
CommitDate: Fri Jun 6 15:58:54 2014 +0100


    More care with time types
---
 src/exim_monitor/em_globals.c   |    2 +-
 src/src/deliver.c               |   11 ++++-------
 src/src/dmarc.c                 |    2 +-
 src/src/exim_lock.c             |    6 ++++--
 src/src/globals.c               |    2 +-
 src/src/globals.h               |    2 +-
 src/src/ip.c                    |    2 +-
 src/src/smtp_in.c               |    3 ++-
 src/src/spool_in.c              |    2 +-
 src/src/spool_out.c             |    2 +-
 src/src/tod.c                   |    4 ++--
 src/src/transports/appendfile.c |    1 +
 12 files changed, 20 insertions(+), 19 deletions(-)


diff --git a/src/exim_monitor/em_globals.c b/src/exim_monitor/em_globals.c
index d5205d0..671bd7f 100644
--- a/src/exim_monitor/em_globals.c
+++ b/src/exim_monitor/em_globals.c
@@ -130,7 +130,7 @@ int     body_zerocount         = 0;


 BOOL    deliver_firsttime      = FALSE;
 BOOL    deliver_freeze         = FALSE;
-int     deliver_frozen_at      = 0;
+time_t  deliver_frozen_at      = 0;
 BOOL    deliver_manual_thaw    = FALSE;


#ifndef DISABLE_DKIM
diff --git a/src/src/deliver.c b/src/src/deliver.c
index c2f769d..32cba9a 100644
--- a/src/src/deliver.c
+++ b/src/src/deliver.c
@@ -863,16 +863,12 @@ if (log_extra_selector & LX_smtp_confirmation &&
/* Time on queue and actual time taken to deliver */

 if ((log_extra_selector & LX_queue_time) != 0)
-  {
   s = string_append(s, &size, &ptr, 2, US" QT=",
-    readconf_printtime(time(NULL) - received_time));
-  }
+    readconf_printtime( (int) ((long)time(NULL) - (long)received_time)) );


 if ((log_extra_selector & LX_deliver_time) != 0)
-  {
   s = string_append(s, &size, &ptr, 2, US" DT=",
     readconf_printtime(addr->more_errno));
-  }


 /* string_cat() always leaves room for the terminator. Release the
 store we used to build the line after writing it. */
@@ -6497,7 +6493,8 @@ if (addr_senddsn != NULL)
     DEBUG(D_deliver) debug_printf("sending error message to: %s\n", sender_address);


     /* build unique id for MIME boundary */
-    snprintf(boundaryStr, 63, "%l-eximdsn-%d", (long) time(NULL), rand());      
+    snprintf(boundaryStr, sizeof(boundaryStr)-1, TIME_T_FMT "-eximdsn-%d",
+      time(NULL), rand());
     DEBUG(D_deliver) debug_printf("DSN: MIME boundary: %s\n", boundaryStr);


     if (errors_reply_to != NULL) fprintf(f,"Reply-To: %s\n", errors_reply_to);
@@ -7172,7 +7169,7 @@ if (addr_defer == NULL)


   if ((log_extra_selector & LX_queue_time_overall) != 0)
     log_write(0, LOG_MAIN, "Completed QT=%s",
-      readconf_printtime(time(NULL) - received_time));
+      readconf_printtime( (int) ((long)time(NULL) - (long)received_time)) );
   else
     log_write(0, LOG_MAIN, "Completed");


diff --git a/src/src/dmarc.c b/src/src/dmarc.c
index ca1c29b..bc2ea4c 100644
--- a/src/src/dmarc.c
+++ b/src/src/dmarc.c
@@ -451,7 +451,7 @@ int dmarc_write_history_file()
   /* Generate the contents of the history file */
   history_buffer = string_sprintf("job %s\n", message_id);
   history_buffer = string_sprintf("%sreporter %s\n", history_buffer, primary_hostname);
-  history_buffer = string_sprintf("%sreceived %ld\n", history_buffer, time(NULL));
+  history_buffer = string_sprintf("%sreceived " TIME_T_FMT "\n", history_buffer, time(NULL));
   history_buffer = string_sprintf("%sipaddr %s\n", history_buffer, sender_host_address);
   history_buffer = string_sprintf("%sfrom %s\n", history_buffer, header_from_sender);
   history_buffer = string_sprintf("%smfrom %s\n", history_buffer,
diff --git a/src/src/exim_lock.c b/src/src/exim_lock.c
index 0d34751..37d9744 100644
--- a/src/src/exim_lock.c
+++ b/src/src/exim_lock.c
@@ -175,7 +175,7 @@ int  fd = -1;
 int  hd = -1;
 int  md = -1;
 int  yield = 0;
-int  now = time(NULL);
+time_t now = time(NULL);
 BOOL use_lockfile = FALSE;
 BOOL use_fcntl = FALSE;
 BOOL use_flock = FALSE;
@@ -300,8 +300,10 @@ if (use_lockfile)
   lockname = malloc(len + 8);
   sprintf(lockname, "%s.lock", filename);
   hitchname = malloc(len + 32 + (int)strlen(primary_hostname));
+
+  /* Presumably, this must match appendfile.c */
   sprintf(hitchname, "%s.%s.%08x.%08x", lockname, primary_hostname,
-    now, (int)getpid());
+    (unsigned int)now, (unsigned int)getpid());


   if (verbose)
     printf("exim_lock: lockname =  %s\n           hitchname = %s\n", lockname,
diff --git a/src/src/globals.c b/src/src/globals.c
index 761db61..d3f9987 100644
--- a/src/src/globals.c
+++ b/src/src/globals.c
@@ -573,7 +573,7 @@ BOOL    deliver_drop_privilege = FALSE;
 BOOL    deliver_firsttime      = FALSE;
 BOOL    deliver_force          = FALSE;
 BOOL    deliver_freeze         = FALSE;
-int     deliver_frozen_at      = 0;
+time_t  deliver_frozen_at      = 0;
 uschar *deliver_home           = NULL;
 uschar *deliver_host           = NULL;
 uschar *deliver_host_address   = NULL;
diff --git a/src/src/globals.h b/src/src/globals.h
index cf9b61e..2bedcf5 100644
--- a/src/src/globals.h
+++ b/src/src/globals.h
@@ -323,7 +323,7 @@ extern BOOL    deliver_drop_privilege; /* TRUE for unprivileged delivery */
 extern BOOL    deliver_firsttime;      /* True for first delivery attempt */
 extern BOOL    deliver_force;          /* TRUE if delivery was forced */
 extern BOOL    deliver_freeze;         /* TRUE if delivery is frozen */
-extern int     deliver_frozen_at;      /* Time of freezing */
+extern time_t  deliver_frozen_at;      /* Time of freezing */
 extern uschar *deliver_home;           /* Home directory for pipes */
 extern uschar *deliver_host;           /* (First) host for routed local deliveries */
                                        /* Remote host for filter */
diff --git a/src/src/ip.c b/src/src/ip.c
index 1d4e368..b492b9d 100644
--- a/src/src/ip.c
+++ b/src/src/ip.c
@@ -403,7 +403,7 @@ ip_recv(int sock, uschar *buffer, int buffsize, int timeout)
 {
 fd_set select_inset;
 struct timeval tv;
-int start_recv = time(NULL);
+time_t start_recv = time(NULL);
 int rc;


/* Wait until the socket is ready */
diff --git a/src/src/smtp_in.c b/src/src/smtp_in.c
index 4ea6cd4..dbaa328 100644
--- a/src/src/smtp_in.c
+++ b/src/src/smtp_in.c
@@ -1317,7 +1317,8 @@ for (i = 0; i < smtp_ch_index; i++)
if (s != NULL) s[ptr] = 0; else s = US"";
log_write(0, LOG_MAIN, "no MAIL in SMTP connection from %s D=%s%s",
host_and_ident(FALSE),
- readconf_printtime(time(NULL) - smtp_connection_start), s);
+ readconf_printtime( (int) ((long)time(NULL) - (long)smtp_connection_start)),
+ s);
}


diff --git a/src/src/spool_in.c b/src/src/spool_in.c
index 5e604fa..6dcb512 100644
--- a/src/src/spool_in.c
+++ b/src/src/spool_in.c
@@ -492,7 +492,7 @@ for (;;)
     if (Ustrncmp(p, "rozen", 5) == 0)
       {
       deliver_freeze = TRUE;
-      deliver_frozen_at = Uatoi(big_buffer + 7);
+      sscanf(big_buffer+7, TIME_T_FMT, &deliver_frozen_at);
       }
     break;


diff --git a/src/src/spool_out.c b/src/src/spool_out.c
index 01b7034..67ac8bc 100644
--- a/src/src/spool_out.c
+++ b/src/src/spool_out.c
@@ -210,7 +210,7 @@ if (authenticated_sender != NULL)
if (allow_unqualified_recipient) fprintf(f, "-allow_unqualified_recipient\n");
if (allow_unqualified_sender) fprintf(f, "-allow_unqualified_sender\n");
if (deliver_firsttime) fprintf(f, "-deliver_firsttime\n");
-if (deliver_freeze) fprintf(f, "-frozen %d\n", deliver_frozen_at);
+if (deliver_freeze) fprintf(f, "-frozen " TIME_T_FMT "\n", deliver_frozen_at);
if (dont_deliver) fprintf(f, "-N\n");
if (host_lookup_deferred) fprintf(f, "-host_lookup_deferred\n");
if (host_lookup_failed) fprintf(f, "-host_lookup_failed\n");
diff --git a/src/src/tod.c b/src/src/tod.c
index 427227c..0297e37 100644
--- a/src/src/tod.c
+++ b/src/src/tod.c
@@ -74,8 +74,8 @@ if (type == tod_log) type = log_timezone? tod_log_zone : tod_log_bare;

 else if (type == tod_epoch)
   {
-  (void) sprintf(CS timebuf, "%d", (int)now);  /* Unix epoch format */
-  return timebuf;
+  (void) sprintf(CS timebuf, TIME_T_FMT, now);  /* Unix epoch format */
+  return timebuf;    /* NB the above will be wrong if time_t is FP */
   }


else if (type == tod_zulu)
diff --git a/src/src/transports/appendfile.c b/src/src/transports/appendfile.c
index db3b5ae..f56862b 100644
--- a/src/src/transports/appendfile.c
+++ b/src/src/transports/appendfile.c
@@ -1620,6 +1620,7 @@ if (!isdirectory)

   if (ob->use_lockfile)
     {
+    /* cf. exim_lock.c */
     lockname = string_sprintf("%s.lock", filename);
     hitchname = string_sprintf( "%s.%s.%08x.%08x", lockname, primary_hostname,
       (unsigned int)(time(NULL)), (unsigned int)getpid());