Not all architectures have a time_t defined the same way. To make
sure we get the same result, we need to cast &checkoffset to (intmax_t *)
and make sure that intmax_t is defined somehow.
To make really sure we don't pass a variable with the wrong size down
to opt_imax(), we use a temporary intmax_t.
Reviewed-by: Rich Salz <rsalz@openssl.org>
# else
# define opt_imax opt_long
# define opt_umax opt_ulong
+# define intmax_t long
+# define uintmax_t unsigned long
# endif
int app_RAND_load_file(const char *file, int dont_warn);
break;
case OPT_CHECKEND:
checkend = 1;
- if (!opt_imax(opt_arg(), &checkoffset))
- goto opthelp;
- if (checkoffset != (time_t)checkoffset) {
- BIO_printf(bio_err, "%s: checkend time out of range %s\n",
- prog, opt_arg());
- goto opthelp;
+ {
+ intmax_t temp = 0;
+ if (!opt_imax(opt_arg(), &temp))
+ goto opthelp;
+ checkoffset = (time_t)temp;
+ if ((intmax_t)checkoffset != temp) {
+ BIO_printf(bio_err, "%s: checkend time out of range %s\n",
+ prog, opt_arg());
+ goto opthelp;
+ }
}
break;
case OPT_CHECKHOST: