1
0
mirror of git://git.gnupg.org/gnupg.git synced 2024-11-11 21:48:50 +01:00

Fix bug #947 (expire time overflow)

This commit is contained in:
Werner Koch 2008-08-11 08:19:48 +00:00
parent 99fb609e0a
commit 64a47d54c4
4 changed files with 34 additions and 6 deletions

View File

@ -1,3 +1,7 @@
2008-08-11 Werner Koch <wk@g10code.com>
* configure.ac: Check for size of time_t.
2008-04-01 Werner Koch <wk@g10code.com> 2008-04-01 Werner Koch <wk@g10code.com>
* configure.ac (AC_INIT): Fix quoting. * configure.ac (AC_INIT): Fix quoting.

View File

@ -949,6 +949,19 @@ AC_CHECK_SIZEOF(unsigned short)
AC_CHECK_SIZEOF(unsigned int) AC_CHECK_SIZEOF(unsigned int)
AC_CHECK_SIZEOF(unsigned long) AC_CHECK_SIZEOF(unsigned long)
AC_CHECK_SIZEOF(unsigned long long) AC_CHECK_SIZEOF(unsigned long long)
AC_CHECK_SIZEOF(time_t,,[[
#include <stdio.h>
#if TIME_WITH_SYS_TIME
# include <sys/time.h>
# include <time.h>
#else
# if HAVE_SYS_TIME_H
# include <sys/time.h>
# else
# include <time.h>
# endif
#endif
]])
# Ensure that we have UINT64_C before we bother to check for uint64_t # Ensure that we have UINT64_C before we bother to check for uint64_t
AC_CHECK_HEADERS([inttypes.h]) AC_CHECK_HEADERS([inttypes.h])

View File

@ -1,3 +1,8 @@
2008-08-11 Werner Koch <wk@g10code.com>
* keygen.c (ask_expire_interval): Check for time overflow of an
u32. Fixes bug #947. Use SIZEOF_TIME_T for the 2039--2106 check.
2008-08-01 Werner Koch <wk@g10code.com> 2008-08-01 Werner Koch <wk@g10code.com>
* tdbio.c (open_db) [!EROFS]: Move closing parens out of the * tdbio.c (open_db) [!EROFS]: Move closing parens out of the

View File

@ -1697,12 +1697,18 @@ ask_expire_interval(u32 timestamp,int object,const char *def_expire)
? _("Key expires at %s\n") ? _("Key expires at %s\n")
: _("Signature expires at %s\n"), : _("Signature expires at %s\n"),
asctimestamp((ulong)(timestamp + interval) ) ); asctimestamp((ulong)(timestamp + interval) ) );
/* FIXME: This check yields warning on alhas: Write a #if SIZEOF_TIME_T <= 4
configure check and to this check here only for 32 bit if ((time_t)((ulong)(timestamp+interval)) < 0 )
machines */ tty_printf (_("Your system can't display dates beyond 2038.\n"
if( (time_t)((ulong)(timestamp+interval)) < 0 ) "However, it will be correctly handled up to"
tty_printf(_("Your system can't display dates beyond 2038.\n" " 2106.\n"));
"However, it will be correctly handled up to 2106.\n")); else
#endif /*SIZEOF_TIME_T*/
if ( (time_t)((unsigned long)(timestamp+interval)) < timestamp )
{
tty_printf (_("invalid value\n"));
continue;
}
} }
if( cpr_enabled() || cpr_get_answer_is_yes("keygen.valid.okay", if( cpr_enabled() || cpr_get_answer_is_yes("keygen.valid.okay",