summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2010-11-23 11:12:17 -0800
committerJeremy Allison <jra@samba.org>2010-11-23 21:00:14 +0100
commit5e0130c51e7b82ed82f08d5089cf7cbdbc6b3142 (patch)
treea2452784adc188bf1fae7d73134fa18ed69b3c43
parent58f6a37f645c8c025923aa38cd9445ae2e0d8d0e (diff)
downloadsamba-5e0130c51e7b82ed82f08d5089cf7cbdbc6b3142.tar.gz
samba-5e0130c51e7b82ed82f08d5089cf7cbdbc6b3142.tar.bz2
samba-5e0130c51e7b82ed82f08d5089cf7cbdbc6b3142.zip
Fix bug #7785 - atime limit.
On a 64-bit time_t system make MAX_TIME_T the max value that can be represented in a struct tm. This allows applications to set times in the future beyond the 32-bit time_t limit (2037). This is only in source3/configure.in, needs adding to the waf configure/build system (but I'll need help with that). Jeremy. Autobuild-User: Jeremy Allison <jra@samba.org> Autobuild-Date: Tue Nov 23 21:00:14 CET 2010 on sn-devel-104
-rw-r--r--source3/configure.in25
1 files changed, 25 insertions, 0 deletions
diff --git a/source3/configure.in b/source3/configure.in
index aedec9b4dd..f5a39ad79f 100644
--- a/source3/configure.in
+++ b/source3/configure.in
@@ -2219,6 +2219,31 @@ if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then
AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type])
fi
+AC_CACHE_CHECK([for TIME_T_MAX],samba_cv_TIME_T_MAX,[
+AC_TRY_RUN([#include <time.h>
+main() {
+ struct tm *tm;
+ if (sizeof(time_t) == 8) {
+ time_t max_time = 0x7fffffffffffffffll;
+ tm = gmtime(&max_time);
+ /* This should fail with 32-bit tm_year. */
+ if (tm == NULL) {
+ /* Max time_t that works with 32-bit int tm_year in struct tm. */
+ max_time = 67768036191676799ll;
+ tm = gmtime(&max_time);
+ if (tm) {
+ exit(0);
+ }
+ }
+ }
+ exit(1);
+}],
+samba_cv_TIME_T_MAX=yes,samba_cv_TIME_T_MAX=no,samba_cv_TIME_T_MAX=cross)])
+if test x"$samba_cv_TIME_T_MAX" = x"yes"; then
+ AC_DEFINE(TIME_T_MAX,67768036191676799ll,[The maximum value of the 'time_t' type])
+fi
+
+
AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
AC_TRY_RUN([#include <stdio.h>
#include <sys/stat.h>