[openssh-commits] [openssh] 03/03: Add configure-time detection for SSH_TIME_T_MAX.

git+noreply at mindrot.org git+noreply at mindrot.org
Mon Jul 12 18:22:52 AEST 2021


This is an automated email from the git hooks/post-receive script.

dtucker pushed a commit to branch master
in repository openssh.

commit f5fc6a4c3404bbf65c21ca6361853b33d78aa87e
Author: Darren Tucker <dtucker at dtucker.net>
Date:   Mon Jul 12 18:00:05 2021 +1000

    Add configure-time detection for SSH_TIME_T_MAX.
    
    Should fix printing cert times exceeding INT_MAX (bz#3329) on platforms
    were time_t is a long long.  The limit used is for the signed type, so if
    some system has a 32bit unsigned time_t then the lower limit will still
    be imposed and we would need to add some way to detect this.  Anyone using
    an unsigned 64bit can let us know when it starts being a problem.
---
 configure.ac | 12 +++++++++++-
 defines.h    |  6 ++++++
 misc.c       |  2 +-
 3 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/configure.ac b/configure.ac
index 83719193..e728e323 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3664,7 +3664,7 @@ if test ! -z "$SONY" ; then
   LIBS="$LIBS -liberty";
 fi
 
-# Check for  long long datatypes
+# Check for long long datatypes
 AC_CHECK_TYPES([long long, unsigned long long, long double])
 
 # Check datatype sizes
@@ -3672,6 +3672,16 @@ AC_CHECK_SIZEOF([short int])
 AC_CHECK_SIZEOF([int])
 AC_CHECK_SIZEOF([long int])
 AC_CHECK_SIZEOF([long long int])
+AC_CHECK_SIZEOF([time_t], [], [[
+    #include <sys/types.h>
+    #ifdef HAVE_SYS_TIME_H
+    # include <sys/time.h>
+    #endif
+    #ifdef HAVE_TIME_H
+    # include <time.h>
+    #endif
+	]]
+)
 
 # Sanity check long long for some platforms (AIX)
 if test "x$ac_cv_sizeof_long_long_int" = "x4" ; then
diff --git a/defines.h b/defines.h
index d6a1d014..7fff562c 100644
--- a/defines.h
+++ b/defines.h
@@ -304,6 +304,12 @@ typedef long long intmax_t;
 typedef unsigned long long uintmax_t;
 #endif
 
+#if SIZEOF_TIME_T == SIZEOF_LONG_LONG_INT
+# define SSH_TIME_T_MAX LLONG_MAX
+#else
+# define SSH_TIME_T_MAX INT_MAX
+#endif
+
 #ifndef HAVE_U_CHAR
 typedef unsigned char u_char;
 # define HAVE_U_CHAR
diff --git a/misc.c b/misc.c
index 266e9673..adfe9033 100644
--- a/misc.c
+++ b/misc.c
@@ -2384,7 +2384,7 @@ parse_absolute_time(const char *s, uint64_t *tp)
 }
 
 /* On OpenBSD time_t is int64_t which is long long. */
-#define SSH_TIME_T_MAX LLONG_MAX
+/* #define SSH_TIME_T_MAX LLONG_MAX */
 
 void
 format_absolute_time(uint64_t t, char *buf, size_t len)

-- 
To stop receiving notification emails like this one, please contact
djm at mindrot.org.


More information about the openssh-commits mailing list