From e9f59ca61ff224908576959a2cf394b63d05c462 Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Tue, 15 Nov 2005 00:16:17 +0000 Subject: [PATCH] * Correct function prototypes that should have been using krb5_timestamp in order to prevent type conflicts if krb5_timestamp ever becomes a 64-bit value * Force the use of 32-bit time_t with Microsoft's VS 2005 compiler on 32-bit platforms * Test for inclusion of krb5.h before k5-int.h ticket: 2883 git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@17488 dc483132-0cff-0310-8789-dd5450dbe970 --- src/include/ChangeLog | 19 +++++++++++++++++++ src/include/k5-int.h | 4 ++++ src/include/krb5.hin | 12 ++++++------ src/include/win-mac.h | 35 +++++++++++++++++++++++++++++------ src/lib/krb5/os/ChangeLog | 12 ++++++++++++ src/lib/krb5/os/timeofday.c | 2 +- src/lib/krb5/os/toffset.c | 8 ++++---- src/lib/krb5/os/ustime.c | 2 +- 8 files changed, 76 insertions(+), 18 deletions(-) diff --git a/src/include/ChangeLog b/src/include/ChangeLog index 886131576..65db7475b 100644 --- a/src/include/ChangeLog +++ b/src/include/ChangeLog @@ -1,3 +1,22 @@ +2005-10-20 Jeffrey Altman + + * win-mac.h: + - Add definitions for int64_t and uint64_t + - Force the use of 32-bit time_t on 32-bit Windows + - Correct the definition of MAX_SIZE to use the value + of SIZE_MAX which is defined in limits.h + - Add check to ensure that 32-bit time_t is forced + only when k5-int.h has been loaded. + * k5-int.h: + - Add check to ensure that k5-int.h is loaded before + krb5.h + * krb5.hin: + - Modify prototypes of functions that take krb5_int32 + when they are really passing krb5_timestamp values + krb5_us_timeofday, krb5_timeofday, krb5_set_real_time, + krb5_set_debugging_time, krb5_get_time_offsets, + krb5_set_time_offsets + 2005-10-20 Jeffrey Altman * win-mac.h: Add definitions for int32_t and uint32_t diff --git a/src/include/k5-int.h b/src/include/k5-int.h index 7a3e8f9ea..3f8c60da7 100644 --- a/src/include/k5-int.h +++ b/src/include/k5-int.h @@ -77,6 +77,10 @@ #ifndef _KRB5_INT_H #define _KRB5_INT_H +#ifdef KRB5_GENERAL__ +#error krb5.h included before k5-int.h +#endif /* KRB5_GENERAL__ */ + #include "osconf.h" /* diff --git a/src/include/krb5.hin b/src/include/krb5.hin index ff1713961..eaaedec8f 100644 --- a/src/include/krb5.hin +++ b/src/include/krb5.hin @@ -1802,11 +1802,11 @@ void KRB5_CALLCONV krb5_free_cksumtypes /* From krb5/os but needed but by the outside world */ krb5_error_code KRB5_CALLCONV krb5_us_timeofday (krb5_context, - krb5_int32 *, + krb5_timestamp *, krb5_int32 * ); krb5_error_code KRB5_CALLCONV krb5_timeofday (krb5_context, - krb5_int32 * ); + krb5_timestamp * ); /* get all the addresses of this host */ krb5_error_code KRB5_CALLCONV krb5_os_localaddr (krb5_context, @@ -2275,19 +2275,19 @@ krb5_error_code krb5_make_fulladdr #endif krb5_error_code KRB5_CALLCONV krb5_set_real_time - (krb5_context, krb5_int32, krb5_int32); + (krb5_context, krb5_timestamp, krb5_int32); #if KRB5_PRIVATE krb5_error_code krb5_set_debugging_time - (krb5_context, krb5_int32, krb5_int32); + (krb5_context, krb5_timestamp, krb5_int32); krb5_error_code krb5_use_natural_time (krb5_context); #endif krb5_error_code KRB5_CALLCONV krb5_get_time_offsets - (krb5_context, krb5_int32 *, krb5_int32 *); + (krb5_context, krb5_timestamp *, krb5_int32 *); #if KRB5_PRIVATE krb5_error_code krb5_set_time_offsets - (krb5_context, krb5_int32, krb5_int32); + (krb5_context, krb5_timestamp, krb5_int32); #endif /* str_conv.c */ diff --git a/src/include/win-mac.h b/src/include/win-mac.h index 9ffb1233e..ea53cf17f 100644 --- a/src/include/win-mac.h +++ b/src/include/win-mac.h @@ -33,8 +33,27 @@ #include #ifndef SIZE_MAX /* in case Microsoft defines max size of size_t */ +#ifdef MAX_SIZE /* Microsoft defines MAX_SIZE as max size of size_t */ +#define SIZE_MAX MAX_SIZE +#else #define SIZE_MAX UINT_MAX #endif +#endif + +/* To ensure backward compatibility of the ABI use 32-bit time_t on + * 32-bit Windows. + */ +#ifdef _KRB5_INT_H +#ifdef KRB5_GENERAL__ +#error krb5.h included before k5-int.h +#endif /* KRB5_GENERAL__ */ +#if _INTEGRAL_MAX_BITS >= 64 && _MSC_VER >= 1400 && !defined(_WIN64) && !defined(_USE_32BIT_TIME_T) +#if defined(_TIME_T_DEFINED) || defined(_INC_IO) || defined(_INC_TIME) || defined(_INC_WCHAR) +#error time_t has been defined as a 64-bit integer which is incompatible with Kerberos on this platform. +#endif /* _TIME_T_DEFINED */ +#define _USE_32BIT_TIME_T +#endif +#endif #ifndef KRB5_CALLCONV # define KRB5_CALLCONV __stdcall @@ -53,12 +72,16 @@ #ifndef KRB5_SYSTYPES__ #define KRB5_SYSTYPES__ #include -typedef unsigned long u_long; /* Not part of sys/types.h on the pc */ -typedef unsigned int u_int; -typedef unsigned short u_short; -typedef unsigned char u_char; -typedef unsigned int uint32_t; -typedef int int32_t; +typedef unsigned long u_long; /* Not part of sys/types.h on the pc */ +typedef unsigned int u_int; +typedef unsigned short u_short; +typedef unsigned char u_char; +typedef unsigned int uint32_t; +typedef int int32_t; +#if _INTEGRAL_MAX_BITS >= 64 +typedef unsigned __int64 uint64_t; +typedef __int64 int64_t; +#endif #endif /* KRB5_SYSTYPES__ */ #define MAXHOSTNAMELEN 512 diff --git a/src/lib/krb5/os/ChangeLog b/src/lib/krb5/os/ChangeLog index 8a76affc7..6e35592cb 100644 --- a/src/lib/krb5/os/ChangeLog +++ b/src/lib/krb5/os/ChangeLog @@ -1,3 +1,15 @@ +2005-11-14 Jeffrey Altman + + * toffset.c: (krb5_set_real_time, krb5_set_debugging_time, + krb5_get_time_offsets, krb5_set_time_offsets) + * timeofday.c:(krb5_timeofday) + * ustime.c: (krb5_us_timeofday) + + Change type of "seconds" parameter from krb5_int32 to krb5_timestamp + This does not alter the ABI on existing platforms but will provide + consistency when we need to consider changing krb5_timestamp to a + 64-bit value. + 2005-09-16 Tom Yu * dnsglue.c (USE_RES_NINIT): Fix braino: define to 1, not empty diff --git a/src/lib/krb5/os/timeofday.c b/src/lib/krb5/os/timeofday.c index 55dfe9b78..dcc75f566 100644 --- a/src/lib/krb5/os/timeofday.c +++ b/src/lib/krb5/os/timeofday.c @@ -33,7 +33,7 @@ #include krb5_error_code KRB5_CALLCONV -krb5_timeofday(krb5_context context, register krb5_int32 *timeret) +krb5_timeofday(krb5_context context, register krb5_timestamp *timeret) { krb5_os_context os_ctx = context->os_context; time_t tval; diff --git a/src/lib/krb5/os/toffset.c b/src/lib/krb5/os/toffset.c index 4578f822a..967b9d62b 100644 --- a/src/lib/krb5/os/toffset.c +++ b/src/lib/krb5/os/toffset.c @@ -36,7 +36,7 @@ * routine */ krb5_error_code KRB5_CALLCONV -krb5_set_real_time(krb5_context context, krb5_int32 seconds, krb5_int32 microseconds) +krb5_set_real_time(krb5_context context, krb5_timestamp seconds, krb5_int32 microseconds) { krb5_os_context os_ctx = context->os_context; krb5_int32 sec, usec; @@ -58,7 +58,7 @@ krb5_set_real_time(krb5_context context, krb5_int32 seconds, krb5_int32 microsec * is useful for running the krb5 routines through test suites */ krb5_error_code -krb5_set_debugging_time(krb5_context context, krb5_int32 seconds, krb5_int32 microseconds) +krb5_set_debugging_time(krb5_context context, krb5_timestamp seconds, krb5_int32 microseconds) { krb5_os_context os_ctx = context->os_context; @@ -87,7 +87,7 @@ krb5_use_natural_time(krb5_context context) * This routine returns the current time offsets in use. */ krb5_error_code KRB5_CALLCONV -krb5_get_time_offsets(krb5_context context, krb5_int32 *seconds, krb5_int32 *microseconds) +krb5_get_time_offsets(krb5_context context, krb5_timestamp *seconds, krb5_int32 *microseconds) { krb5_os_context os_ctx = context->os_context; @@ -103,7 +103,7 @@ krb5_get_time_offsets(krb5_context context, krb5_int32 *seconds, krb5_int32 *mic * This routine sets the time offsets directly. */ krb5_error_code -krb5_set_time_offsets(krb5_context context, krb5_int32 seconds, krb5_int32 microseconds) +krb5_set_time_offsets(krb5_context context, krb5_timestamp seconds, krb5_int32 microseconds) { krb5_os_context os_ctx = context->os_context; diff --git a/src/lib/krb5/os/ustime.c b/src/lib/krb5/os/ustime.c index 65e92a043..ef923d387 100644 --- a/src/lib/krb5/os/ustime.c +++ b/src/lib/krb5/os/ustime.c @@ -34,7 +34,7 @@ #include "k5-int.h" krb5_error_code KRB5_CALLCONV -krb5_us_timeofday(krb5_context context, krb5_int32 *seconds, krb5_int32 *microseconds) +krb5_us_timeofday(krb5_context context, krb5_timestamp *seconds, krb5_int32 *microseconds) { krb5_os_context os_ctx = context->os_context; krb5_int32 sec, usec; -- 2.26.2